En bref

  • CVE-2026-47835 (CVSS 8.6) : injection SQL dans le filtrage des métadonnées du vector store Elasticsearch de Spring AI — contournement de l'isolation des données entre utilisateurs/tenants dans les architectures RAG
  • Versions affectées : Spring AI 1.0.x avant 1.0.9 et 1.1.x avant 1.1.8
  • Action urgente : mettre à jour vers Spring AI 1.0.9+ ou 1.1.8+ ; auditer les applications RAG et d'IA générative construites sur Spring AI avec Elasticsearch comme vector store

Les faits

Le 15 juin 2026, le CERT-FR a publié l'avis CERTFR-2026-AVI-0751 signalant une vulnérabilité importante dans Spring AI, le framework Java officiel de l'écosystème Spring (VMware/Broadcom) pour l'intégration de l'intelligence artificielle dans les applications d'entreprise. CVE-2026-47835 est une vulnérabilité d'injection SQL (SQLi) de type CWE-943 (Improper Neutralization of Special Elements in Data Query Logic) affectant le composant de filtrage des métadonnées des vector stores dans l'implémentation Elasticsearch. Son score CVSSv3.1 est de 8.6 selon le vecteur AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:L/A:L, ce qui la classe en vulnérabilité de sévérité élevée avec un impact systémique sur la confidentialité des données d'IA.

Spring AI est le framework officiel Spring pour la construction d'applications d'intelligence artificielle en Java : il fournit des abstractions pour interagir avec des modèles de langage (LLM) via des APIs standardisées, gérer des pipelines de génération augmentée par récupération (RAG), traiter des vecteurs d'embeddings et orchestrer des chaînes d'agents IA. Son adoption a connu une croissance exponentielle depuis 2024, devenant le standard de facto pour les développements IA en environnement Java d'entreprise. Les vector stores — bases de données spécialisées dans le stockage et la recherche par similarité de vecteurs d'embeddings — constituent le composant central des architectures RAG, permettant aux applications IA de retrouver des documents contextuellement pertinents pour enrichir les réponses des LLMs.

La root cause de CVE-2026-47835 réside dans l'absence de neutralisation correcte des caractères spéciaux dans les paramètres de filtre de métadonnées du composant ElasticsearchVectorStore de Spring AI. Lorsqu'une application utilise Spring AI pour interroger un index Elasticsearch de vecteurs avec des filtres de métadonnées — par exemple, pour restreindre la recherche vectorielle aux documents appartenant à un utilisateur ou tenant spécifique — les valeurs de ces paramètres ne sont pas correctement assainies avant leur intégration dans la requête Elasticsearch DSL (Domain Specific Language). Un attaquant capable de contrôler les valeurs des paramètres de filtre peut injecter des métadonnées malveillantes qui modifient la logique de la requête Elasticsearch, contournant les restrictions de filtrage et accédant à des données appartenant à d'autres utilisateurs ou partitions du vector store.

Cette vulnérabilité est particulièrement préoccupante dans le contexte des architectures RAG multi-tenant. Dans un système RAG typique, les embeddings de documents confidentiels — contrats clients, données médicales, propriété intellectuelle, informations financières — sont indexés dans le vector store Elasticsearch avec des métadonnées d'appartenance (user_id, tenant_id, project_id) servant à segmenter les données entre différents utilisateurs ou clients d'une application SaaS. CVE-2026-47835 permet à un attaquant de contourner cette segmentation en forgeant des paramètres de filtre malveillants, accédant aux embeddings et aux chunks de texte associés d'autres utilisateurs. Dans un système RAG connecté à un LLM, l'attaquant peut ensuite obtenir une synthèse des informations confidentielles d'autres clients de l'application IA via le modèle de langage.

