veilletech.fr
10 sept. Feed du jour
#05 IA Article

L'agent désactive son bac à sable tout seul

Un bac à sable dont on tient l'interrupteur de l'intérieur n'en est pas un.

CVE-2026-82533 (CVSS 9.4) permettait à un agent de code exécuté dans DeepSeek Harness de désactiver son propre bac à sable fichier avec une seule commande shell : l'interface web locale de l'outil se fiait à l'en-tête Host envoyé par le client au lieu de vérifier l'origine de la connexion, et acceptait donc de basculer la session en danger-full-access sans validation. Corrigé depuis la 0.1.2-alpha.2 par un jeton à usage unique échangé contre un cookie signé.

4 min de lectureavancévidéo 1:18
Partager
Sommaire4 sections
  1. Ce qui se passe
  2. Le mécanisme, étape par étape
  3. Ce qu'il faut faire
  4. À retenir

Ce qui se passe

DeepSeek Harness exécute les commandes d'un agent de code dans un bac à sable du système : un agent qui travaille sur des fichiers douteux ne doit pas écrire en dehors de son espace de travail. Jusqu'au correctif du 27 août, l'agent pouvait lever cette limite lui-même, avec une seule commande shell et sans demande de validation.

La faille est suivie sous CVE-2026-82533. VulnCheck, qui a attribué l'identifiant, a publié l'enregistrement le 8 septembre et la note 9,4 sur 10.

Le mécanisme, étape par étape

Trois faits s'empilent, et c'est leur addition qui fait la faille.

Le bac à sable ne couvre que les fichiers. La documentation de la version affectée le dit : sous le réglage par défaut, les écritures restent dans l'espace de travail et les dossiers temporaires, mais « lectures et accès réseau ne sont pas confinés ». L'interface web locale de l'outil est donc joignable depuis l'intérieur du bac à sable — et l'outil fournit lui-même au shell de l'agent l'adresse de cette interface et l'identifiant de la session courante.

L'interface n'avait pas d'authentification. Le contrôle qui décidait si une requête pouvait l'atteindre lisait l'en-tête Host fourni par le client, sans jamais regarder d'où venait la connexion. Un commentaire dans le fichier concerné, api-request-trust.ts, l'annonçait d'ailleurs : ce contrôle « n'est pas une couche d'authentification ».

La demande d'approbation ne se déclenchait pas. Elle n'intervenait que lorsqu'une commande réclamait plus d'accès que la session n'en avait. Or l'appel ne réclamait rien : il modifiait le réglage de la session, en la basculant dans un mode nommé danger-full-access.

SessionInterface weblocaleAgent (dans lebac à sable)Texte piégéSessionInterface weblocaleAgent (dans lebac à sable)Texte piégécontrôle sur Host uniquementaucune vérification d'origineaucune demande d'approbationl'appel ne réclamait pas plus d'accèsinstruction glissée dans unfichier lurequête avec en-tête Hostfalsifiépassage en danger-full-accessécriture hors del'espace de travail

OX Research, qui a signalé la faille, a vérifié le contraste : deux sessions aux mêmes réglages, la même commande. Celle qui avait passé l'appel a écrit hors de son espace de travail, l'autre a été bloquée. La même interface servait aussi le téléchargement de toutes les conversations d'une session, sans clé.

Ce qu'il faut faire

Version Statut Publication
0.1.1-rc.2 et antérieures affectées 0.1.1-rc.2 le 21 août
0.1.2-alpha.1 corrigée, GitHub seulement 27 août, absente de npm
0.1.2-alpha.2 première version corrigée sur npm 30 août
0.1.2-rc.1 version courante sur npm 3 septembre

Installez 0.1.2-alpha.2 ou plus récent. Si vous êtes passé par une surcouche de bureau tierce, vérifiez la version qu'elle embarque : un build Windows a gardé la 0.1.1-rc.2 jusqu'au 6 septembre. À défaut de mise à jour, arrêtez l'interface web quand vous ne l'utilisez pas et supprimez tout tunnel, proxy ou redirection de port qui y mène.

Le correctif donne une identité à l'interface : un jeton à usage unique affiché au démarrage, que le navigateur échange contre un cookie signé exigé à chaque appel. Il ne change rien au bac à sable — dans la 0.1.2-rc.1, lectures et réseau restent non confinés, et le shell de l'agent reçoit toujours l'adresse de l'interface.

À retenir

La leçon dépasse DeepSeek : un service local qui se protège avec une valeur que l'appelant écrit lui-même ne se protège pas. L'en-tête Host est fourni par le client, comme le Referer ou le User-Agent.

Le calendrier mérite d'être lu : deux développeurs avaient décrit publiquement la même évasion sur le forum du projet les 13 et 14 août, dix jours avant le signalement d'OX Research à VulnCheck. Le projet n'a toujours pas de politique de sécurité, et la version corrective range le changement parmi les évolutions de routine, sans avis de sécurité ni référence au CVE.

Le SAFETY.md est explicite : le logiciel n'a pas été audité, et le bac à sable comme les approbations « ne garantissent pas l'isolation ni n'empêchent les dégâts ». VulnCheck crédite Nir Zadok et Moshe Siman Tov Bustan.

Source : DeepSeek Harness Flaw Let AI Agents Disable Their Own File Sandbox