L'étape Source & SCM de la chaîne logicielle regroupe 10 vecteurs d'attaque, ancrés dans SLSA (B)(C) · CNCF Source Code. Chaque vecteur décrit ce que vise l'attaquant et renvoie aux exigences SOCLE qui le neutralisent.
Soumission sans revue
Self-approval multi-comptes
Abus de compte robot / bot
Techniques principales observées à cette étape : ce sont des approches alternatives, pas une séquence.
Vecteurs d'attaque
Les pastilles renvoient aux exigences SOCLE qui neutralisent chaque vecteur.
V-SRC-1Soumission sans revue
Du code malveillant est poussé directement sur une branche protégée sans revue obligatoire (push direct, protection absente). Sans contrôle à quatre yeux, une modification hostile entre dans la base de code de référence.
V-SRC-2Self-approval multi-comptes
Un attaquant contrôlant plusieurs comptes (ou un compte et un bot) approuve sa propre contribution, contournant l'exigence de revue par un tiers indépendant. La règle de revue existe mais est neutralisée par collusion d'identités.
V-SRC-3Abus de compte robot / bot
Un compte de service ou bot autorisé à fusionner sans revue à deux est détourné pour introduire du code, court-circuitant le contrôle humain. Les automatismes sur-privilégiés deviennent un chemin d'injection.
V-SRC-4Abus d'exceptions de règles
Une exception aux règles de protection (ex. fichiers de documentation exemptés de revue) est exploitée via un fichier déguisé pour faire passer du code non revu. Les angles morts de la politique deviennent une porte d'entrée.
V-SRC-5Admin qui contourne / désactive les contrôles
Un administrateur retire temporairement la protection de branche, pousse une modification, puis rétablit la protection, effaçant la trace du contournement. Le pouvoir d'administration sur les contrôles annule les contrôles eux-mêmes.
V-SRC-6Réécriture d'historique
Un force-push réécrit l'historique de la branche pour dissimuler ou injecter des commits (suppression d'un commit malveillant, antidatage). Sans interdiction du force-push ni vérification d'intégrité, l'historique n'est plus une preuve fiable.
V-SRC-7Compromission du SCM
Le système de gestion de source lui-même (forge self-hosted, serveur Git) est compromis, donnant à l'attaquant le contrôle du code, des droits et des workflows. La racine de confiance du code tombe : tout en aval devient suspect.
V-SRC-8Pwn request (`pull_request_target`)
Un workflow déclenché sur pull_request_target (ou équivalent) exécute le code d'un fork non fiable avec le contexte et les secrets du dépôt cible. Une simple pull request d'un inconnu obtient l'exécution privilégiée et les jetons du projet.
V-SRC-9Injection de script
Une donnée contrôlée par l'attaquant (titre de PR, nom de branche, message de commit) est interpolée sans échappement dans un script de workflow, provoquant une exécution de commande dans le pipeline. C'est l'injection classique portée au CI.
V-SRC-10Commit / tag non signé
L'absence de signature vérifiée des commits et tags permet d'usurper l'auteur ou d'introduire des objets non authentifiés dans l'historique. Sans signature imposée, l'identité du contributeur n'est pas prouvable.