Aller au contenu
Sécurité medium

Éphémérité & cycle de vie (SOCLE ORC)

8 min de lecture

Un runner est une machine qui exécute vos jobs CI avec vos secrets. S'il survit d'un job à l'autre, il devient un point de pivot : un job compromis y laisse une charge qui piège les suivants ou siphonne les secrets d'autres pipelines. La parade tient en un mot, l'éphémérité : un job, un runner neuf, puis destruction, sans aucun état qui persiste.

Dans le détail, un runner est provisionné à la demande puis détruit après le job, sans réutilisation ; les caches partagés sont proscrits ou cloisonnés pour qu'un build n'en contamine pas un autre ; les images privées ne fuitent pas entre projets ou tenants ; et aucun secret ne survit en mémoire d'une exécution à la suivante. Au niveau souverain, l'isolation va jusqu'à des exécuteurs jetables, sans socle mutable partagé.

Concrètement, ces exigences parent : le runner persistant transformé en point de pivot (un job compromis piège les suivants), le cache partagé utilisé comme canal de contamination entre builds, la fuite d'images privées entre projets ou tenants, et la récupération de secrets laissés en mémoire d'une exécution à l'autre.

L'enjeu

Un runner persistant accumule secrets et caches, et devient un point de pivot durable.

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

runner persistant pour charges non fiables
cache partagé entre tenants
état conservé après le job
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-ORC-EPH-1 R2 Doit

un runner exécute un seul job puis est détruit ; aucune réutilisation entre jobs.#

Réutiliser un runner d'un job à l'autre laisse au suivant les fichiers, processus et secrets du précédent : un job compromis piège alors les pipelines suivants. Un seul job par runner, puis destruction supprime ce point de pivot.

Preuve attendue
Config d'autoscaling en mode usage unique (--ephemeral / runners jetables) ; aucun runner réutilisé entre jobs.
Outillage
Harden-Runner actions-runner-controller
Correspondances & menaces parées 3 standards · 1 menace
Menaces parées

Un runner auto-hébergé non éphémère conserve un état entre jobs (fichiers, secrets, processus), permettant à un job compromis de piéger les suivants ou d'exfiltrer des données d'autres pipelines. La persistance du runner est l'angle mort CICD-SEC-7.

SOCLE-ORC-EPH-2 R1 Doit

autoscaling sur runners éphémères ; runners persistants proscrits pour les charges non fiables.#

Un runner persistant accumule accès et secrets et survit aux jobs : c'est l'angle mort de CICD-SEC-7. L'autoscaling de runners éphémères provisionne puis détruit ; les runners persistants sont proscrits pour les charges non fiables (forks, PR externes).

Preuve attendue
Inventaire des runners : tous éphémères ; aucun runner persistant rattaché à des charges non fiables.
Outillage
Harden-Runner actions-runner-controller
Correspondances & menaces parées 3 standards · 1 menace
Menaces parées

Un runner auto-hébergé non éphémère conserve un état entre jobs (fichiers, secrets, processus), permettant à un job compromis de piéger les suivants ou d'exfiltrer des données d'autres pipelines. La persistance du runner est l'angle mort CICD-SEC-7.

SOCLE-ORC-EPH-3 R1 Doit

aucun état (workspace, cache, fichiers temporaires, secrets) ne persiste après le job.#

Tout état laissé derrière (workspace, cache, fichiers temporaires, secrets) devient exploitable par le job suivant ; le cache partagé est un canal de contamination classique. L'exigence impose qu'aucun état ne survive au job : le runner repart toujours propre.

Preuve attendue
Preuve de nettoyage post-job ; inspection d'un runner après exécution sans résidu.
Outillage
Harden-Runner actions-runner-controller
Correspondances & menaces parées 3 standards · 3 menaces
Menaces parées

Un attaquant écrit dans un cache partagé du CI (dépendances, couches d'image, artefacts intermédiaires) une charge réutilisée par d'autres builds. Le cache, supposé sûr, propage la compromission entre exécutions ou projets CICD-SEC-4. Un runner auto-hébergé non éphémère conserve un état entre jobs (fichiers, secrets, processus), permettant à un job compromis de piéger les suivants ou d'exfiltrer des données d'autres pipelines. La persistance du runner est l'angle mort CICD-SEC-7. Un job compromis balaie la mémoire ou l'environnement du runner pour récolter les secrets d'autres étapes ou pipelines. Le partage de runner sans isolation expose les secrets transverses CICD-SEC-6.

SOCLE-ORC-EPH-4 R2 Devrait

environnement reconstruit depuis une image immuable à chaque provisionnement.#

Un runner qui vit longtemps dérive : binaires ajoutés, configuration modifiée, porte dérobée déposée. Le reconstruire depuis une image immuable à chaque provisionnement garantit un état connu et reproductible ; toute altération disparaît à la recréation.

Preuve attendue
Référence d'image immuable + horodatage de (re)création à chaque provisionnement.
Outillage
Harden-Runner actions-runner-controller
Correspondances & menaces parées 3 standards · 2 menaces
Menaces parées

Un attaquant écrit dans un cache partagé du CI (dépendances, couches d'image, artefacts intermédiaires) une charge réutilisée par d'autres builds. Le cache, supposé sûr, propage la compromission entre exécutions ou projets CICD-SEC-4. Un runner auto-hébergé non éphémère conserve un état entre jobs (fichiers, secrets, processus), permettant à un job compromis de piéger les suivants ou d'exfiltrer des données d'autres pipelines. La persistance du runner est l'angle mort CICD-SEC-7.

SOCLE-ORC-EPH-5 R2 Doit

pas de réutilisation du cache d'images entre projets/tenants (pull d'image forcé) ; évite la fuite d'images privées entre charges.#

Partager le cache d'images entre projets ou tenants fait fuiter des images privées et propage une couche piégée d'un build à l'autre. Le pull forcé isole chaque charge : on récupère l'image depuis sa source, sans hériter du cache d'un voisin.

Preuve attendue
Politique de pull forçant la récupération (pull_policy=always) ; pas de cache d'images partagé entre projets.
Outillage
Harden-Runner actions-runner-controller
Correspondances & menaces parées 3 standards · 1 menace
Menaces parées

Un attaquant écrit dans un cache partagé du CI (dépendances, couches d'image, artefacts intermédiaires) une charge réutilisée par d'autres builds. Le cache, supposé sûr, propage la compromission entre exécutions ou projets CICD-SEC-4.

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