GuardFall Exposes Open-Source AI Coding Agents to Decades-Old Shell Injection Risks
Mis à jour :
GuardFall : Une faille d’injection Shell critique dans les agents de codage IA
La recherche GuardFall, menée par Adversa AI, a mis en évidence une vulnérabilité critique affectant la majorité des agents de codage IA open source (10 sur 11 testés). Cette faille permet à un attaquant de contourner les filtres de sécurité en exploitant des techniques d’obfuscation de commandes shell classiques, vieux de plusieurs décennies.
Points clés
- Mécanisme de contournement : Les agents utilisent des listes de blocage (blocklists) basées sur la correspondance textuelle simple. Or, le shell Bash interprète et réécrit les commandes avant exécution (suppression de guillemets, expansion de variables). Le filtre “voit” une commande inoffensive, alors que le shell exécute une commande malveillante.
- Impact : Puisque ces agents s’exécutent avec les privilèges complets de l’utilisateur, une injection réussie peut mener au vol d’identifiants (clés SSH, secrets cloud) ou à la suppression de fichiers.
- Absence de CVE : Il ne s’agit pas d’un bug logiciel isolé, mais d’un problème structurel lié à la manière dont les agents valident les entrées avant leur exécution par le shell.
- Agents vulnérables : OpenCode, Goose, Cline, Roo-Code, Aider, Plandex, Open Interpreter, OpenHands, SWE-agent et Hermes. Seul l’agent “Continue” a démontré une protection efficace.
Vulnérabilités
- Injection Shell par décalage d’interprétation : Pas de CVE attribuée, car il s’agit d’une classe de vulnérabilité conceptuelle (conventions dangereuses).
- Le vecteur d’attaque : L’IA est incitée à générer une commande malveillante dissimulée dans un flux de travail légitime (ex: fichiers de build, documentation). L’exploitation est facilitée par l’activation des modes “auto-exécution” ou la désactivation des conteneurs sandbox.
Recommandations
- Limiter les privilèges : Exécuter les agents dans des environnements isolés avec un répertoire
$HOMErestreint pour protéger les fichiers de configuration sensibles. - Désactiver l’automatisation : Désactiver les drapeaux de type
--auto-exec,--auto-runou--auto-testpour garder un contrôle humain systématique. - Sécuriser le flux de travail : Ne jamais permettre à un agent d’exécuter des requêtes provenant de dépôts tiers (forks) et traiter les fichiers de configuration locaux (ex:
.aider.conf.yml) comme du code non fiable. - Adopter une architecture de défense robuste : S’inspirer du modèle de l’agent “Continue”, qui analyse la commande via une couche intermédiaire simulant l’interprétation du shell avant toute exécution.
