Aller au contenu
Sécurité medium

Isolation d'exécution & moindre privilège (SOCLE ORC)

11 min de lecture

Un runner exécute du code non fiable : dépendances tierces, PR externes, scripts de build. S'il tourne en root, avec le socket Docker monté ou sans bac à sable, une seule charge hostile s'échappe vers l'hôte et atteint les jobs voisins et leurs secrets. Cette famille confine chaque job : utilisateur non privilégié, pas d'accès à l'hôte, isolation forte job par job.

Dans le détail, chaque job tourne sous utilisateur non privilégié, sans socket Docker monté ni mode privileged qui donneraient un accès root à l'hôte, dans un bac à sable (microVM, gVisor, seccomp) qui contient une évasion. Les ressources sont plafonnées pour couper le minage et le déni de service, et seules des images et services validés s'exécutent. L'isolation reste forte entre jobs, pour qu'une charge hostile n'atteigne ni l'hôte ni les secrets des voisins.

Concrètement, ces exigences parent : l'évasion de conteneur vers l'hôte du runner et les jobs voisins, le socket Docker ou le mode privilégié donnant un accès root à l'hôte, l'abus de ressources (minage, déni de service), et l'exécution d'images ou services arbitraires non validés.

L'enjeu

Sans isolation forte, une évasion de conteneur compromet l'hôte et les jobs voisins.

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

socket Docker monté / mode privilégié
exécution en root
images/services non en allowlist
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-EXE-1 R1 Doit

processus runner sous utilisateur dédié non privilégié, jamais root.#

Un processus runner en root transforme la moindre faille d'un job en compromission de l'hôte et de ses voisins. L'exécuter sous un utilisateur dédié non privilégié limite ce qu'un job échappé peut atteindre : le moindre privilège au niveau système.

Preuve attendue
uid d'exécution du runner (non-root) ; absence d'exécution root.
Outillage
Kyverno Conftest
Correspondances & menaces parées 3 standards · 2 menaces
Menaces parées

Un job exploite une mauvaise configuration ou une faille du runtime de conteneurs pour s'échapper vers l'hôte du runner et atteindre d'autres charges. Le cloisonnement supposé entre jobs est rompu CICD-SEC-7 CIS Benchmarks. Un conteneur de build accède aux périphériques ou capacités de l'hôte (montages, capabilities, hostPath) pour lire ou altérer des ressources hors de son périmètre. Les privilèges excessifs du conteneur ouvrent l'hôte CIS K8s.

SOCLE-ORC-EXE-2 R1 Doit

pas de montage du socket Docker ni de mode privilégié ; pas de Docker-in-Docker pour les charges non fiables.#

Monter le socket Docker dans un job lui donne un contrôle équivalent à root sur l'hôte : conteneurs privilégiés, accès au disque, évasion immédiate. L'exigence interdit socket Docker, mode privilégié et Docker-in-Docker pour les charges non fiables.

Preuve attendue
Vérification : pas de socket Docker monté, pas de mode privilégié, pas de DinD pour charges non fiables.
Outillage
Kyverno Conftest
Correspondances & menaces parées 3 standards · 4 menaces
Menaces parées

Le socket Docker monté dans un job donne un contrôle équivalent à root sur l'hôte : conteneurs privilégiés, accès au système de fichiers hôte. Une fonctionnalité de commodité devient une évasion CICD-SEC-7 LOTP. Un job exploite une mauvaise configuration ou une faille du runtime de conteneurs pour s'échapper vers l'hôte du runner et atteindre d'autres charges. Le cloisonnement supposé entre jobs est rompu CICD-SEC-7 CIS Benchmarks. Un conteneur de build accède aux périphériques ou capacités de l'hôte (montages, capabilities, hostPath) pour lire ou altérer des ressources hors de son périmètre. Les privilèges excessifs du conteneur ouvrent l'hôte CIS K8s. Un conteneur exploite une mauvaise configuration ou une faille pour s'échapper vers le nœud hôte du cluster et atteindre d'autres charges. Le cloisonnement du cluster est rompu (ATT&CK T1611) ATT&CK T1611.

SOCLE-ORC-EXE-3 R2 Doit

chaque job dans un bac à sable (conteneur durci, microVM Firecracker/Kata, ou gVisor).#

Le cloisonnement entre jobs est souvent supposé, pas garanti : une évasion de conteneur atteint l'hôte et les jobs voisins. Chaque job doit tourner dans un bac à sable (conteneur durci, microVM Firecracker/Kata, ou gVisor) pour rester enfermé.

Preuve attendue
Configuration de sandbox par job (conteneur durci / microVM / gVisor).
Outillage
Kyverno Conftest
Correspondances & menaces parées 3 standards · 2 menaces
Menaces parées

Un job exploite une mauvaise configuration ou une faille du runtime de conteneurs pour s'échapper vers l'hôte du runner et atteindre d'autres charges. Le cloisonnement supposé entre jobs est rompu CICD-SEC-7 CIS Benchmarks. Un conteneur exploite une mauvaise configuration ou une faille pour s'échapper vers le nœud hôte du cluster et atteindre d'autres charges. Le cloisonnement du cluster est rompu (ATT&CK T1611) ATT&CK T1611.

SOCLE-ORC-EXE-4 R2 Devrait

système de fichiers en lecture seule hors workspace pour les jobs.#

