La société Google a présenté le cadre SLSA (Supply-chain Levels for Software Artifacts), qui synthétise l'expérience acquise en matiÚre de protection de l'infrastructure de développement contre les attaques survenant lors de l'écriture du code, des tests, de la construction et de la distribution du produit.
Les processus de dĂ©veloppement deviennent de plus en plus complexes et dĂ©pendent d'outils tiers, crĂ©ant ainsi des conditions favorables Ă la promotion d'attaques qui ne visent pas Ă identifier et exploiter des vulnĂ©rabilitĂ©s dans le produit final, mais Ă compromettre le processus de dĂ©veloppement lui-mĂȘme (les attaques de la « chaĂźne d'approvisionnement », qui visent gĂ©nĂ©ralement Ă introduire des modifications malveillantes lors de l'Ă©criture du code, Ă remplacer les composants et les dĂ©pendances distribuĂ©s).
Le cadre prend en compte 8 types d'attaques liées aux menaces d'introduction de modifications malveillantes au stade du développement du code, de la construction, des tests et de la distribution du produit.

- A. Inclusion dans le code source de modifications contenant des portes dérobées ou des erreurs cachées entraßnant des vulnérabilités.
Exemple d'attaque : « Hypocrite Commits » â tentative de promotion de patchs vulnĂ©rables dans le noyau Linux.
Méthode de protection proposée : examen indépendant de chaque modification par deux développeurs.
- B. Compromission de la plateforme de gestion du code source.
Exemple d'attaque : introduction de commits malveillants avec une porte dérobée dans le dépÎt Git du projet PHP aprÚs une fuite de mots de passe des développeurs.
Méthode de protection proposée : renforcement de la sécurité de la plateforme de gestion du code (dans le cas de PHP, l'attaque a été réalisée via une interface HTTPS peu utilisée, permettant d'envoyer des modifications lors de l'authentification par mot de passe sans vérifier la clé SSH, alors qu'un hachage MD5 peu fiable était utilisé pour les mots de passe).
- C. Introduction de modifications lors du transfert de code au systÚme de construction ou d'intégration continue (le code construit ne correspond pas au code du dépÎt).
Exemple d'attaque : introduction d'une porte dérobée dans Webmin par des modifications apportées à l'infrastructure de construction, entraßnant l'utilisation de fichiers avec un code différent de celui des fichiers du dépÎt.
Méthode de protection proposée : vérification de l'intégrité et identification de la source du code entrant dans le systÚme de construction. le serveur.
- D. Compromission de la plateforme de construction.
Exemple d'attaque : attaque SolarWinds, au cours de laquelle, lors de la phase de construction, l'introduction d'une porte dérobée dans le produit SolarWinds Orion a été assurée.
MĂ©thode de protection proposĂ©e : mise en Ćuvre de mesures avancĂ©es pour sĂ©curiser la plateforme de construction.
- E. Propagation de code malveillant à travers des dépendances de mauvaise qualité.
Exemple d'attaque : introduction d'un backdoor dans la bibliothĂšque populaire event-stream, par l'ajout d'une dĂ©pendance inoffensive suivie de l'inclusion d'un code malveillant dans l'une des mises Ă jour de cette dĂ©pendance (la modification malveillante n'Ă©tait pas reflĂ©tĂ©e dans le dĂ©pĂŽt git, mais Ă©tait seulement prĂ©sente dans le paquet MNP prĂȘt).
Méthode de protection proposée : application récursive des exigences SLSA à toutes les dépendances (dans le cas d'event-stream, la vérification aurait révélé une construction de code ne correspondant pas au contenu du dépÎt Git principal).
- F. Chargement d'artefacts non créés dans le systÚme CI/CD.
Exemple d'attaque : ajout de code malveillant dans le script CodeCov, permettant aux attaquants d'extraire des informations stockées dans les environnements des systÚmes d'intégration continue des clients.
Méthode de protection proposée : contrÎle de la source et de l'intégrité des artefacts (dans le cas de CodeCov, il aurait été possible de constater que le script Bash Uploader fourni par le site codecov.io ne correspondait pas au code du dépÎt du projet).
- G. Compromission du dépÎt des paquets.
Exemple d'attaque : des chercheurs ont réussi à déployer des miroirs de certains dépÎts de paquets populaires dans le but de distribuer des paquets malveillants à travers eux.
Méthode de protection proposée : vérification que les artefacts distribués sont construits à partir des sources déclarées.
- H. Induction en erreur de l'utilisateur pour installer le mauvais paquet.
Exemple d'attaque : utilisation de type-squatting (NPM, RubyGems, PyPI) pour héberger dans les dépÎts des paquets ressemblant à des applications populaires (par exemple, coffe-script au lieu de coffee-script).
Pour contrer les menaces identifiĂ©es, SLSA propose un ensemble de recommandations et des outils pour automatiser la crĂ©ation de mĂ©tadonnĂ©es pour l'audit. SLSA rĂ©sume les mĂ©thodes d'attaques courantes et introduit la notion de niveaux de protection. Chaque niveau impose des exigences spĂ©cifiques Ă l'infrastructure, garantissant l'intĂ©gritĂ© des artefacts utilisĂ©s dans le dĂ©veloppement. Plus le niveau SLSA supportĂ© est Ă©levĂ©, plus les mesures de protection mises en Ćuvre sont nombreuses et meilleure est la protection de l'infrastructure contre les attaques courantes.
- SLSA 1 â exige que le processus de construction soit entiĂšrement automatisĂ© et gĂ©nĂšre des mĂ©tadonnĂ©es (« provenance ») sur la maniĂšre dont les artefacts sont rassemblĂ©s, y compris des informations sur les textes sources, les dĂ©pendances et le processus de construction (un exemple de gĂ©nĂ©rateur de mĂ©tadonnĂ©es pour l'audit a Ă©tĂ© proposĂ© pour GitHub Actions). SLSA 1 n'inclut pas d'Ă©lĂ©ments de protection contre les modifications malveillantes, mais identifie simplement le code et fournit des mĂ©tadonnĂ©es pour la gestion des vulnĂ©rabilitĂ©s et l'analyse des risques.
- SLSA 2 â Ă©largit le premier niveau en exigeant l'utilisation d'un systĂšme de gestion de version et de services de construction, gĂ©nĂ©rant des mĂ©tadonnĂ©es authentifiĂ©es. L'application de SLSA 2 permet de suivre l'origine du code et empĂȘche les modifications non autorisĂ©es, Ă condition d'utiliser des services de construction dignes de confiance.
- SLSA 3 â confirme que les textes sources et la plateforme de construction respectent les exigences des normes garantissant la possibilitĂ© d'audit du code et l'intĂ©gritĂ© des mĂ©tadonnĂ©es fournies. Il est prĂ©vu que les auditeurs puissent certifier les plateformes pour leur conformitĂ© aux exigences des normes.
- SLSA 4 â le niveau le plus Ă©levĂ©, complĂ©tant les niveaux prĂ©cĂ©dents avec les exigences suivantes :
- Examen obligatoire de toutes les modifications par deux développeurs différents.
- Tous les Ă©tapes de construction, le code et les dĂ©pendances doivent ĂȘtre entiĂšrement dĂ©clarĂ©s, toutes les dĂ©pendances doivent ĂȘtre extraites et vĂ©rifiĂ©es sĂ©parĂ©ment, et le processus de construction doit s'exĂ©cuter sans accĂšs au rĂ©seau.
- Application d'un processus de construction reproductible â la possibilitĂ© de reproduire le processus de construction par ses propres moyens et de s'assurer que le fichier exĂ©cutable est construit Ă partir des textes sources fournis.

Source : opennet.ru

