Sécurité OpenClaw : leçons de l'incident du cheval de Troie à 28K

Sécurité OpenClaw : leçons de l'incident du cheval de Troie à 28K — Un cheval de Troie déployé sur 28 000 systèmes a utilisé OpenClaw pour exfiltrer clés et bases de code. Voici le modèle de menaces honnête, les contrôles qui ont vraiment compté, et comment un gestionnaire local-first rend le prochain incident sans gravité.
29 avr. 20268 min de lecture
Share with

Ce que l'incident à 28K a réellement montré

Le chiffre « 28K » qui a circulé dans la communauté OpenClaw en avril, c'était le nombre de systèmes qu'un seul paquet malveillant a compromis avant que quiconque ne le remarque. Le cheval de Troie est entré via une extension OpenClaw populaire, a récolté toutes les clés API à sa portée, et s'est silencieusement glissé dans les prompts d'agents qui ont tourné le reste de la semaine.

Il n'est pas entré parce qu'OpenClaw serait « peu sûr ». Il est entré parce que la plupart des déploiements OpenClaw sont configurés comme la plupart des outils de développement : clés dans des variables d'environnement, agents tournant sur le portable du développeur, extensions installées par confiance, et aucun journal d'audit entre « l'agent a fait quelque chose » et « la facture est arrivée ». Chacune de ces valeurs par défaut est correcte prise isolément. Empilées, elles forment exactement le modèle de menaces pour lequel ce cheval de Troie a été écrit.

Ce billet n'est pas un billet de fonctionnalités. Office Claws n'est pas un runtime OpenClaw — nous sommes un gestionnaire de bureau Codex-first, et la plupart des contrôles ci-dessous s'appliquent aux deux agents de la même façon. Ce que nous voulons exposer, c'est le modèle de menaces que les utilisateurs OpenClaw affrontent réellement après cet incident, et les pratiques local-first ennuyeuses qui transforment le prochain en non-événement.

Rayon d'impact du cheval de Troie OpenClaw : extension → clés → prompts d'agent → dépenses API

Le modèle de menaces que les utilisateurs OpenClaw ont réellement

Trois choses font des plateformes d'agents des cibles plus juteuses qu'un outil de développement classique, et OpenClaw n'y fait pas exception.

  • Les clés valent de vrai argent. Une clé OpenAI ou Anthropic divulguée n'est pas qu'un identifiant — c'est un distributeur compté. Un attaquant peut brûler 5 000 $ sur une clé en un week-end avant que les alertes de facturation se déclenchent.
  • Les agents ont des mains. Un agent avec accès shell peut lire votre code, pousser sur vos repos, exécuter des scripts en tant que vous. Un cheval de Troie dans le prompt ou la liste d'outils de l'agent peut faire les mêmes choses.
  • La chaîne d'approvisionnement est large. Chaque extension, serveur MCP ou « pack communautaire » que vous installez tourne dans la même zone de confiance que l'agent. Une configuration OpenClaw avec douze extensions a douze points d'entrée potentiels.

Toute pratique qui ne traite au moins l'un de ces trois points est de la décoration.

RisqueMauvaise valeur par défautContrôle ennuyeux qui marche
Exfiltration de clésClés dans .env à côté du codeTrousseau OS local, rotation à courte durée
Agent sur portable avec accès totalUn uid, un système de fichiersAgent sur sa propre VPS, jetons à scope
Chaîne d'approvisionnement des extensionsMise à jour auto, sans revueVersions épinglées, lecture du diff, pas d'auto-install
Dépense invisibleFacture API en fin de moisPlafond de dépense par agent + monitoring quotidien

Cinq contrôles qui font vraiment bouger l'aiguille

1. Les clés restent sur la machine de l'opérateur

Le contrôle au plus fort effet de levier après cet incident est aussi le plus ancien : ne livre pas le secret à l'endroit où tourne le code non fiable. Dans Office Claws, vos clés de fournisseur vivent dans le store local de votre application desktop. Elles sont passées à l'agent par un tunnel Tailscale chiffré uniquement quand l'agent appelle un fournisseur, et ne sont jamais écrites sur le disque de la VPS. Si un cheval de Troie atterrit sur la box de l'agent, il ne trouve pas la clé — parce qu'elle n'y a jamais été.

Si vous restez sur OpenClaw, l'équivalent est de sortir les clés des fichiers .env du projet vers le trousseau de votre OS (Keychain sur macOS, secret-tool sur Linux, DPAPI sur Windows) et de les lire au démarrage de la session. C'est pénible. C'est aussi la différence entre « compromis » et « légèrement gênant ».

2. L'agent vit ailleurs

Faire tourner l'agent sur la même machine que votre arborescence de sources, c'est qu'une seule compromission atteint tout. Le faire tourner sur une VPS — votre propre box Contabo pour quelques euros par mois — transforme la plupart des attaques en « l'attaquant a rooté une seule droplet éphémère ». Cette droplet n'a pas vos clés SSH pour vos autres repos, pas de session navigateur sur votre banque, pas d'accès au Slack de votre équipe. Vous la détruisez et la réapprovisionnez ; le rayon est d'une machine.

