Aller au contenu
Sécurité medium

Outils détournables (Living Off the Pipeline) (SOCLE WKS)

9 min de lecture

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).

L'enjeu

Un outil de dev « par conception » exécute du code via un fichier de config, sans toucher au workflow.

Les erreurs les plus fréquentes sur ce périmètre :

scripts de cycle de vie des paquets activés
fichiers de config d'outils non épinglés
outils lancés sur du code non fiable hors bac à sable
Comment lire R1R2R3du fondamental au souverain Doitobligatoire Devraitrecommandé Chaque carte porte son énoncé, le pourquoi, la preuve attendue et ses correspondances aux standards.
Afficher
SOCLE-WKS-LOT-1 R2 Doit

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
Correspondance
Menaces parées

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.

SOCLE-WKS-LOT-2 R2 Doit

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
Correspondance
Menaces parées

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.

SOCLE-WKS-LOT-3 R2 Doit

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
Menaces parées

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.

SOCLE-WKS-LOT-4 R2 Devrait

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
Correspondance
Menaces parées

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.

SOCLE-WKS-LOT-5 R2 Devrait

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
Correspondance
Menaces parées

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.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn