Aller au contenu

CVE-2026-6615 : Path Traversal sur TransformerOptimus SuperAGI

SuperAGI est un framework open source conçu pour le développement et le déploiement d’agents IA autonomes. Alors que les organisations déploient de plus en plus de frameworks d’IA agentique connectés à leurs réseaux internes, les vulnérabilités au sein de ces outils présentent une surface d’attaque massive.

La CVE-2026-6615 (CVSS 7.3 - 7.5) expose une faille fondamentale dans le composant de gestion des ressources du framework. La vulnérabilité réside dans le gestionnaire de téléversement multipart (Multipart Upload Handler), spécifiquement dans le fichier superagi/controllers/resources.py. En raison d’une absence totale de nettoyage (sanitization) sur l’argument Name du fichier, un attaquant peut utiliser des séquences de traversée de répertoire (../) pour s’échapper du répertoire de téléchargement prévu. Cela lui permet d’écrire des fichiers arbitraires n’importe où sur le système de fichiers hôte, ouvrant la voie à une RCE immédiate (ex: en écrasant des clés SSH ou des tâches cron).

La vulnérabilité trouve son origine dans la CWE-22 (Limitation incorrecte d’un chemin d’accès à un répertoire restreint).

Lorsqu’un utilisateur ou un agent téléverse un fichier vers le gestionnaire de ressources de SuperAGI, la requête HTTP POST est acheminée vers le point de terminaison /api/resources/add/<id>. Le code Python en arrière-plan dans superagi/controllers/resources.py extrait le nom du fichier depuis les données du formulaire multipart et l’utilise directement dans les opérations du système de fichiers, sans le passer par une fonction de nettoyage sécurisée (comme werkzeug.utils.secure_filename ou os.path.basename).

En interceptant la requête HTTP et en modifiant le paramètre filename pour y inclure des charges utiles de traversée (ex: ../../../../../etc/cron.d/malicious), l’attaquant force l’application Python à résoudre le chemin par rapport au répertoire racine, entraînant une écriture de fichier arbitraire avec les privilèges du processus SuperAGI.

La complexité de l’attaque est faible et un exploit peut être réalisé à l’aide de proxys web standards (comme Burp Suite).

  1. Identification de la cible : l’attaquant accède à l’interface web du gestionnaire de ressources SuperAGI ou interagit directement avec l’API.
  2. Préparation de la charge : l’attaquant génère une clé publique SSH (qui servira de contenu pour la charge utile).
  3. Interception : l’attaquant téléverse un fichier .txt standard mais intercepte la requête POST vers /api/resources/add/<id>.
  4. Manipulation du chemin : l’attaquant modifie le paramètre filename dans le corps multipart pour : ../../../../../../../../../../../home/<user>/.ssh/authorized_keys.
  5. Écriture de fichier arbitraire : le serveur SuperAGI traite la requête et écrit la clé SSH de l’attaquant dans le fichier authorized_keys de la victime.
  6. Exécution de code à distance : l’attaquant se connecte au serveur via SSH sans mot de passe, obtenant un accès shell complet à la machine hôte.

Puisque cette attaque s’appuie sur le processus Python pour écrire des fichiers, les analystes DFIR doivent se concentrer sur les créations de fichiers inattendues et les requêtes web suspectes.

  • Anomalies du système de fichiers : recherchez des modifications récentes sur des fichiers de configuration hautement sensibles (~/.ssh/authorized_keys, /etc/passwd, /etc/cron.d/*) dont le propriétaire ou le créateur est le compte de service exécutant SuperAGI.
  • Journaux web et API : auditez les journaux du proxy inverse (Nginx/Traefik) ou les journaux de l’application SuperAGI à la recherche de requêtes POST vers /api/resources/add/* contenant des caractères de traversée encodés en URL (ex: %2E%2E%2F).

Déployez la logique de détection suivante pour identifier les tentatives d’exploitation contre le gestionnaire de ressources SuperAGI.

sigma_superagi_arbitrary_write.yaml
title: Écriture de fichier arbitraire SuperAGI (CVE-2026-6615)
id: e4b5c6d7-8f9a-0b1c-2d3e-4f5a6b7c8d9e
status: experimental
description: Détecte le processus Python de SuperAGI écrivant des fichiers dans des répertoires système sensibles (ex: .ssh), indiquant une exploitation réussie par traversée de répertoire.
logsource:
category: file_event
product: linux
detection:
selection:
Image|endswith:
- '/python'
- '/python3'
TargetFilename|contains|any:
- '/.ssh/authorized_keys'
- '/etc/cron.d/'
- '/etc/passwd'
- '/etc/shadow'
condition: selection
level: high
tags:
- attack.initial_access
- attack.t1190
- cve.2026-6615

L’éditeur n’ayant pas publié de correctif officiel pour les versions jusqu’à 0.0.14, les organisations doivent implémenter des contrôles de compensation immédiatement :

  1. Filtrage WAF : déployez des règles strictes de pare-feu d’application web (WAF) pour bloquer les requêtes HTTP entrantes contenant ../ ou %2E%2E%2F dans les limites de formulaires multipart.
  2. Isolation par conteneur : assurez-vous que SuperAGI est déployé dans un conteneur Docker fortement restreint. Montez le système de fichiers hôte en lecture seule (Read-Only) partout où cela est possible, et limitez les privilèges de l’utilisateur du conteneur pour empêcher les écritures dans /root/ ou /etc/.
  3. Correction du code (manuelle) : éditez manuellement superagi/controllers/resources.py pour imposer l’utilisation de werkzeug.utils.secure_filename() sur l’argument Name avant de sauvegarder le fichier sur le disque.