Le vecteur CVSS AV:N confirme l'exploitabilité réseau sans accès physique. Le sous-score PR:N (aucun privilège d'infrastructure requis) indique que l'attaquant n'a pas besoin de privilèges système — bien qu'en pratique, il doive disposer d'un compte utilisateur de l'application (ce qui est précisément le scénario d'un attaquant inscrit à une plateforme SaaS IA multi-tenant). Le scope S:C (Changed) reflète que l'impact dépasse le composant vulnérable : les données d'autres tenants dans le même cluster Elasticsearch sont exposées, touchant des parties du système non directement contrôlées par l'attaquant.

Les versions affectées de Spring AI sont les branches 1.0.x avant 1.0.9 et 1.1.x avant 1.1.8. Spring AI 1.0 (première version stable du framework) a été publiée en 2025 et constitue la base de la majorité des déploiements Spring AI en production. Spring AI 1.1.x représente la branche de développement actuelle adoptée par les nouvelles implémentations. Les correctifs sont intégrés dans Spring AI 1.0.9 et 1.1.8, publiés les 12 et 13 juin 2026 respectivement. La correction consiste en l'assainissement des caractères spéciaux dans les paramètres de filtre Elasticsearch avant leur intégration dans les requêtes DSL, et en l'ajout d'une validation stricte des expressions de filtre contre un schéma défini. D'après l'advisory Spring AI Security 2026-06-12, seule l'implémentation ElasticsearchVectorStore est concernée — les autres vector stores Spring AI (Pinecone, Chroma, Weaviate, Qdrant, pgVector, Redis, Milvus, OpenSearch) utilisent des mécanismes de filtrage différents et ne partagent pas cette root cause.

La divulgation de CVE-2026-47835 illustre une tendance émergente en sécurité applicative : la convergence entre les vulnérabilités classiques de type injection et les nouvelles architectures IA. Le projet OWASP Top 10 for LLM Applications, dans sa révision 2025, identifie les failles de contrôle d'accès dans les systèmes RAG comme une menace prioritaire pour les applications IA d'entreprise sous l'entrée "LLM10 : Excessive Agency" et "LLM02 : Insecure Output Handling". CVE-2026-47835 représente une concrétisation de ces risques théoriques : une vulnérabilité d'injection classique (SQLi/query injection) dans un composant IA expose des données confidentielles de multiples parties prenantes via le mécanisme de récupération RAG. Les chercheurs en sécurité IA anticipent d'autres vulnérabilités similaires dans les frameworks d'intégration IA (LangChain4j, Semantic Kernel, LlamaIndex) à mesure que ces technologies mûrissent et font l'objet d'audits de sécurité approfondis.

Selon l'avis CERTFR-2026-AVI-0751, l'impact principal de CVE-2026-47835 porte sur la contournement des politiques de sécurité et la divulgation d'informations confidentielles. Aucune exploitation active n'a été confirmée à la date de publication du bulletin CERT-FR. Toutefois, la nature de la faille — exploitable par tout utilisateur applicatif pouvant contrôler les paramètres de filtre de recherche vectorielle — la rend accessible sans compétence technique avancée. Des outils de fuzzing d'API courants peuvent découvrir et exploiter ce type d'injection en interrogeant les endpoints de recherche vectorielle de l'application avec des métadonnées de filtre contenant des caractères spéciaux Elasticsearch (guillemets, wildcards, opérateurs booléens).

Impact et exposition

Les organisations utilisant Spring AI avec Elasticsearch comme vector store dans des applications multi-tenant ou multi-utilisateurs sont directement exposées. Les plateformes SaaS IA, les chatbots d'entreprise avec RAG, les assistants documentaires, et les moteurs de recherche sémantique construits sur Spring AI + Elasticsearch sont les cibles prioritaires. L'exploitation permet à un utilisateur de l'application d'accéder aux données vectorielles d'autres utilisateurs ou tenants, violant l'isolation des données et potentiellement les obligations RGPD et NIS2 en matière de confidentialité.

