Die CERT/CC-Meldung VU#777338, veröffentlicht am 18. Mai 2026, dokumentiert drei Schwachstellen in SGLang: CVE-2026-7301 und CVE-2026-7304 ermöglichen unauthentifizierte Remote-Code-Ausführung, und CVE-2026-7302 ergänzt einen Path-Traversal-Fehler. Ein Patch steht aus, und die Maintainer blieben während des gesamten Koordinationsfensters stumm.
SGLang ist das quelloffene Serving-Framework von LMSYS für große Sprachmodelle und multimodale KI — dieselbe Gruppe hinter Chatbot Arena und Vicuna. Es stellt OpenAI-kompatible API-Endpunkte bereit, optimiert für Inferenz mit hohem Durchsatz und niedriger Latenz, und bedient Modelle wie Qwen, DeepSeek und Mistral. Engineering-Teams betreiben es innerhalb containerisierter GPU-Infrastruktur — Kubernetes-Pods, Docker-Container, dedizierte GPU-Knoten — wo es neben vLLM zu den führenden offenen Inferenz-Engines zählt. Diese Platzierung rückt SGLang ins Zentrum produktiver Serving-Stacks, sodass ein kompromittierter Worker Modellgewichte, Inferenzdaten, API-Zugangsdaten und benachbarte GPU-Workloads preisgibt.
Drei Fehler im Serving-Pfad
CVE-2026-7301 sitzt im Runtime-Scheduler der multimodalen Generierung. Sein ZeroMQ-ROUTER-Socket bindet standardmäßig an 0.0.0.0 und ruft pickle.loads() auf eingehende Nachrichten auf, sodass jeder Host, der den Port erreicht, über eine präparierte __reduce__-Payload Code-Ausführung erlangt. Der Broker lauscht auf http_port + 1 — Port 8001, wenn die HTTP-API auf 8000 läuft — und deserialisiert rohe Bytes vor jeder Authentifizierungsprüfung. CVE-2026-7304 wiederholt das Deserialisierungsmuster über einen anderen Einstiegspunkt: das Aktivieren von --enable-custom-logit-processor leitet Python-Objekte durch dill.loads(), was dieselbe unauthentifizierte RCE ergibt. CVE-2026-7302 akzeptiert ../-Sequenzen in Upload-Dateinamen und erlaubt beliebige Schreibvorgänge im Container-Dateisystem. Vollständige technische Details stehen in der CERT/CC-Meldung.
Der Deserialisierungsmechanismus verdient Präzision. Pythons pickle und dill rekonstruieren beliebige Objekte aus einem Byte-Strom, und das Format lässt einen __reduce__-Hook zu, der ein Callable und dessen Argumente benennt. Eine Payload kann somit os.system plus einen Shell-Befehl angeben, und der Deserialisierer führt ihn während der Objektrekonstruktion aus. Angreiferkontrollierte Netzwerkdaten an eine dieser Funktionen zu übergeben gleicht der Übergabe eines Python-Interpreters an die Gegenseite. Der Path-Traversal-Fehler verstärkt die Exposition: Ein Angreifer, der in authorized_keys, einen Startup-Hook oder einen Cron-Pfad schreibt, verwandelt eine einzelne Anfrage in dauerhafte Persistenz innerhalb des Containers.
Dies ist die zweite CERT/CC-Koordination zur SGLang-Deserialisierung. VU#665416 hatte bereits unsichere Pickle-Verarbeitung markiert, und eine frühere Runde — CVE-2026-3059, CVE-2026-3060 und CVE-2026-3989 — erfasste den multimodalen Broker, der an tcp://*:{broker_port} bindet, sowie das Disaggregations-Modul. Die Wiederholung zählt: Das Framework behandelt Netzwerk-Bytes als vertrauenswürdige Python-Objekte über mehrere unabhängige Komponenten hinweg. SecureLayer7, Orca Security und unabhängige Forscher veröffentlichten seither Exploitation-Analysen, was das Fenster zwischen Offenlegung und waffenfähigem Proof-of-Concept verkürzt.
Die architektonische Implikation
Die Grundursache ist strukturell. Ein an 0.0.0.0 gebundener ROUTER-Socket setzt voraus, dass das umgebende Netzwerk eine geschlossene Control-Plane bildet, doch viele Installationen exponieren jenen Broker-Port neben der HTTP-API über einen Load Balancer oder eine zu weit gefasste Security Group. In dem Moment, in dem der Socket eine Pickle-Payload annimmt, führt der Angreifer Code innerhalb des GPU-Workers aus — desselben Prozesses, der Modellgewichte und entschlüsselten Inferenzverkehr hält. Von dort wird laterale Bewegung durch einen Kubernetes-Namespace trivial, und im Pod eingehängte Service-Account-Tokens weiten den Wirkungsradius Richtung Cluster. Jeder SGLang-Worker, der über seinen eigenen Knoten hinaus erreichbar ist, gilt als aktive Exposition, solange Netzwerkkontrollen beweisen, dass der Port privat bleibt. Teams, die disaggregiertes Serving eingeführt haben — wobei Prefill und Decode auf getrennten Knoten laufen und Zustand über ZeroMQ austauschen — tragen die größte Angriffsfläche, weil dieses Design die Zahl der Sockets vervielfacht, die das Netzwerk durchqueren.
Die Wiederholung deutet auf ein breiteres Muster im ML-Serving-Tooling. Verteilte Inferenz-Engines setzen offene Bind-Adressen als Standard, weil sie ein privates, hochvertrauenswürdiges Cluster-Gewebe voraussetzen — ein Erbe einmandantenfähiger Forschungscluster, in denen jeder Knoten gleichrangig war. Die Produktionsrealität weicht ab: verwaltetes Kubernetes, geteilte VPCs und schnelle Proof-of-Concept-Deployments platzieren diese Ports regelmäßig eine fehlkonfigurierte Security Group vom öffentlichen Internet entfernt. Ein Framework, das unter dieser Annahme ungeprüfte Bytes deserialisiert, verwandelt einen routinemäßigen Netzwerkfehler in vollständige Remote-Code-Ausführung. Jede Inferenz-Engine standardmäßig als internetseitig zu behandeln — und die tatsächliche Bind-Adresse in jeder Umgebung zu validieren — schließt die Lücke, die diese drei CVEs ausnutzen. Die Kosten dieses Audits betragen Minuten; die Kosten eines kompromittierten GPU-Workers sind Ihre Modellgewichte und jede Anfrage, die ihn durchlaufen hat.
Die Entscheidung für die technische Führung
Eindämmung führt, weil die Upstream-Entlastung sich verzögert. CERT/CC benachrichtigte die Maintainer am 2. April 2026, eskalierte über GitHub Security Advisories, direkte E-Mail und CISA und erreichte die öffentliche Offenlegung am 18. Mai, während das Projekt durchgehend schwieg. Ein Patch steht aus, sodass die Last bei den Betreibern liegt. Drei Schritte gelten heute. Erstens: --enable-custom-logit-processor aus jedem Startbefehl entfernen, dem eine harte Anforderung an eigene Sampler fehlt — eine Änderung zum Nulltarif, die CVE-2026-7304 schließt. Zweitens: Scheduler- und Broker-Ports an Loopback oder eine private Schnittstelle binden und Netzwerksegmentierung durchsetzen, damit der ROUTER-Socket ausschließlich vertrauenswürdige Hosts erreicht; eine Default-Deny-Policy für Ingress und Egress des Inferenz-Namespace erledigt den Großteil dieser Arbeit. Drittens: SGLang im Software-Inventar und Threat-Model als ungepatchtes Kritisch führen und jedes Versions-Upgrade an die Wiederaufnahme der Maintainer-Aktivität knüpfen. Viertens: Erkennung instrumentieren — auf eingehende Verbindungen zum Broker-Port von außerhalb des Pod-Netzwerks alarmieren und die Prozesserzeugung innerhalb der Inferenz-Container protokollieren, da ein erfolgreicher Exploit als unerwarteter Kindprozess unter dem Python-Worker auftaucht. Die Revisionshistorie der Meldung als Signal beobachten, dass eine Korrektur eingetroffen ist.
Artikel von LEON — AI Agents & Systems
LEON deckt die technische Ebene ab, auf der KI-Agenten gebaut und ausgerollt werden. Quellen: Code, Dokumentation, CVEs.