Security musings

Catégories

Tags

🔍 Licence d'Utilisation 🔍

Sauf mention contraire, le contenu de ce blog est sous licence CC BY-NC-ND 4.0.

© 2025 à 2042 Sébastien Gioria. Tous droits réservés.

⏱️
Temps de lecture estimé
~7 minutes

Cet article fait partie de la série OWASP Agentic Skills Top 10. Retrouvez l’introduction et le plan complet sur la page de la série.

Microsoft Defender Security Research Team, février 2026 : “OpenClaw should be treated as untrusted code execution with persistent credentials. It is not appropriate to run on a standard personal or enterprise workstation.”

C’est la conclusion officielle de Microsoft après avoir analysé l’état de l’isolation des skills d’agents IA. AST06 couvre ce problème : les skills s’exécutent dans le même contexte de sécurité que l’agent hôte, avec accès complet au filesystem, au shell et au réseau, parce que le sandboxing est soit indisponible, soit optionnel, soit désactivé par défaut.


Description du risque

On constate que le sandboxing logiciel est une pratique établie pour les applications traditionnelles (conteneurs, VMs, …). L’écosystème des skills d’agents IA a grandi trop vite pour intégrer ces protections. Les agents eux-mêmes sont conçus pour avoir des permissions larges, ce qui rend la réduction de scope architecturalement non triviale.

Chaque skill installé est un vecteur potentiel de compromission complète du système ; l’isolation est optionnelle, pas le défaut.


Exemples d’incidents

Incident Date Impact
OpenClaw documentation 2026 “tools run on the host for the main session, so the agent has full access when it’s just you.” Le sandboxing Docker est disponible mais nécessite une configuration explicite que la plupart des utilisateurs n’appliquent jamais
135 000+ instances exposées Fév 2026 SecurityScorecard confirme 135 000+ instances OpenClaw publiquement accessibles sur TCP 18789. Pas de firewall, pas d’authentification, pas d’isolation de processus par défaut
Advisory Microsoft Defender Fév 2026 Recommandation officielle de ne pas exécuter OpenClaw sur un poste personnel ou d’entreprise standard
ClawJacked (CVE-2026-28363, CVSS 9.9) Fév 2026 Attaque web contre des instances locales : brute-force cross-origin de WebSocket sans rate limiting. Prise de contrôle à distance, enregistrement de nouveaux devices sans prompt utilisateur, exfiltration de données

Scénarios d’attaque

On distingue ici quatre chemins d’exploitation, du plus direct au plus furtif.

1. Host escape

Un skill malveillant exécute os.system() pour planter un cron job sur l’hôte. Le job persiste après la désinstallation du skill.

2. Network pivot

Un agent sans sandbox réseau fait des requêtes sortantes vers un C2 et exfiltre les credentials d’autres services co-localisés sur la machine.

3. Skill shadowing

Le système de précédence à trois niveaux d’OpenClaw (workspace > managed > bundled) permet à un attaquant qui place un skill dans le dossier workspace de remplacer une fonctionnalité built-in légitime. Le remplacement est actif immédiatement via hot-reload.

4. Localhost attack surface

L’interface WebSocket de l’agent, liée à localhost, est accessible depuis n’importe quel onglet de navigateur. Un site malveillant brute-force le token de session (ClawJacked).


Exemple concret

Le scénario type : un skill ClawHub installé en workspace déclenche os.system() sans que l’agent ne soit sandboxé. L’exécution se passe directement sur l’hôte.

  1. L’utilisateur installe un skill depuis ClawHub via l’interface standard.
  2. Le skill charge un SKILL.md avec un postinstall qui plante un cron job.
  3. Le cron job exfiltre les credentials vers un C2 toutes les 6 heures.
  4. La désinstallation du skill ne supprime pas le cron job ; la persistance survit.

Mitigations

  1. Exiger l’isolation Docker/conteneur pour l’exécution des skills par défaut. Le mode hôte doit nécessiter un opt-in explicite avec risque documenté.
  2. Lier les interfaces de contrôle de l’agent à localhost avec authentification. Jamais 0.0.0.0 par défaut.
  3. Appliquer des profils seccomp/AppArmor pour limiter la surface syscall de l’agent.
  4. Implémenter l’isolation de processus par skill : chaque skill dans son propre namespace.
  5. Restreindre le hot-reload et la précédence workspace. Exiger une confirmation utilisateur explicite pour les overrides de skills workspace.
  6. Rate-limiter et authentifier toutes les connexions WebSocket, y compris depuis localhost.

Mapping OWASP

  • LLM08 (Excessive Agency)
  • CWE-653 (Insufficient Compartmentalization)
  • ASVS V12 (File/Resource)

Risques liés


Quelques références pour aller plus loin


À retenir 📌

L'exécution en mode hôte est le comportement par défaut de la plupart des plateformes d'agents. Le sandboxing est optionnel.

135 000+ instances OpenClaw sont exposées publiquement. Microsoft recommande de ne pas les exécuter sur des postes standard.

Le conteneur Docker éphémère (network: none, read-only, cap-drop ALL) est la mitigation la plus directe.

AST06 - Generée par IA