Une faille d’injection rapide dans Vanna AI expose les bases de données aux attaques RCE


Des chercheurs en cybersécurité ont révélé une faille de sécurité de haute gravité dans la bibliothèque Vanna.AI qui pourrait être exploitée pour atteindre une vulnérabilité d’exécution de code à distance via des techniques d’injection rapide.

La vulnérabilité, identifiée comme CVE-2024-5565 (score CVSS : 8,1), concerne un cas d’injection rapide dans la fonction « ask » qui pourrait être exploitée pour tromper la bibliothèque et lui faire exécuter des commandes arbitraires, a déclaré la société de sécurité de la chaîne d’approvisionnement JFrog. dit.

Vanna est un logiciel basé sur Python bibliothèque d’apprentissage automatique qui permet aux utilisateurs de discuter avec leur base de données SQL pour glaner des informations en « posant simplement des questions » (c’est-à-dire des invites) qui sont traduites en une requête SQL équivalente à l’aide d’un grand modèle de langage (LLM).

Le déploiement rapide de modèles d’intelligence artificielle (IA) générative au cours des dernières années a mis en évidence les risques d’exploitation par des acteurs malveillants, qui peuvent transformer les outils en armes en fournissant des informations contradictoires qui contournent les mécanismes de sécurité qui y sont intégrés.

L’une de ces classes d’attaques les plus importantes est l’injection rapide, qui fait référence à un type d’attaque. Jailbreak de l’IA qui peut être utilisé pour ignorer les garde-fous érigés par les fournisseurs de LLM pour empêcher la production de contenus offensants, nuisibles ou illégaux, ou pour exécuter des instructions qui violent l’objectif prévu de l’application.

La cyber-sécurité

De telles attaques peuvent être indirectes, dans lesquelles un système traite des données contrôlées par un tiers (par exemple, des e-mails entrants ou des documents modifiables) pour lancer une charge utile malveillante conduisant à un jailbreak d’IA.

Ils peuvent également prendre la forme de ce qu’on appelle un jailbreak à plusieurs coups ou un jailbreak à plusieurs tours (alias Crescendo) dans lequel l’opérateur « commence par un dialogue inoffensif et oriente progressivement la conversation vers l’objectif interdit ».

Cette approche peut être étendue davantage pour réaliser une autre nouvelle attaque de jailbreak connue sous le nom de Skeleton Key.

« Cette technique de jailbreak IA fonctionne en utilisant une stratégie à plusieurs tours (ou plusieurs étapes) pour amener un modèle à ignorer ses garde-fous », Mark Russinovich, directeur de la technologie de Microsoft Azure, dit. « Une fois les garde-fous ignorés, un modèle ne sera pas en mesure de déterminer les demandes malveillantes ou non autorisées des autres. »

Skeleton Key est également différent de Crescendo dans le sens où une fois le jailbreak réussi et les règles du système modifiées, le modèle peut créer des réponses à des questions qui seraient autrement interdites, quels que soient les risques éthiques et de sécurité impliqués.

« Lorsque le jailbreak Skeleton Key réussit, un modèle reconnaît qu’il a mis à jour ses directives et se conformera ensuite aux instructions pour produire n’importe quel contenu, peu importe à quel point il viole ses directives initiales en matière d’IA responsable », a déclaré Russinovich.

Défaut d’injection rapide

« Contrairement à d’autres jailbreaks comme Crescendo, où les modèles doivent être interrogés sur des tâches indirectement ou avec des encodages, Skeleton Key place les modèles dans un mode où un utilisateur peut directement demander des tâches. De plus, la sortie du modèle semble être totalement non filtrée et révèle l’étendue de les connaissances ou la capacité d’un modèle à produire le contenu demandé.

Les dernières découvertes de JFrog – également divulgué indépendamment par Tong Liu – montrent comment des injections rapides pourraient avoir de graves conséquences, en particulier lorsqu’elles sont liées à l’exécution d’un commandement.

CVE-2024-5565 profite du fait que Vanna facilite la génération texte vers SQL pour créer des requêtes SQL, qui sont ensuite exécutées et présentées graphiquement aux utilisateurs à l’aide de la bibliothèque graphique Plotly.

Ceci est accompli au moyen d’un fonction « demander » – par exemple, vn.ask (« Quels sont les 10 principaux clients en termes de ventes ? ») – qui est l’un des principaux points de terminaison de l’API permettant d’exécuter la génération de requêtes SQL sur la base de données.

La cyber-sécurité

Le comportement susmentionné, associé à la génération dynamique du code Plotly, crée une faille de sécurité qui permet à un acteur malveillant de soumettre une invite spécialement conçue intégrant une commande à exécuter sur le système sous-jacent.

« La bibliothèque Vanna utilise une fonction d’invite pour présenter à l’utilisateur des résultats visualisés. Il est possible de modifier l’invite à l’aide d’une injection d’invite et d’exécuter du code Python arbitraire au lieu du code de visualisation prévu », JFrog dit.

« Plus précisément, autoriser une entrée externe dans la méthode ‘ask’ de la bibliothèque avec ‘visualize’ défini sur True (comportement par défaut) conduit à l’exécution de code à distance. »

Suite à une divulgation responsable, Vanna a émis un guide de durcissement qui avertit les utilisateurs que l’intégration de Plotly pourrait être utilisée pour générer du code Python arbitraire et que les utilisateurs exposant cette fonction doivent le faire dans un environnement sandbox.

« Cette découverte démontre que les risques d’une utilisation généralisée de GenAI/LLM sans une gouvernance et une sécurité appropriées peuvent avoir des implications dramatiques pour les organisations », a déclaré Shachar Menashe, directeur principal de la recherche en sécurité chez JFrog, dans un communiqué.

« Les dangers de l’injection rapide ne sont pas encore largement connus, mais ils sont faciles à mettre en œuvre. Les entreprises ne devraient pas s’appuyer sur la pré-invite comme mécanisme de défense infaillible et devraient utiliser des mécanismes plus robustes lors de l’interface des LLM avec des ressources critiques telles que des bases de données ou des ressources dynamiques. génération de code. »

Vous avez trouvé cet article intéressant ? Suivez-nous sur Twitter et LinkedIn pour lire plus de contenu exclusif que nous publions.





ttn-fr-57