Dans les architectures RAG traitant des données sensibles — dossiers médicaux, documents juridiques confidentiels, données financières, propriété intellectuelle — l'impact peut être considérable. La violation de l'isolation tenant-to-tenant dans un système RAG multi-tenant est équivalente à une fuite de données inter-clients, avec les conséquences légales (notifications RGPD sous 72h à la CNIL), réglementaires (NIS2, secteurs financier et santé) et réputationnelles correspondantes. Pour les organisations opérant sous NIS2 ou dans des secteurs régulés (santé, finance), CVE-2026-47835 crée une obligation de notification si des données personnelles ont pu être exposées.

La surface d'exposition est d'autant plus large que Spring AI est adopté dans des contextes cloud-native où les applications sont exposées directement sur Internet. Les APIs de recherche vectorielle utilisées par les interfaces conversationnelles (chatbots, assistants) sont par nature accessibles à de nombreux utilisateurs, augmentant mécaniquement le risque d'exploitation opportuniste par un utilisateur malveillant au sein d'une plateforme SaaS.

Recommandations immédiates

  • Mettre à jour Spring AI vers la version 1.0.9 ou supérieure (branche 1.0.x) ou vers 1.1.8 ou supérieure (branche 1.1.x) — Spring AI Security Advisory 2026-06-12
  • Vérifier que toutes les dépendances spring-ai-elasticsearch-store dans les projets Maven/Gradle utilisent la version corrigée : mvn dependency:tree | grep spring-ai-elasticsearch
  • Auditer les journaux d'accès Elasticsearch pour détecter des requêtes avec des patterns de filtrage inhabituels (caractères spéciaux dans les champs de métadonnées) susceptibles d'indiquer une tentative d'exploitation
  • Implémenter des contrôles d'accès additionnels au niveau Elasticsearch (index-level security, field-level security) en couche de défense en profondeur, indépendamment du filtrage applicatif Spring AI
  • Effectuer un audit de l'isolation des données dans les vector stores : vérifier que les filtres de métadonnées ne constituent pas le seul mécanisme de contrôle d'accès aux données vectorielles, et envisager une architecture avec des index Elasticsearch séparés par tenant pour une isolation forte

⚠️ Urgence

CVE-2026-47835 (CVSS 8.6) compromet l'isolation des données entre utilisateurs et tenants dans les vector stores Elasticsearch de Spring AI. Toute application RAG multi-tenant ou multi-utilisateurs basée sur Spring AI avec Elasticsearch est potentiellement exposée à une violation de confidentialité des données. La mise à jour vers 1.0.9+ ou 1.1.8+ est impérative, en particulier pour les applications traitant des données personnelles soumises au RGPD ou à des réglementations sectorielles.

Comment savoir si je suis vulnérable ?

Vérifiez la présence de la dépendance spring-ai-elasticsearch-store dans votre pom.xml avec la commande mvn dependency:tree | grep spring-ai-elasticsearch. Si la version est inférieure à 1.0.9 (branche 1.0.x) ou à 1.1.8 (branche 1.1.x), vous êtes vulnérable à CVE-2026-47835. Pour confirmer l'exposition, vérifiez que votre application utilise des filtres de métadonnées sur le vector store Elasticsearch (présence de FilterExpressionConverter ou de filtres dans les appels à ElasticsearchVectorStore.similaritySearch()). Si votre application est multi-tenant et s'appuie sur ces filtres pour l'isolation des données entre utilisateurs, la vulnérabilité est directement exploitable. Examinez vos journaux Elasticsearch sur les 30 derniers jours pour identifier des requêtes avec des caractères spéciaux dans les champs de métadonnées.

Vos applications d'IA sont-elles sécurisées ?

Ayi NEDJIMI réalise des audits de sécurité spécialisés pour les applications d'intelligence artificielle, les architectures RAG et les pipelines LLM en environnement d'entreprise.

Demander un audit IA