La récente tentative de porte dérobée XZ Utils (CVE-2024-3094) n'est peut-être pas un incident isolé, comme en témoigne une tentative similaire de prise de contrôle crédible interceptée par la Fondation OpenJS, qui héberge des projets JavaScript utilisés par des milliards de sites web dans le monde entier. Les fondations Open Source Security (OpenSSF) et OpenJS appellent tous les mainteneurs de logiciels open source à être attentifs aux tentatives de prise de contrôle par ingénierie sociale, à reconnaître les premiers modèles de menace qui émergent et à prendre des mesures pour protéger leurs projets de logiciels open source.
Échec d'une tentative de prise de contrôle crédible
Le Cross Project Council de la Fondation OpenJS a reçu une série suspecte de courriels contenant des messages similaires, portant des noms différents et se recoupant avec des courriels associés à GitHub. Ces courriels imploraient OpenJS de prendre des mesures pour mettre à jour l'un de ses projets JavaScript populaires afin de "remédier à toute vulnérabilité critique", sans toutefois donner de précisions. Le ou les auteurs des courriels souhaitaient qu'OpenJS les désigne comme nouveaux responsables du projet, bien qu'ils n'aient été que très peu impliqués auparavant. Cette approche ressemble fortement à la manière dont "Jia Tan" s'est positionné dans la porte dérobée XZ/liblzma.
Aucune de ces personnes n'a reçu d'accès privilégié au projet hébergé par OpenJS. Le projet a mis en place des politiques de sécurité, y compris celles définies par le groupe de travail sur la sécurité de la Fondation.
L'équipe d'OpenJS a également identifié un schéma suspect similaire dans deux autres projets JavaScript populaires qui ne sont pas hébergés par sa Fondation, et a immédiatement signalé les problèmes de sécurité potentiels aux responsables respectifs d'OpenJS, ainsi qu'à l'Agence de sécurité des infrastructures et de la cybersécurité (CISA) au sein du ministère de la sécurité intérieure des États-Unis (DHS).
Les projets open source accueillent toujours les contributions de n'importe qui, n'importe où, mais accorder à quelqu'un un accès administratif au code source en tant que responsable nécessite un niveau plus élevé de confiance méritée, et ce n'est pas donné comme une "solution rapide" à n'importe quel problème.
En collaboration avec la Fondation Linux, OpenSSF souhaite sensibiliser tous les mainteneurs de logiciels open source à cette menace permanente et offrir des conseils pratiques et des ressources provenant de la communauté d'experts en sécurité et en logiciels open source.
Modèles suspects dans les prises de contrôle par ingénierie sociale
- Poursuite amicale mais agressive et persistante d'un responsable ou de son entité hébergée (fondation ou entreprise) par des membres relativement inconnus de la communauté.
- Demande d'élévation au statut de mainteneur par des personnes nouvelles ou inconnues.
- Approbation par d'autres membres inconnus de la communauté qui peuvent également utiliser de fausses identités, également connues sous le nom de "sock puppets" (marionnettes).
- Les PR contenant des blobs comme artefacts. Par exemple, la porte dérobée XZ était un fichier astucieusement conçu dans le cadre de la suite de tests qui n'était pas lisible par l'homme, par opposition au code source.
- Code source intentionnellement obscurci ou difficile à comprendre.
- Des problèmes de sécurité qui s'aggravent progressivement. Par exemple, le problème XZ a commencé par un remplacement relativement inoffensif de safe_fprintf() par fprintf() pour voir qui le remarquerait.
- Les écarts par rapport aux pratiques habituelles de compilation, de construction et de déploiement des projets, qui pourraient permettre l'insertion de charges utiles malveillantes externes dans des blobs, des zips ou d'autres artefacts binaires.
- Un faux sentiment d'urgence, en particulier si l'urgence implicite oblige un responsable à réduire la rigueur d'une revue ou à contourner un contrôle.
OpenSSF ajoute :
Ces attaques d'ingénierie sociale exploitent le sens du devoir des mainteneurs vis-à-vis de leur projet et de leur communauté afin de les manipuler. Soyez attentif à ce que les interactions vous font ressentir. Les interactions qui suscitent le doute, le sentiment de ne pas être à la hauteur, de ne pas en faire assez pour le projet, etc. peuvent faire partie d'une attaque d'ingénierie sociale.
Les attaques d'ingénierie sociale telles que celles dont nous avons été témoins avec XZ/liblzma ont été évitées avec succès par la communauté OpenJS. Il est difficile de détecter ces types d'attaques ou de s'en protéger par programmation, car elles reposent sur une violation de la confiance par le biais de l'ingénierie sociale. À court terme, le partage clair et transparent d'activités suspectes aidera les autres communautés à rester vigilantes. S'assurer que nos mainteneurs sont bien soutenus est le principal moyen de dissuasion dont nous disposons contre ces attaques d'ingénierie sociale.
Les attaques d'ingénierie sociale telles que celles dont nous avons été témoins avec XZ/liblzma ont été évitées avec succès par la communauté OpenJS. Il est difficile de détecter ces types d'attaques ou de s'en protéger par programmation, car elles reposent sur une violation de la confiance par le biais de l'ingénierie sociale. À court terme, le partage clair et transparent d'activités suspectes aidera les autres communautés à rester vigilantes. S'assurer que nos mainteneurs sont bien soutenus est le principal moyen de dissuasion dont nous disposons contre ces attaques d'ingénierie sociale.
Mesures pour sécuriser votre projet open source
Outre ces recommandations, il existe un certain nombre de bonnes pratiques en matière de sécurité qui peuvent améliorer les propriétés de sécurité des projets open source. Bien que ces recommandations ne permettent pas de contrecarrer une attaque persistante d'ingénierie sociale, elles peuvent contribuer à améliorer le niveau de sécurité global de votre projet.
- Envisagez de suivre les meilleures pratiques de sécurité standard de l'industrie, telles que les guides OpenSSF.
- Utilisez une authentification forte.
- Activez l'authentification à deux facteurs (2FA) ou l'authentification multifactorielle (MFA).
- Utilisez un gestionnaire de mots de passe sécurisé.
- Conservez vos codes de récupération dans un endroit sûr, de préférence hors ligne.
- Ne pas réutiliser les identifiants/mots de passe dans différents services.
- Disposer d'une politique de sécurité comprenant un processus de "divulgation coordonnée" pour les rapports.
- Utilisez les meilleures pratiques pour fusionner le nouveau code.
- Activez les protections de branches et les validations signées.
- Si possible, demander à un second développeur de procéder à une révision du code avant de le fusionner, même si le PR provient d'un mainteneur.
- Appliquer les exigences de lisibilité pour s'assurer que les nouveaux PR ne sont pas obscurcis et que l'utilisation de binaires opaques est minimisée.
- Limitez les droits de publication de npm.
- Connaissez vos committers et mainteneurs, et faites un examen périodique. Les avez-vous vus lors des réunions de votre groupe de travail ou les avez-vous rencontrés lors d'événements, par exemple ?
- Si vous gérez un dépôt de paquets open source, envisagez d'adopter les Principes de sécurité des dépôts de paquets.
- Consultez le document "Avoiding social engineering and phishing attacks" de la CISA et/ou le document "What is 'Social Engineering'" de l'ENISA.
Mesures à prendre par l'industrie et les pouvoirs publics pour sécuriser les infrastructures critiques open source
La pression exercée pour assurer la stabilité et la sécurité d'un projet open source crée une pression sur les mainteneurs. Par exemple, de nombreux projets de l'écosystème JavaScript sont maintenus par de petites équipes ou des développeurs uniques qui sont débordés par les entreprises commerciales qui dépendent de ces projets menés par la communauté mais qui ne contribuent que très peu en retour.
Pour résoudre un problème de cette ampleur, on a besoin de vastes ressources et d'une coordination internationale publique/privée. Les organisations suivantes ont déjà accompli un travail considérable :
Les fondations open source
La famille des fondations de la Fondation Linux et d'autres organisations similaires comme OpenSSF peuvent contribuer à fournir un filet de sécurité pour les projets open source. Les responsables de la maintenance manquent souvent de temps, de personnel et d'expertise dans des domaines tels que la sécurité. Les fondations neutres aident à soutenir les activités commerciales, marketing, juridiques et opérationnelles de centaines de projets open source dont tant de gens dépendent.
OpenSFF déclare :
Notre objectif est d'éliminer toute friction en dehors du codage afin de soutenir nos mainteneurs et d'aider leurs projets à se développer. En tant qu'organisations à but non lucratif neutres vis-à-vis des fournisseurs, nous sommes particulièrement bien placés pour offrir l'expertise des multiples parties prenantes représentées dans nos organisations.
En matière de sécurité, nos fondations open source ont constaté qu'une meilleure approche efficace consiste à fournir une assistance technique et un soutien direct aux projets open source.
En matière de sécurité, nos fondations open source ont constaté qu'une meilleure approche efficace consiste à fournir une assistance technique et un soutien direct aux projets open source.
Alpha-Omega est un projet associé à l'OpenSSF, financé par Microsoft, Google et Amazon, qui finance des projets et des écosystèmes essentiels. Le projet vise à construire un monde où les projets open source critiques sont sécurisés et où les vulnérabilités de sécurité sont trouvées et corrigées rapidement. L'OpenJS Foundation a pu constater que le financement des développeurs pour la sécurité a eu un impact avéré grâce aux investissements Alpha-Omega dans Node.js et jQuery.
Fonds technologique souverain
Le Fonds technologique souverain (Sovereign Tech Fund), financé par le ministère fédéral allemand de l'économie et de l'action climatique, fournit à la fondation OpenJS et à d'autres organisations open source un financement important pour renforcer l'infrastructure et la sécurité.
Ils ont construit un modèle avec des rapports détaillés et la responsabilité des ressources, tout en disposant d'une expertise technique pour personnaliser les propositions de sécurité pour la variété des projets open source qu'ils financent.
Il est encourageant de voir le gouvernement allemand prendre cette initiative pour améliorer la vie des citoyens en investissant dans des infrastructures open source critiques par l'intermédiaire du Fonds technologique souverain.
OpenSSF commente :
Nous plaidons en faveur d'un accroissement de l'investissement public mondial dans des initiatives telles que le Fonds technologique souverain, afin d'investir dans des projets open source mondiaux dont la société dépend, en complément des financements privés. Nous recommandons aux institutions publiques de s'inspirer du Fonds technologique souverain allemand, de l'adapter et de le coordonner afin de soutenir nos projets open source interconnectés et nos économies numériques partagées.
La Fondation OpenJS s'engage à soutenir la croissance saine de l'écosystème JavaScript et des technologies web en fournissant une organisation neutre pour héberger et soutenir les projets, ainsi que pour financer de manière collaborative des activités au profit de la communauté dans son ensemble. La fondation OpenJS est composée de 35 projets JavaScript open source, dont Appium, Electron, Jest, jQuery, Node.js et webpack, et est soutenue par des entreprises et des utilisateurs finaux membres, dont GoDaddy, Google, HeroDevs, IBM, Joyent, Microsoft et le Sovereign Tech Fund. Ces membres reconnaissent la nature interconnectée de l'écosystème JavaScript et l'importance de fournir un foyer central pour les projets qui représentent une valeur partagée significative.
À propos de l'OpenSSF
L'Open Source Security Foundation (OpenSSF) est une initiative interprofessionnelle de la Fondation Linux qui rassemble les initiatives de sécurité open source les plus importantes de l'industrie, ainsi que les individus et les entreprises qui les soutiennent. L'OpenSSF s'engage à collaborer et à travailler en amont et avec les communautés existantes pour faire progresser la sécurité open source pour tous.
À propos des auteurs des recommandations :
Robin Bender Ginn est directrice exécutive de la Fondation OpenJS, le foyer neutre chargé de promouvoir l'adoption à grande échelle et le développement continu de JavaScript et de technologies web essentielles. Elle fait également partie de l'équipe dirigeante de la Fondation Linux. Robin a dirigé des initiatives majeures visant à faire progresser les technologies open source, le développement de la communauté et les normes ouvertes. Auparavant, Robin a passé plus de 10 ans chez Microsoft, où elle a été à l'avant-garde de la transition de l'entreprise vers l'ouverture.
Omkhar Arasaratnam est le directeur général de l'Open Source Security Foundation (OpenSSF). Il est un vétéran de la cybersécurité et de la gestion des risques techniques, avec plus de 25 ans d'expérience à la tête d'organisations mondiales. Omkhar a commencé sa carrière en tant que fervent défenseur des logiciels libres, en tant que mainteneur PPC64 pour Gentoo et contributeur au noyau Linux, et cet enthousiasme pour les logiciels libres perdure aujourd'hui. Avant de rejoindre l'OpenSSF, il a dirigé des organisations de sécurité et d'ingénierie dans des institutions financières et technologiques telles que Google, JPMorgan Chase, Credit Suisse, Deutsche Bank, TD Bank Group et IBM. En tant que leader technologique chevronné, il a révolutionné l'efficacité de l'ingénierie logicielle sécurisée, de la conformité et des contrôles de cybersécurité. Il est également un auteur accompli et a contribué à l'élaboration de nombreuses normes internationales. Omkhar est également membre du conseil consultatif du NYU Cyber Fellow et Senior Fellow du NYU Center for Cybersecurity, où il est invité à donner des cours sur la cryptographie appliquée.
Source : OpenSSF
Et vous ?
Quel est votre avis sur le sujet ?
Pensez-vous que ces recommandations sont crédibles ou pertinentes ?
Voir aussi :
La Linux Foundation lance l'Open Source Security Foundation (OpenSSF) pour améliorer la sécurité des logiciels open source, grâce à une communauté plus large et des initiatives ciblées
La Maison Blanche, la Fondation Linux, OpenSSF et 37 entreprises technologiques ont annoncé un plan de sécurité des logiciels Open Source en 10 points et un financement de 150 millions de dollars
Les nouvelles attaques d'ingénierie sociale augmentent de 135 % grâce à l'IA générative, d'après une nouvelle étude de la société de cybersécurité Darktrace