Une alerte de gravité maximale a été publiée contre ash_ai, l’extension IA du framework Elixir Ash. La faille se situe dans la manière dont un prompt est transformé en texte : le contenu du prompt est transmis à EEx, le moteur de templates d’Elixir, puis évalué. Tout ce qui se trouve entre les marqueurs d’interpolation EEx n’est donc pas des données — c’est du code source Elixir, exécuté sur le serveur.

Pourquoi le score est de 10.0

Parce que le chemin vulnérable est celui qui est documenté. Le schéma concerné correspond à la manière ordinaire dont l’action de prompt de la bibliothèque est écrite, si bien qu’un déploiement classique est exposé sans rien faire d’inhabituel. Si une partie du prompt est assemblée à partir d’une entrée utilisateur — un message de chat, une requête de recherche, un ticket de support, un nom de fichier — cette entrée atteint un évaluateur de code. Le résultat est une exécution de code à distance non authentifiée, sans aucun privilège requis.

Le détail qui contourne toutes les défenses de la couche IA

L’évaluation a lieu pendant la construction de la chaîne du prompt — avant l’envoi de la requête à un modèle. Les filtres de prompt injection, le renforcement du system prompt, la modération des sorties, les listes blanches d’appels d’outils et les étapes d’approbation humaine opèrent au niveau du modèle ou après celui-ci. Tous se situent en aval de la ligne vulnérable. Il ne s’agit pas d’un bug de prompt injection qu’un contrôle d’alignement pourrait détecter ; c’est une injection de template qui se trouve simplement dans un prompt, et la pile IA autour est sans pertinence.

Ce que le cadrage courant comprend mal

« Corrigé dans 1.0.0 » ressemble à une instruction de mise à niveau de routine. Ce n’en est pas une. 1.0.0 est une version majeure dont les notes s’ouvrent sur un changement rompu — un déplacement de dépendance vers l’optionnel — et il n’existe pas de correctif rétroporté sur la ligne précédente. La remédiation d’un CVSS 10.0 passe donc par une migration vers une version majeure, exactement le genre de mise à niveau qu’une équipe planifie plutôt qu’elle n’applique. La gravité de l’alerte dit ce soir ; la forme de la version dit prochain sprint.

Le schéma qu’il faut nommer

Les moteurs de templates intégrés à la construction des prompts deviennent courants, parce que les prompts sont des chaînes contenant des variables et qu’un moteur de templates est l’outil évident. Le piège, c’est que les moteurs de templates généralistes ont été conçus pour rendre du balisage généré par du code pour des auteurs de confiance, et non pour interpoler des entrées d’exécution non fiables. Partout où du texte utilisateur alimente un template qui prend en charge l’évaluation d’expressions, la même catégorie de bug est possible, quel que soit le langage.