Un job qui peut écrire partout sur le runner peut y déposer une charge persistante ou altérer les étapes suivantes. Un système de fichiers en lecture seule hors workspace réduit cette surface : le job travaille dans son espace, sans toucher au reste.

Preuve attendue
Profils seccomp/AppArmor appliqués ; FS read-only hors workspace ; limites de ressources.
Outillage
Kyverno Conftest
Correspondances & menaces parées 3 standards · 2 menaces
Menaces parées

Un job exploite une mauvaise configuration ou une faille du runtime de conteneurs pour s'échapper vers l'hôte du runner et atteindre d'autres charges. Le cloisonnement supposé entre jobs est rompu CICD-SEC-7 CIS Benchmarks. Un conteneur de build accède aux périphériques ou capacités de l'hôte (montages, capabilities, hostPath) pour lire ou altérer des ressources hors de son périmètre. Les privilèges excessifs du conteneur ouvrent l'hôte CIS K8s.

SOCLE-ORC-EXE-5 R3 Doit Souverain

isolation microVM/hyperviseur entre jobs pour toute charge non fiable ou multi-tenant.#

Pour les charges non fiables ou multi-tenant, le namespace Linux se contourne. Une isolation microVM/hyperviseur entre jobs pose une vraie barrière de virtualisation, bien plus difficile à franchir : le niveau visé par SLSA Build L3.

Preuve attendue
Preuve d'isolation de niveau microVM/hyperviseur entre jobs.
Outillage
Kata Containers gVisor
Correspondances & menaces parées 3 standards · 2 menaces
Menaces parées

Un job exploite une mauvaise configuration ou une faille du runtime de conteneurs pour s'échapper vers l'hôte du runner et atteindre d'autres charges. Le cloisonnement supposé entre jobs est rompu CICD-SEC-7 CIS Benchmarks. Un attaquant ayant obtenu l'exécution sur un hôte implante une persistance furtive au niveau du noyau ou du système : programme eBPF malveillant, extension système (systemd-sysext), module noyau ou hook de chargement. Le code survit aux redéploiements applicatifs, masque ses processus et connexions, et intercepte secrets et trafic. Les contrôles applicatifs et l'analyse d'image ne le voient pas : il vit sous la charge de travail, dans le plan hôte MITRE ATT&CK T1014 MITRE ATT&CK T1547.006 CNCF Runtime.

SOCLE-ORC-EXE-6 R2 Doit

liste blanche des images et services autorisés pour les jobs ; pas d'exécution d'images ou de services arbitraires.#

Lancer des images ou services arbitraires est un vecteur d'exécution discret : une image de service piégée s'exécute sans revue. Une liste blanche des images et services autorisés supprime cette latitude : on n'exécute que du connu et validé.

Preuve attendue
Allowlist des images/services (allowed_images, allowed_services) configurée.
Outillage
Kyverno Conftest
Correspondances & menaces parées 3 standards · 2 menaces
Menaces parées

Un job exploite une mauvaise configuration ou une faille du runtime de conteneurs pour s'échapper vers l'hôte du runner et atteindre d'autres charges. Le cloisonnement supposé entre jobs est rompu CICD-SEC-7 CIS Benchmarks. L'image de base utilisée pour construire les conteneurs contient une charge malveillante ou une vulnérabilité, héritée par tous les artefacts qui en dérivent. Le socle d'exécution contamine toute la production CNCF SLSA.

SOCLE-ORC-EXE-7 R2 Devrait

profils de confinement seccomp/AppArmor appliqués aux jobs.#

Par défaut, un conteneur dispose de bien plus d'appels système qu'un build n'en a besoin, autant de chemins d'escalade. Des profils seccomp/AppArmor réduisent cette surface au nécessaire : même évadé de l'application, le job reste confiné par le noyau.

Preuve attendue
Profils seccomp/AppArmor actifs sur les runners.
Outillage
Kyverno Conftest
Correspondances & menaces parées 3 standards · 2 menaces
Menaces parées

Un job exploite une mauvaise configuration ou une faille du runtime de conteneurs pour s'échapper vers l'hôte du runner et atteindre d'autres charges. Le cloisonnement supposé entre jobs est rompu CICD-SEC-7 CIS Benchmarks. Un conteneur de build accède aux périphériques ou capacités de l'hôte (montages, capabilities, hostPath) pour lire ou altérer des ressources hors de son périmètre. Les privilèges excessifs du conteneur ouvrent l'hôte CIS K8s.

SOCLE-ORC-EXE-8 R2 Devrait

limites de ressources (CPU, mémoire) imposées aux jobs.#

Un job compromis peut abuser des ressources (minage, déni de service) et asphyxier ses voisins sur le même hôte. Des limites CPU/mémoire par job bornent cet abus et garantissent qu'une charge folle ne paralyse pas la plateforme.

Preuve attendue
Quotas/limits configurés sur les jobs/runners.
Outillage
Kyverno Conftest
Correspondances & menaces parées 3 standards · 1 menace
Menaces parées

Un job exploite une mauvaise configuration ou une faille du runtime de conteneurs pour s'échapper vers l'hôte du runner et atteindre d'autres charges. Le cloisonnement supposé entre jobs est rompu CICD-SEC-7 CIS Benchmarks.

Ce site vous est utile ?

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

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn