TL; DR
SilverfortL'équipe de recherche en sécurité d'OpenClaw a identifié une vulnérabilité critique dans ClawHub permettant à un attaquant de positionner sa compétence comme la compétence numéro 1 sur la plateforme. Ce faisant, un attaquant peut injecter du code malveillant dans ce qui semble être une compétence légitime et fiable, jetant ainsi les bases d'une attaque de grande envergure sur la chaîne d'approvisionnement. Par conséquent, un grand nombre d'utilisateurs et d'agents OpenClaw pourraient télécharger la compétence compromise et exécuter du code malveillant sur leurs machines, potentiellement avec des privilèges élevés. Lors de notre preuve de concept, notre compétence est devenue la compétence la plus téléchargée de sa catégorie, ce qui a entraîné… 3 900 exécutions de compétences dans les 6 jours dans plus de 50 villes à travers le monde, y compris plusieurs entreprises cotées en bourse.
Ce problème a été signalé de manière responsable à l'équipe ClawHub le 16 mars 2026 et a depuis été résolu avec succès.
Pour réduire le risque de telles chaînes d'attaques, notre équipe a développé ClawNet : un plugin de sécurité pour OpenClaw qui analyse les compétences à la recherche de schémas malveillants lors de l'installation à l'aide du LLM de l'agent, puis informe l'utilisateur et bloque les installations suspectes.
Qu'est-ce que ClawHub ?
ClawHub est le registre public de compétences d'OpenClaw, où chacun peut publier un package de compétences que d'autres peuvent installer. Une compétence peut, par exemple, permettre à votre agent OpenClaw de s'intégrer à Google Agenda ou d'effectuer des recherches Web optimisées pour vous. C'est l'équivalent de npm pour l'écosystème des agents OpenClaw. La plateforme ClawHub connaît une croissance rapide, et de nombreuses compétences ont déjà atteint un nombre impressionnant de téléchargements (Vous souhaitez en savoir plus sur OpenClaw ?). Vous pouvez en savoir plus ici).
La popularité croissante de ClawHub attire de plus en plus les pirates informatiques. La possibilité de publier des compétences sur une plateforme que les utilisateurs consultent et installent régulièrement crée une formidable opportunité pour la chaîne d'approvisionnement.
Une attaque classique consiste à diffuser une skill malveillante et à attendre que les utilisateurs l'installent. Cependant, injecter du code malveillant dans une skill d'apparence innocente ne suffit pas : pour qu'elle se généralise, il est nécessaire qu'elle paraisse digne de confiance. Sur ClawHub, comme sur de nombreux registres publics tels que npm ou le Marketplace de VS Code, la confiance est souvent déduite de sa popularité.

Le code de ClawHub est presque entièrement codé par ambianceBien que cette approche présente des avantages, elle peut également engendrer des failles de sécurité critiques. En analysant l'implémentation du téléchargement par ClawHub, nous avons identifié une vulnérabilité permettant de transformer les signaux de confiance basés sur le téléchargement en une chaîne d'attaque exploitable à grande échelle.
Trouver une compétence sur ClawHub
Supposons que vous souhaitiez installer une compétence permettant à votre agent OpenClaw de planifier des réunions dans Google Agenda. Pour ce faire, rendez-vous sur ClawHub (via l'interface web ou la ligne de commande) et recherchez le package de compétence approprié. Une fois les résultats de recherche affichés, le nombre de téléchargements de la compétence apparaît en premier. Plus une compétence est téléchargée, plus elle sera visible dans les résultats de recherche.

Chaque pack de compétences comprend un SKILL.MD Ce fichier indique à l'agent la finalité de la compétence, ses dépendances et son mode d'utilisation. Certaines compétences peuvent inclure des scripts que l'agent peut exécuter dans certaines circonstances.

Plongez dans la recherche
Analyse approfondie de l'API de téléchargement
Le code de ClawHub est public (quelle chance !). Lors de nos recherches, nous avons découvert qu'il expose une API de téléchargement de compétences via une downloadZip En bref, avant qu'un téléchargement ne soit comptabilisé, la requête doit passer plusieurs contrôles de validation :
- Limitation de débitTrop de requêtes provenant de la même adresse IP ou du même utilisateur et vous êtes bloqué.
- DéduplicationMême si vous dépassez la limite de requêtes, la même adresse IP ou le même utilisateur utilisant la même compétence au cours de la même heure ne seront pas comptabilisés une seconde fois.
À première vue, cela ressemble à une conception défensive solide, jusqu'à ce qu'on examine de plus près sa mise en œuvre.
Contourner le point de terminaison de l'API frontale
ClawHub utilise Convexe comme framework backend. En examinant le code source de ClawHub, deux points d'accès intéressants étaient accessibles publiquement :

- URL du site Convex: sert l'API HTTP frontale. Des actions telles que le téléchargement de compétences, la liste des utilisateurs et la recherche de compétences sont gérées par elle.
- URL de déploiement Convex est un peu différent. Celui-ci s'adresse directement au Couche RPC backend convexe— Aucun middleware d'action HTTP, aucune gestion personnalisée des requêtes. Uniquement des appels de fonction bruts au serveur.
Un examen plus approfondi de la bibliothèque Convex
Convex est un framework backend basé sur un modèle RPC (Appel de Procédure Distante) typé. Dans un modèle RPC, au lieu d'envoyer des requêtes HTTP à des points de terminaison REST ou GraphQL, vous appelez directement les fonctions backend depuis le client. Chaque fonction définie est automatiquement enregistrée et appelable ; considérez chaque fonction comme son propre point de terminaison.
Convex établit une distinction nette entre les fonctions appelables publiques et privées :
- Fonctions internes:
internalQuery / internalMutation / internalAction
Conçu pour être privé. Utilisable uniquement par d'autres fonctions Convex côté serveur, il est totalement invisible pour le monde extérieur. - Fonctions publiques:
query / mutation / action
Accessible via l'URL de déploiement de Convex et utilisable par toute personne connaissant ou devinant le nom de la fonction. D'après la documentation de Convex, si une fonction est définie comme publique, n'importe qui peut l'appeler via une requête HTTP comme suit :

Ces fonctions devraient bien sûr être utilisées de très Ils doivent procéder avec soin. Ils doivent valider les données saisies par le client et vérifier les autorisations d'utilisation de la fonction avant d'apporter toute modification à la base de données backend.
Découvrir la fonction vulnérable
Le fichier downloads.ts contient une fonction appelée increment. Alors que le flux de téléchargement légitime passe par un système hautement protégé mutation interne qui impose la limitation du débit, la déduplication et les contrôles d'autorisation, Cette fonction ignore complètement tout cela.:

Aucune authentification. Aucune limite de débit. Aucune déduplication. Aucun contrôle d'autorisation d'aucune sorte.
Il était clairement censé être un fonction interne mais a été défini comme un public mutation au lieu de internalMutationCette simple erreur l'expose comme un point de terminaison RPC appelable sur l'URL de déploiement, public au monde entier.
Un attaquant peut appeler downloads:increment avec une seule requête curl utilisant n'importe quel skillId valide, contournant ainsi toutes les protections du flux de téléchargement et Gonfler le compteur de téléchargements de n'importe quelle compétence sans limite !
Voici à quoi cela ressemble :

L'obtention de l'identifiant de déploiement et de l'identifiant de compétence est triviale, car les deux sont exposés dans le trafic réseau du client et peuvent être observés en inspectant les réponses du serveur ClawHub.
Formation de la chaîne d'attaque
Étape 1 : Développer la compétence malveillante
L'attaque commence par la création et la publication d'une compétence qui semble parfaitement légitime. Pour cette démonstration, nous avons créé une Intégration de Outlook Graph skill — un utilitaire qui permet à un agent OpenClaw de planifier des réunions, de gérer les e-mails d'un utilisateur, et plus encore.

Un programme d'exfiltration de données simple est dissimulé dans le script de la compétence. Lorsqu'OpenClaw l'exécute, il collecte le nom d'utilisateur et le nom de domaine complet (FQDN) du client et les envoie à un serveur que nous contrôlons. Dans le cadre de cette recherche, ce programme est volontairement peu intrusif et non destructif.

La charge utile était intégrée à une fonction « send_telemetry » apparemment légitime, et par conséquent, la compétence n'a pas été identifiée comme malveillante.
Bien sûr, un véritable agresseur Cela rendrait cette charge utile beaucoup plus sophistiquée ; elle pourrait permettre de récupérer des variables d'environnement, des chemins de fichiers locaux, des jetons stockés en mémoire, ou tout autre élément accessible dans le contexte d'exécution de la compétence.
Étape 2 : Gonfler le compteur de téléchargements
C’est là que l’attaque devient particulièrement intéressante du point de vue de la chaîne d’approvisionnement. Nous avons déjà une compétence malveillante sur ClawHub, mais une compétence sans aucun téléchargement ne touchera personne. Qui voudrait installer une compétence que personne n’a jamais essayée ? Il fallait qu’elle paraisse digne de confiance.
Nous avons donc créé un outil simple pour y parvenir. En exploitant une faille de sécurité découverte dans le code source, nous avons pu saturer la base de données de statistiques avec des requêtes d'insertion d'un événement, incrémentant ainsi le compteur de téléchargements de notre skill malveillante. Combien de téléchargements ? Autant que nous le souhaitions ! Aucune limitation de débit, aucune validation, rien ne nous arrêtait.

En quelques minutes, le compteur de téléchargements de notre compétence a augmenté de manière significative.suffisamment pour propulser cette compétence en tête des résultats de recherche dans sa catégorie..

Étape 3 : Observer l’atterrissage
Suite à l'explosion du nombre de téléchargements, les utilisateurs ont commencé à découvrir et à installer l'application. Résultat : Environ 3 900 exécutions de compétences dans les 6 jours Plus de 50 villes différentes à travers le monde, dont plusieurs entreprises cotées en bourse.

Toutes ces exécutions ont déclenché une requête HTTP vers notre serveur qui incluait le nom de domaine et le nom d'utilisateur de l'utilisateur dans le cadre de l'exécution légitime de la compétence.
Cela démontre la puissance de telles chaînes d'attaques. La compétence s'exécute pour le compte de l'utilisateur disposant de privilèges élevés et exécutant l'agent OpenClaw. Dans ce cas précis, nous n'avons collecté que le nom d'utilisateur et le domaine, mais un véritable attaquant pourrait exploiter ces informations pour commettre des actions bien plus malveillantes.
OpenClaw tombe dans le même piège.
Si les utilisateurs humains peuvent tomber dans le piège des téléchargements, que se passe-t-il lorsque nous déléguons cette décision à notre agent OpenClaw ?

Lorsqu'on lui demande de trouver la compétence la plus adaptée à un besoin donné, l'agent effectue une recherche sur ClawHub via l'interface de ligne de commande (CLI) et sélectionne une compétence parmi les résultats en fonction de son nom, de son identifiant, de son résumé et de son score. Bien que la décision finale concernant la compétence à installer revienne au responsable de la formation, le score de la compétence — qui influence cette décision selon le code source — est impacté par la sémantique du contenu et, bien sûr… par le nombre de téléchargements.

Nous avons donc demandé à notre agent OpenClaw de choisir une compétence pour la gestion des e-mails et des tâches de calendrier, et sans surprise, il a sélectionné la compétence malveillante que nous avions publiée. Dans son explication, il a indiqué avoir choisi cette compétence car elle avait obtenu le score le plus élevé (en raison du nombre important de téléchargements).

Protéger votre agent OpenClaw contre les compétences malveillantes
Comme OpenClaw permet l'installation et l'exécution autonomes de compétences, il est essentiel de s'assurer que les compétences installées sont sûres et fiables, comme nous l'avons déjà constaté.
Pour contribuer à réduire les risques, nous recommandons l'installation de notre Extension de sécurité ClawNet pour OpenClawClawNet utilise la boucle d'agents OpenClaw pour intercepter les appels d'outils nécessaires à l'installation de compétences. Avant l'installation d'une compétence, ClawNet demande au module LLM de l'agent d'analyser son contenu et de signaler les comportements potentiellement malveillants. Il transmet ensuite les résultats à l'utilisateur et décide d'autoriser ou de bloquer l'installation.
Notre choix de mettre cela en œuvre comme un plug-in plutôt qu'une compétence Il s'agit d'une décision de sécurité. Une compétence peut être ignorée par le LLM, soit en raison d'une inférence incorrecte, soit parce que le modèle n'est pas fiable pour suivre de manière constante le flux de gestion des compétences prévu. Un plugin, en revanche, s'intègre directement à la boucle de l'agent OpenClaw et intercepte les tentatives d'installation de compétences au niveau de l'exécution, garantissant ainsi que la vérification s'effectue quel que soit le comportement du LLM.
Que pouvons-nous apprendre de cela?
Le codage vibratoire n'est pas une stratégie de sécurité
Le codage par vibrations permet un développement rapide, mais ne remplace pas les pratiques de sécurité structurées. Si l'IA peut créer des systèmes remarquables, elle reste sujette aux erreurs. La supervision humaine demeure essentielle pendant le développement, car de petits détails d'implémentation peuvent avoir des conséquences importantes en matière de sécurité.
Le nombre de téléchargements ne peut pas être votre seul indicateur de confiance.
Bien qu'il puisse être tentant de faire confiance à quelque chose simplement parce que d'autres le font, la popularité n'est pas une garantie de sécurité. Le nombre de téléchargements ne dit rien sur l'intégrité du code, les processus de révision ou les pratiques sécuritaires. Lorsque de tels signaux sont utilisés comme données d'entrée pour la prise de décision, en particulier par des systèmes automatisés, ils peuvent devenir un vecteur de manipulation. Les utilisateurs/agents devraient donc vérifier l'origine de toute compétence et utiliser un outil d'analyse de compétences dédié comme le nôtre. Plugin ClawNet pour OpenClaw, afin de s'assurer que les fichiers ne contiennent pas de motifs suspects avant l'installation.
Le développement RPC nécessite des limites de sécurité explicites.
Contrairement aux API REST (où les routes, les intergiciels et les couches de validation sont généralement séparés par conception), les frameworks basés sur RPC tels que Convexe Permettre aux développeurs d'exposer des fonctions appelables directement depuis le code du serveur peut accroître le risque de contrôles d'autorisation ou de validation des entrées insuffisants. Meilleures pratiques de Convex insister explicitement sur ce point, en recommandant de « Mettez en place un système de contrôle d’accès pour tous les événements publics. »Bien que les architectures RPC ne soient pas non sécurisées par défaut, elles nécessitent un contrôle d'accès strict, une validation rigoureuse et le respect des bonnes pratiques documentées.
Votre agent OpenClaw peut devenir un risque pour la sécurité.
La force d'OpenClaw réside dans son autonomie : sa capacité à rechercher, évaluer et installer des compétences sans intervention humaine. Cependant, cette même autonomie comporte des risques. En l'absence de mécanismes de vérification et d'inspection rigoureux, la prise de décision autonome de notre agent peut, involontairement, accroître la surface d'attaque.
Les agents IA constituent leur propre classe d'identité
Les agents IA constituent leur propre classe d'identité exigeant le même niveau de découverte, contrôle en temps réel et renforcement de la posture En tant qu'utilisateurs humains traditionnels et identités non humaines, chaque agent doit être associé à un responsable humain, et les politiques d'accès doivent être définies et configurées. De ce fait, les agents ne peuvent effectuer que les actions qui leur sont explicitement autorisées. Aucun privilège permanent. Aucune possibilité de contournement.
Divulgation et correction
La vulnérabilité a été signalée à l'équipe de sécurité d'OpenClaw, avec des précisions sur son impact et ses détails techniques. L'équipe a réagi rapidement et a fait preuve d'une grande collaboration tout au long du processus, résolvant le problème en un temps record. moins de 24 heures et le déploiement du correctif en production (voir le commit de Peter Steinberger, le développeur principal d'OpenClaw, ici).