Attaque pilotée par l'IA : un agent LLM exploite une RCE Marimo pour voler une base de données
Un acteur de menace a été observé exploitant un agent de grand modèle linguistique (LLM) pour effectuer des activités post-compromission après avoir exploité un réseau **Marimo** accessible publiquement. La chaîne d'attaque, qui a exploité **CVE-2026-39987**, a entraîné l'exfiltration d'une base de données PostgreSQL interne.
Un acteur de menace inconnu a été observé utilisant un agent de grand modèle linguistique (LLM) pour mener des actions post-compromission après avoir obtenu un accès initial suite à l'exploitation d'un réseau Marimo accessible publiquement à l'aide d'une vulnérabilité récemment divulguée.

« L'attaquant a compromis un notebook Marimo joignable depuis Internet via CVE-2026-39987, a extrait deux identifiants cloud de l'hôte compromis, les a rejoués via un pool de sortie diffusé pour récupérer une clé privée SSH auprès d'**AWS Secrets Manager**, et a utilisé cette clé pour piloter huit courtes sessions SSH contre un serveur bastion SSH en aval », a déclaré **Sysdig** [ici](https://www.sysdig.com/blog/ai-agent-at-the-wheel-how-an-attacker-used-llms-to-move-from-a-cve-to-an-internal-database-in-4-pivots).
« La phase bastion a exfiltré le schéma et le contenu complet d'une base de données PostgreSQL interne en moins de deux minutes. »
### CVE-2026-39987 : Une vulnérabilité RCE critique
**CVE-2026-39987** fait référence à une vulnérabilité critique d'exécution de code à distance pré-authentifiée affectant toutes les versions de Marimo antérieures ou égales à 0.20.4. Elle permet à un attaquant non authentifié d'exécuter des commandes système arbitraires. Le problème a été corrigé dans la version 0.23.0, publiée le mois dernier.
Le défaut de sécurité fait depuis l'objet d'une exploitation active, les acteurs de menace l'utilisant pour lancer des reconnaissances manuelles contre des systèmes honeypot et tenter de récolter des données sensibles.
### L'agent LLM automatise la post-exploitation
La dernière activité documentée par Sysdig suit le même schéma, la principale différence étant qu'un agent LLM a été utilisé pour piloter l'activité post-exploitation. L'incident, selon la société de sécurité cloud, a été enregistré le 10 mai 2026, l'attaquant collectant des identifiants de l'environnement, puis utilisant la clé d'accès AWS récoltée pour effectuer des appels API contre AWS Secrets Manager et récupérer une clé privée SSH.
Quelques minutes plus tard, l'acteur de menace aurait effectué la première authentification SSH sur le serveur bastion SSH en utilisant la clé récupérée, suivie du lancement de huit sessions SSH parallèles contre le serveur en aval pour siphonner une base de données PostgreSQL interne. La chaîne d'attaque de bout en bout a duré un peu plus d'une heure.

### Indicateurs d'implication d'un LLM
Sysdig a déclaré avoir découvert quatre indicateurs qu'un agent LLM était à l'origine de l'activité :
1. L'attaquant a improvisé un dump de base de données sans connaissance préalable du schéma.
2. Un commentaire de planification en langue chinoise, « 看还能做什么 » se traduisant par « Voyons ce que nous pouvons faire d'autre » a fuité directement dans le flux de commandes lors de l'exécution d'une recherche d'identifiants.
« Le nom d'hôte de la base de données était opaque, sans identifiant d'application sur disque et sans dump de schéma pré-établi, pourtant la chaîne a abouti à une table d'identifiants en quelques minutes », a déclaré Sysdig. « L'attaquant n'a plus besoin de voir votre environnement pour y opérer. »
3. Chaque commande est conçue pour la consommation par machine, chaque commande étant séparée par un délimiteur « --- », avec des captures de sortie bornées, la désactivation de la commande « less », et le rejet du flux d'erreurs (stderr) pour minimiser le bruit.
4. Les transferts de valeurs sont obtenus à partir de la sortie d'outils précédents. Autrement dit, la manière dont certaines valeurs, par exemple, les mots de passe de base de données, ont été extraites implique qu'un agent IA alimente sa propre sortie précédente – exécutant une commande `cat` du fichier `~/.pgpass` – dans l'action suivante.
Dans un autre exemple, une commande `cat` pour imprimer le contenu d'un fichier spécifique (`cat ~/.ssh/id_ed25519`) est précédée d'une commande `ls` (`list`) qui passe le même modèle de fichier en entrée (`ls -la ~/.ssh/id_ed25519*`) pour confirmer que la clé SSH existe.
### Implications pour les défenseurs
« Lorsqu'un opérateur scripté construit un playbook par cible et le réutilise, la barre pour ajouter une nouvelle cible est le temps d'ingénierie », a conclu Sysdig. « Cependant, un opérateur agent possède des connaissances générales sur une classe d'applications et compose la chaîne en direct pour mieux s'adapter à sa cible. Ici, la barre devient le budget d'inférence, pas la rédaction du playbook. »
« La propriété pertinente pour le défenseur d'un agent dans la boucle est l'adaptabilité. Un attaquant scripté rencontre un fichier manquant, un schéma inattendu ou un échec d'authentification et soit abandonne, soit utilise un plan de secours codé en dur. Un agent lit la surprise, décide de la prochaine tentative et continue. »
### Recommandations
Pour contrer cette menace, il est recommandé aux utilisateurs de mettre à jour vers la dernière version de Marimo, d'auditer les environnements pour toute instance accessible publiquement, et de faire pivoter les identifiants, les clés API et les clés SSH.