Dans le cloud, vos machines ont une identité (IAM roles, service accounts, managed identities…). Si un attaquant compromet une instance, il hérite de ses permissions et peut pivoter dans tout votre environnement cloud.
🎯 Objectif des attaquants : exploiter les identités machines sur-privilégiées pour accéder à des ressources critiques (bases de données, secrets, buckets S3, Key Vaults…).
Traitez chaque identité machine comme un utilisateur privilégié. Un rôle IAM trop permissif est aussi dangereux qu’un mot de passe admin partagé.
⚠️ Le metadata service (
169.254.169.254
) est la cible #1 des attaquants en cas de SSRF. Protégez-le comme votre annuaire Active Directory.
🔎 Scénarios d’Attaque
1. Instance compromise avec rôle IAM sur-privilégié
- Vecteur : vulnérabilité applicative (RCE, SSRF) sur une EC2/VM Azure
- Exploitation : récupération des credentials temporaires via metadata service
- Impact : accès à tous les services autorisés par le rôle IAM
2. SSRF vers metadata service
- Vecteur : faille SSRF dans une application web
- Exploitation :
http://169.254.169.254/latest/meta-data/iam/security-credentials/
- Impact : vol des credentials IAM sans besoin de RCE
3. Token de service account Kubernetes exfiltré
- Vecteur : pod compromise ou misconfiguration
- Exploitation : lecture du token monté dans
/var/run/secrets/kubernetes.io/serviceaccount/token
- Impact : accès à l’API Kubernetes avec les permissions du service account
4. Managed Identity abuse (Azure)
- Vecteur : instance compromise avec managed identity
- Exploitation : appel à
http://169.254.169.254/metadata/identity/oauth2/token
- Impact : obtention de tokens Azure AD pour accéder à d’autres ressources
5. IMDSv1 exploitation (AWS)
- Vecteur : SSRF ou accès réseau non filtré
- Exploitation : requêtes non authentifiées vers metadata service v1
- Impact : récupération de credentials IAM sans barrières
🧪 Exemples d’Attaques Récentes (2024-2025)
Vecteur initial | Technique d’exploitation | Identité compromise | Impact observé | Référence |
---|---|---|---|---|
RCE sur EC2 WordPress | Metadata service IMDSv1 | Rôle IAM admin S3 | Exfiltration 50TB données clients | Capital One 2019 |
SSRF dans API Gateway | Proxy vers 169.254.169.254 | Rôle Lambda sur-privilégié | Accès Secrets Manager, pivot multi-comptes | AWS SSRF Advisory |
Pod Kubernetes malveillant | Token service account par défaut | ClusterAdmin rights | Compromission totale cluster K8s | Tesla Breach 2018 |
VM Azure avec managed identity | Token OAuth2 via metadata | Contributor sur subscription | Création backdoor VMs, crypto-mining | ChaosDB 2021 |
Container escape | Accès host metadata service | Node IAM role | Destruction infrastructure via API calls | TeamTNT Campaigns |
📰 Cas d’incidents notables
Capital One Data Breach (2019) - Cas d’école SSRF/IMDS
- Contexte : Attaque via SSRF sur application web hébergée sur AWS
- Technique : Exploitation d’une faille SSRF pour accéder au metadata service EC2 (IMDSv1)
- Impact : Exfiltration de données de 100+ millions de clients, coût de $270M
- Analyse : Krebsonsecurity - Capital One Breach
- Post-mortem AWS : Defense in Depth: Open Firewalls, Reverse Proxies, SSRF Vulnerabilities, EC2 Instance Metadata Service
Tesla Kubernetes Cryptojacking (2018)
- Contexte : Compromission d’un cluster Kubernetes non sécurisé
- Technique : Console Kubernetes publique sans authentification + credentials AWS dans pods
- Impact : Mining de cryptomonnaie, accès à données propriétaires sur S3
- Analyse : RedLock - Tesla Kubernetes Breach
Uber GCP Token Leak (2016)
- Contexte : Credentials GCP exposés dans un repository GitHub privé
- Technique : Service account keys hardcodées dans le code source
- Impact : Accès non autorisé à 57 millions de comptes clients et chauffeurs
- Leçon : Ne jamais stocker de credentials long-terme, utiliser Workload Identity
Microsoft Azure Cosmos DB Vulnerability “ChaosDB” (2021)
- Contexte : Vulnérabilité dans Jupyter Notebook feature de Cosmos DB
- Technique : Exploitation permettant l’accès aux primary keys d’autres tenants
- Impact : Accès potentiel à des milliers de bases de données Cosmos DB
- Analyse : Wiz - ChaosDB Explained
TeamTNT Container Escape Campaigns (2020-2024)
- Contexte : Groupe APT ciblant les environnements conteneurisés
- Technique : Container escape + accès au metadata service du host + vol de credentials IAM
- Impact : Compromission multi-cloud (AWS, Azure, GCP), cryptomining, botnet
- Analyse : TeamTNT Analysis
✅ Bonnes pratiques
🔐 Principe du moindre privilège
AWS
- Scoper les rôles IAM au strict minimum : pas de wildcard
*
sur les actions - Utiliser IMDSv2 : requiert un token session (protection SSRF)
# Forcer IMDSv2 sur toutes les instances aws ec2 modify-instance-metadata-options \ --instance-id i-xxxxx \ --http-tokens required \ --http-put-response-hop-limit 1
- Condition sur les rôles : restreindre l’usage avec des conditions IAM (IP source, VPC, tags…)
- Pas de credentials long-terme : utiliser exclusivement les rôles IAM
Azure
- Managed identities uniquement : pas de service principals stockés dans les VMs
- RBAC granulaire : assigner les rôles au niveau ressource, pas subscription
- Conditional Access : restreindre les tokens aux IPs/VNets autorisés
- Désactiver l’héritage de rôles : éviter les permissions transitives non maîtrisées
GCP
- Service accounts dédiés : un par workload, pas de réutilisation
- Workload Identity : lier les pods K8s à des service accounts GCP spécifiques
- Conditions IAM : restreindre l’usage par IP, VPC, ressource source
- Pas de clés téléchargées : utiliser exclusivement l’authentification automatique
Kubernetes
- Désactiver automounting des tokens :
automountServiceAccountToken: false
par défaut - RBAC strict : pas de
cluster-admin
sauf exceptions justifiées - Service accounts dédiés : un par pod/déploiement
- Pod Security Standards : enforcer
restricted
profile
🛡️ Défense en profondeur
Segmentation réseau
- Network Policies (K8s) : limiter les flux entre pods
- Security Groups/NSG : bloquer l’accès au metadata service depuis Internet
- Private endpoints : forcer le passage par des endpoints privés pour les services critiques
- Firewall rules : interdire les sorties non autorisées
Détection et monitoring
- CloudTrail/Azure Activity Logs : alertes sur appels API suspects
- Accès à
AssumeRole
depuis IPs inhabituelles - Appels répétés à
GetSecretValue
- Modifications de permissions IAM
- Accès à
- GuardDuty/Defender for Cloud : détection comportementale
- Audit logs Kubernetes : surveiller les accès aux secrets et tokens
- SIEM avec règles spécifiques :
- Accès metadata service depuis conteneurs
- Escalation de privilèges
- Mouvement latéral inter-services
Durcissement des workloads
- Immutable infrastructure : pas de SSH/RDP, tout via code
- Runtime security : Falco, Sysdig pour détecter les comportements anormaux
- Secrets externes : HashiCorp Vault, AWS Secrets Manager avec rotation automatique
- Chiffrement : données au repos et en transit systématiquement
👁️ Surveillance et audit
Audits réguliers
- IAM Access Analyzer (AWS) : détecter les permissions trop larges
- Azure AD Access Reviews : valider périodiquement les accès
- GCP Policy Analyzer : identifier les permissions non utilisées
- CARTA (Continuous Adaptive Risk and Trust Assessment) : réévaluation permanente des risques
Détection d’anomalies
- Baseline comportementale : alerter sur déviations
- Machine learning : détecter les patterns d’attaque (AWS GuardDuty ML)
- Threat hunting : recherche proactive de compromissions
Tests et validation
- Red team exercises : simuler les attaques SSRF/metadata abuse
- Chaos engineering : valider la résilience des contrôles
- Penetration testing cloud : audits externes réguliers
🛠️ Outils & Solutions
Détection et prévention
- AWS GuardDuty : détection de menaces basée sur ML
- Azure Defender for Cloud : protection workloads cloud
- GCP Security Command Center : visibilité et détection
- Wiz / Orca Security / Prisma Cloud : CSPM avec détection IMDS abuse
- Falco : runtime security Kubernetes
Audit et conformité
- Prowler : audit de sécurité AWS automatisé
- ScoutSuite : multi-cloud security auditing
- CloudSploit : scans de configuration cloud
- kube-bench / kube-hunter : audit sécurité Kubernetes
Gestion des secrets
- HashiCorp Vault : gestion centralisée des secrets
- AWS Secrets Manager / Azure Key Vault / GCP Secret Manager : secrets natifs cloud
- External Secrets Operator (K8s) : synchronisation secrets externes vers K8s
📋 Checklist de sécurisation
✅ Immédiat
- Auditer tous les rôles IAM/managed identities pour identifier les sur-privilèges
- Forcer IMDSv2 sur toutes les instances AWS
- Désactiver l’automounting des tokens par défaut dans Kubernetes
- Activer CloudTrail/Activity Logs avec alertes sur actions sensibles
- Bloquer l’accès au metadata service depuis Internet via Security Groups
✅ Court terme
- Implémenter le principe du moindre privilège sur tous les workloads
- Déployer GuardDuty/Defender for Cloud avec règles personnalisées
- Migrer les secrets hardcodés vers des gestionnaires dédiés
- Mettre en place des Network Policies restrictives (K8s)
- Rotation automatique des secrets critiques
✅ Moyen terme
- Implémenter Workload Identity (GCP) ou IRSA (AWS) pour Kubernetes
- Déployer une solution de runtime security (Falco, Sysdig)
- Audits réguliers automatisés avec Prowler/ScoutSuite
- Red team exercises ciblés sur vol d’identité machine
- Mise en place d’un programme de threat hunting cloud
- Formation des équipes sur les risques spécifiques cloud
- Documentation des procédures d’incident response cloud
- Tests de reprise après compromission d’identité machine
🔗 Ressources complémentaires
Guides et standards
- AWS Security Best Practices
- Azure Security Benchmarks
- GCP Security Best Practices
- CIS Benchmarks - Cloud
- NIST SP 800-204 - Security Strategies for Microservices
Outils open source
- Prowler - AWS/Azure/GCP security auditing
- ScoutSuite - Multi-cloud security scanner
- CloudSploit - Cloud configuration scanner
- Falco - Runtime security Kubernetes
- kube-bench - CIS K8s benchmark checker