De nombreux outils de dev (linters, formateurs, gestionnaires de paquets,
runners de test) exécutent du code par conception, via un fichier de
configuration, un plugin ou une variable d'environnement : c'est le Living Off
the Pipeline (LOTP). Cette famille (W4)
les inventorie (croisé au catalogue LOTP), désactive l'exécution
arbitraire (--ignore-scripts, auto-chargement de plugins, eval), épingle
les fichiers de configuration, confine ces outils en bac à sable sur du code
non fiable, et scanne les dépôts à la recherche de schémas détournables.
On ne confine pas ce qu'on ne connaît pas, d'où l'inventaire croisé au
catalogue LOTP. Un paquet installé déclenche ses scripts de cycle de vie
(postinstall) avec vos droits : les désactiver coupe le mécanisme favori des
paquets npm malveillants. Un fichier de configuration tiré d'une PR de fork
peut détourner l'outil vers du code arbitraire : on les épingle et on les
revoit. Et lancer un linter sur du code non fiable se fait en bac à sable,
variables d'environnement maîtrisées, pendant qu'un scanner CI/CD (type
poutine) traque systématiquement les schémas détournables.
Concrètement, ces exigences parent : les scripts d'installation détournés, l'outil légitime retourné par un attaquant, la configuration de linter piégée tirée d'un fork, et l'exfiltration de secrets en traitant du code non fiable. Cinq exigences de niveau renforcé (R2).
Un outil de dev « par conception » exécute du code via un fichier de config, sans toucher au workflow.
Les pièges à éviter
Section intitulée « Les pièges à éviter »Les erreurs les plus fréquentes sur ce périmètre :
Exigences
Section intitulée « Exigences »inventaire des outils détournables présents en CI et sur les postes, croisé avec le catalogue LOTP.#
On ne confine pas ce qu'on ne connaît pas : les outils légitimes détournables (« living off the pipeline ») sont des binaires de confiance qu'un attaquant retourne. Inventorier ces outils en CI et sur les postes, croisés avec le catalogue LOTP, est le préalable pour décider lesquels restreindre.
- Preuve attendue
- Inventaire des outils détournables (croisé LOTP) en CI et sur les postes.
- Outillage
- poutine
Correspondances & menaces parées 2 standards · 1 menace
Un linter, formateur, framework de test ou outil de build exécute du code arbitraire par conception, via un fichier de configuration, un plugin ou une variable d'environnement contrôlés par l'attaquant (Living Off the Pipeline). Aucune faille n'est nécessaire : la fonctionnalité légitime sert d'exécution LOTP CICD-SEC-4.
désactiver ou confiner les fonctionnalités d'exécution arbitraire : scripts de cycle de vie des paquets (`--ignore-scripts`), auto-chargement de plugins/config, `eval` dans les configurations.#
Un paquet installé déclenche ses scripts de cycle de vie (postinstall) avec vos droits : c'est le vecteur favori des paquets npm malveillants. Désactiver ou confiner cette exécution arbitraire (--ignore-scripts, pas d'eval ni d'auto-chargement de config) coupe le mécanisme par lequel une simple installation devient une exécution de code.
- Preuve attendue
- Preuve de désactivation/confinement de l'exécution arbitraire (scripts de paquets, plugins, eval).
- Outillage
- poutine
Correspondances & menaces parées 2 standards · 2 menaces
Un linter, formateur, framework de test ou outil de build exécute du code arbitraire par conception, via un fichier de configuration, un plugin ou une variable d'environnement contrôlés par l'attaquant (Living Off the Pipeline). Aucune faille n'est nécessaire : la fonctionnalité légitime sert d'exécution LOTP CICD-SEC-4. Un paquet exécute du code arbitraire via ses scripts de cycle de vie (postinstall, preinstall) dès l'installation, avant tout usage. L'ajout d'une dépendance suffit à déclencher la charge SoK LOTP.
fichiers de configuration des outils (linters, formateurs, build) épinglés et revus ; pas de configuration tirée d'une source non fiable (PR de fork).#
Un fichier de configuration de linter ou de build peut détourner l'outil vers du code arbitraire ; tiré d'une PR de fork non fiable, il s'exécute dans votre pipeline. Épingler et revoir ces configurations, refuser celles d'une source non maîtrisée, empêche qu'un attaquant pilote vos outils via un fichier d'apparence anodine.
- Preuve attendue
- Fichiers de configuration des outils épinglés et revus ; pas de config de source non fiable.
- Outillage
- poutine
Correspondances & menaces parées 2 standards · 4 menaces
Un linter, formateur, framework de test ou outil de build exécute du code arbitraire par conception, via un fichier de configuration, un plugin ou une variable d'environnement contrôlés par l'attaquant (Living Off the Pipeline). Aucune faille n'est nécessaire : la fonctionnalité légitime sert d'exécution LOTP CICD-SEC-4. 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 CICD-SEC-4. Un plugin ou une extension de l'outil de build (Gradle, Maven, bundler) exécute du code au moment de la construction, hors de toute revue du code applicatif. Le build devient un vecteur d'exécution tierce SoK LOTP. Poisoned Pipeline Execution indirecte : l'injection passe par un fichier consommé par le pipeline (Makefile, script, configuration d'outil) plutôt que par le fichier de CI. Le résultat est identique : exécution de code attaquant dans le pipeline CICD-SEC-4 LOTP.
exécution de ces outils sur du code non fiable confinée en bac à sable ; variables d'environnement maîtrisées.#
Lancer un linter ou un formateur sur le code d'une PR externe exécute potentiellement la logique de l'attaquant avec vos variables d'environnement, secrets compris. Confiner cette exécution en bac à sable, avec un environnement maîtrisé, empêche qu'un outil détourné exfiltre des secrets en traitant du code non fiable.
- Preuve attendue
- Confinement en bac à sable de l'exécution des outils sur du code non fiable.
- Outillage
- poutine
Correspondances & menaces parées 2 standards · 1 menace
Un linter, formateur, framework de test ou outil de build exécute du code arbitraire par conception, via un fichier de configuration, un plugin ou une variable d'environnement contrôlés par l'attaquant (Living Off the Pipeline). Aucune faille n'est nécessaire : la fonctionnalité légitime sert d'exécution LOTP CICD-SEC-4.
scan des dépôts/pipelines à la recherche de schémas détournables (ex. scanner CI/CD type poutine).#
Les motifs détournables (scripts cachés, configurations dangereuses) se repèrent mal à l'œil. Un scanner CI/CD dédié (type poutine) balaie dépôts et pipelines pour détecter ces schémas systématiquement, transformant une revue manuelle faillible en contrôle reproductible, industrialisable à l'échelle de tous les projets.
- Preuve attendue
- Résultat de scan des dépôts/pipelines pour schémas détournables (ex. poutine).
- Outillage
- poutine
Correspondances & menaces parées 2 standards · 2 menaces
Un linter, formateur, framework de test ou outil de build exécute du code arbitraire par conception, via un fichier de configuration, un plugin ou une variable d'environnement contrôlés par l'attaquant (Living Off the Pipeline). Aucune faille n'est nécessaire : la fonctionnalité légitime sert d'exécution LOTP CICD-SEC-4. Un paquet exécute du code arbitraire via ses scripts de cycle de vie (postinstall, preinstall) dès l'installation, avant tout usage. L'ajout d'une dépendance suffit à déclencher la charge SoK LOTP.