Aller au contenu

Fondamentaux de la sécurité runtime

Shift-left vs sécurité runtime

L'approche shift-left consiste à détecter les problèmes de sécurité le plus tôt possible dans le cycle de développement (code review, scanning CI, admission control). C'est nécessaire mais insuffisant :

  • Les vulnerabilites zero-day n'ont pas de signature connue au moment du build
  • Un conteneur sain peut etre compromis apres déploiement (exploitation d'une API, credential vole)
  • Les configurations drift en production (modification manuelle, misconfiguration)
  • Les attaques supply chain injectent du code malveillant dans des dependances legitimes

La sécurité runtime est le dernier rempart : elle détecte ce qui a echappe a toutes les couches précédentes.

Defense in depth

La sécurité runtime s'inscrit dans une stratégie de defense en profondeur :

graph TD
    C1["Couche 1 : Code<br/>SAST, code review, secrets scan"] --> C2
    C2["Couche 2 : Build<br/>scanning images, SBOM, signing"] --> C3
    C3["Couche 3 : Deploy<br/>admission control, OPA"] --> C4
    C4["Couche 4 : Runtime<br/>Falco, eBPF, MAC"] --> C5
    C5["Couche 5 : Reseau<br/>NetworkPolicy, mTLS, WAF"] --> C6
    C6["Couche 6 : Donnees<br/>chiffrement, backup, audit"]

Chaque couche reduit la surface d'attaque. La couche runtime (couche 4) est critique car elle observe les comportements reels du système.

MITRE ATT&CK pour conteneurs

Le framework MITRE ATT&CK for Containers cartographie les techniques d'attaque spécifiques aux environnements conteneurises :

Accès initial

Technique Description Detection
Exploiter une application publique Exploitation d'une vulnérabilité dans un service expose Falco : connexion entrante anormale
Supply chain compromise Image malveillante dans le registre Trivy : scanning continu des images déployées
Credentials valides voles Utilisation de tokens ou kubeconfig voles Audit log Kubernetes : accès depuis IP inconnue

Execution

Technique Description Detection
Exec dans un conteneur kubectl exec ou API exec non autorise Falco : regle Terminal shell in container
Déploiement de conteneur malveillant Creation d'un pod avec image non approuvee OPA : contrainte sur les registres autorises
Exploitation de l'API Kubernetes Appels API non autorises Audit log : requêtes vers des ressources sensibles

Persistence

Technique Description Detection
Backdoor dans une image Modification d'une image déployée Trivy : hash d'image modifie, Falco : écriture dans /usr/bin
CronJob malveillant Creation d'un CronJob pour maintenir l'accès OPA : contrainte sur la creation de CronJobs
Modification de ServiceAccount Elevation de privileges via token SA Falco : lecture de token ServiceAccount

Privilege escalation

Technique Description Detection
Container escape Sortie du conteneur vers le host Falco : accès a /proc, montage de volumes sensibles
Privileged container Conteneur lance en mode privileged OPA : interdiction des conteneurs privilegies
hostPath mount Montage de répertoires sensibles du host OPA : contrainte sur les hostPath autorises

Lateral movement

Technique Description Detection
Accès au service account Utilisation du token SA pour pivoter Falco : lecture de /var/run/secrets
Exploitation du réseau interne Scan de ports depuis un pod compromis NetworkPolicy + Falco : connexion sortante anormale
Accès a l'API server Requêtes vers le kube-apiserver depuis un pod Falco : connexion vers l'IP du cluster API

Menaces runtime courantes

Container escape

Un attaquant exploite une vulnérabilité du kernel ou du runtime (runc, containerd) pour sortir de l'isolation du conteneur et accéder au host.

Impact critique

Un container escape donne accès a tous les conteneurs du nœud, aux secrets montes, et potentiellement au cluster entier via le kubelet.

Detection : Falco détecte les appels système anormaux (mount, ptrace, accès /proc/1).

Crypto mining

Un conteneur compromis est utilisé pour miner de la cryptomonnaie. Le symptome principal est une consommation CPU anormale.

Detection : metriques Prometheus (CPU > seuil), Falco (connexion vers des pools de mining connus).

Lateral movement

Depuis un pod compromis, l'attaquant pivote vers d'autres services du cluster en exploitant les tokens ServiceAccount, le réseau interne non segmente, ou les API Kubernetes.

Detection : NetworkPolicy strictes + Falco (connexions sortantes inattendues).

Approches de detection et d'enforcement

Policy-as-code (OPA / Rego)

L'Open Policy Agent (OPA) permet d'écrire des politiques de sécurité en code (langage Rego). Gatekeeper integre OPA dans Kubernetes comme admission controller.

# Interdire les conteneurs privilegies
package k8s.admission

deny[msg] {
  input.request.kind.kind == "Pod"
  container := input.request.object.spec.containers[_]
  container.securityContext.privileged == true
  msg := sprintf("Conteneur privilegie interdit : %s", [container.name])
}

Mode d'action : prevention a l'admission (le pod est rejete avant d'etre cree).

Detection comportementale (Falco / eBPF)

Falco utilise eBPF pour observer les appels système du kernel en temps reel. Il compare les comportements observes a des regles et génère des alertes.

# Regle Falco : detection de shell dans un conteneur
- rule: Terminal shell in container
  desc: Detect a shell spawned in a container
  condition: >
    spawned_process and container and
    proc.name in (bash, sh, zsh, dash) and
    proc.pname != entrypoint
  output: >
    Shell lance dans un conteneur
    (user=%user.name container=%container.name shell=%proc.name
     parent=%proc.pname image=%container.image.repository)
  priority: WARNING
  tags: [container, shell, mitre_execution]

Mode d'action : detection apres le fait (le comportement est observe et une alerte est générée).

Admission control vs runtime detection

Aspect Admission control (OPA) Runtime detection (Falco)
Quand A la creation/modification de la ressource Pendant l'execution
Action Bloque la creation Alerte (et optionnellement kill)
Granularité Manifeste Kubernetes (YAML) Appels système, processus, fichiers, réseau
Faux positifs Rares (politique deterministe) Possibles (heuristique comportementale)
Couverture Configurations uniquement Comportements reels

Recommandation

Utilisez OPA/Gatekeeper pour prevenir les mauvaises configurations et Falco pour détecter les comportements anormaux en runtime. Les deux sont complementaires et couvrent des angles différents.

Concepts cles a retenir

Concept Définition
eBPF Extended Berkeley Packet Filter — technologie kernel permettant d'observer les appels système sans modifier le kernel
Admission controller Webhook Kubernetes qui intercepte les requêtes API avant qu'elles soient persistees
Policy-as-code Politiques de sécurité écrites en code, versionnees, testées, déployées via CI/CD
MITRE ATT&CK Framework de référence qui cartographie les techniques d'attaque
MAC Mandatory Access Control — contrôle d'accès au niveau du kernel (AppArmor, SELinux)
SBOM Software Bill of Materials — inventaire des composants d'une image