SGLang - CVE-2026-5760

Date de publication :

Il s'agit d'une vulnérabilité dans l'endpoint de reranking (/v1/rerank) de SGLang.

SGLang est un framework open source Python destiné au service de modèles de langage de grande taille (LLM) et de modèles multimodaux. Il expose des API compatibles OpenAI et prend en charge des modèles tels que Qwen, DeepSeek ou Mistral.

La fonction _get_jinja_env() dans serving_rerank.py instancie un environnement Jinja2 via jinja2.Environment() sans sandboxing. Un attaquant construit un fichier modèle GGUF malveillant dont le champ tokenizer.chat_template embarque un payload SSTI Jinja2. Ce payload intègre une phrase déclenchante spécifique au détecteur Qwen3 pour activer le chemin de code vulnérable. Lorsque la victime charge ce modèle et qu'une requête atteint /v1/rerank, le template est rendu sans restriction, ce qui provoque l'exécution de code Python arbitraire sur le serveur d'inférence.

Elle permet à un attaquant distant non authentifié d'exécuter des commandes arbitraires avec les droits du processus SGLang, de compromettre l'hôte, d'exfiltrer des données et de pivoter vers le réseau interne.

Informations

La faille est activement exploitée : Non

Un correctif existe : Non

Une mesure de contournement existe : Oui

Risques

•   Exécution de code arbitraire (à distance)
•   Atteinte à la confidentialité des données
•   Atteinte à l'intégrité des données

Exploitation

La vulnérabilité exploitée est du type
CWE-94 : Improper Control of Generation of Code ('Code Injection')

Détails sur l'exploitation
•   Vecteur d'attaque : Réseau
•   Complexité de l'attaque : Faible
•   Privilèges nécessaires pour réaliser l'attaque : Aucun
•   Interaction d'un utilisateur ayant accès au produit est-elle nécessaire : Non
•   L'exploitation de la faille permet d'obtenir des droits privilégiés : Oui

Preuve de concept
Une preuve de concept est disponible en sources ouvertes.

Systèmes ou composants affectés

SGLang version 0.5.9 et antérieures

Contournement provisoire

•   Remplacer jinja2.Environment() par ImmutableSandboxedEnvironment dans serving_rerank.py pour bloquer l'exécution de code arbitraire lors du rendu des templates
•   Isoler l'accès réseau à l'endpoint /v1/rerank et ne pas charger de modèles issus de sources non maîtrisées

Solutions ou recommandations

 Aucun correctif disponible à ce jour.