C'est le modèle que nous livrons. Office Claws self-hosted approvisionne une droplet Contabo depuis un snapshot pré-cuit en moins de trois minutes ; l'agent tourne là-bas, votre portable lui parle via Tailscale.

Agent sur sa propre VPS, clé restant sur la machine de l'opérateur

3. Épinglez chaque extension que vous installez

Le cheval de Troie à 28K était une attaque de chaîne d'approvisionnement. Mettre à jour automatiquement les extensions communautaires, c'est l'équivalent OpenClaw de curl | bash. Épinglez les versions. Lisez le diff avant de monter. Traitez toute extension qui demande « tous les outils, tous les répertoires » comme vous traiteriez une extension de navigateur qui demande à lire toutes les pages — avec une longue pause et une alternative plus petite.

Deux règles pratiques :

  • Une extension qui a besoin d'une sortie réseau vers un domaine dont vous n'avez jamais entendu parler, c'est non.
  • Une extension dont l'historique GitHub du mainteneur fait trois commits, c'est non.

4. Plafonnez les dépenses chez le fournisseur

Chaque fournisseur supporté a un plafond de dépense par clé. Mettez-en un. Le cheval de Troie à 28K a été rentable parce que personne n'a rien remarqué jusqu'à l'arrivée de la facture ; le même cheval de Troie contre une clé avec un plafond de 50 $/jour est une nuisance, pas un incident. Office Claws affiche votre consommation de tokens par agent dans l'app desktop, mais la défense qui fait foi est le plafond que vous mettez côté OpenAI ou Anthropic. Nous ne pouvons pas l'imposer à votre place, et nous ne le voudrions pas.

5. Ayez un journal d'audit que vous n'avez pas écrit vous-même

Si votre seul enregistrement de « ce qu'a fait l'agent » est le scrollback de l'agent lui-même, vous n'avez pas d'enregistrement. Chaque prompt d'agent et chaque appel d'outil devraient atterrir quelque part que vous contrôlez : le log de gateway sur la VPS de l'agent, une stack Loki/Grafana que vous opérez, ou — pour les plans managed — le flux d'activité dans l'app desktop. Le but n'est pas de le lire tous les jours. Le but, c'est qu'après un incident, vous puissiez répondre « qu'est-ce que cette clé a touché » en minutes, pas en semaines.

À quoi ça ressemble en pratique

Concrètement, un utilisateur OpenClaw qui a pris l'incident au sérieux est sorti d'avril avec à peu près cette stack :

laptop  ── Tailscale ──► VPS (one per agent)
  │                       │
  │                       ├─ agent runtime
  │                       ├─ pinned extensions
  │                       └─ gateway log → operator-side

  ├─ keys in OS keychain (NOT in .env)
  ├─ provider spend cap set per key
  └─ desktop app showing per-agent token burn

C'est la même stack qu'Office Claws livre par défaut pour les agents Codex. Si vous avez migré hors d'OpenClaw après le blocage de l'abonnement, vous avez récupéré la posture de sécurité comme effet secondaire de la migration de coût. Si vous êtes resté sur OpenClaw, l'architecture ci-dessus reste atteignable — c'est juste à vous de la câbler.

Recommandations

  1. Sortez les clés de .env aujourd'hui. Même si vous ne faites rien d'autre dans cette liste, la prochaine extension piégée ne pourra pas exfiltrer une clé qu'elle ne peut pas lire.
  2. Mettez des plafonds de dépense avant la prochaine session de code. Cinq minutes sur le tableau de bord du fournisseur. Le contrôle au plus fort ROI de cette page.
  3. Auditez vos extensions installées. Tout ce que vous n'utilisez pas activement, désinstallez. Tout ce que vous utilisez, épinglez à un commit connu comme bon.
  4. Sortez l'agent du portable. Que ce soit OpenClaw sur une box self-hosted ou Codex sur Office Claws, le portable est le mauvais endroit pour un agent longue durée avec accès shell.
  5. Gardez un journal côté opérateur. Pas besoin que ce soit sophistiqué. Il doit exister avant le prochain incident, pas après.

L'incident à 28K n'était pas le dernier. Les plateformes d'agents sont maintenant assez lucratives pour que « chaîne d'approvisionnement → clé → facture » soit un modèle d'affaires, pas un hasard. Les contrôles ci-dessus n'arrêtent pas ça. Ils rendent le rayon d'impact assez petit pour que le prochain soit un ticket du vendredi après-midi, pas une war room de week-end.

Lectures liées

Auteur

Office Claws Team

Nous construisons le futur de la gestion des agents IA chez Office Claws. Partage d'analyses sur l'infrastructure, la sécurité et l'expérience développeur.

Restez informé

Recevez les derniers articles sur les agents IA, l'infrastructure et les mises à jour produit directement dans votre boîte de réception.

Pas de spam. Désabonnement à tout moment.