flawopen.com/AI Security/lmcache-multiprocess-pickle-deserialization-cve-2026-105192
CVE-2026-105192: Unauthentifizierte Pickle-Deserialisierung im LMCache-Multiprozessmodus
CVE-2026-105192 ermöglicht einem nicht authentifizierten Gegenüber mit Zugriff auf den LMCache-Multiprozess-Transport eine unsichere Pickle-Deserialisierung. Prüfen Sie die Erreichbarkeit des ZMQ-Endpunkts, beschränken Sie den Zugriff und verfolgen Sie eine Herstellerkorrektur.[1], [2]
LMCache nimmt ein versiegeltes Paket von einem Netzwerkpartner entgegen und öffnet es mit einem Verfahren, das versteckte Anweisungen ausführen kann. Das geschieht, bevor der Server prüft, welchen Nachrichtentyp das Paket vorgibt.[1], [2]
Kernkonzepte & Begriffe
CWE-502: unsichere Deserialisierung- Python-pickle kann beim Wiederherstellen von Objekten Verhalten ausführen und ist für Daten nicht vertrauenswürdiger Netzwerkpartner ungeeignet.[1], [2]
LMCache-Multiprozessmodus- LMCache-Komponenten kommunizieren dabei über ZeroMQ. Der CVE-Eintrag beschreibt einen nicht authentifizierten ROUTER-Endpunkt.[2], [5]
MessagePack-Erweiterung- Ein MessagePack-Erweiterungswert erreicht beim Dekodieren DeviceIPCWrapper.Deserialize, bevor der Anfragetyp ausgewählt wird.[2], [4], [3]
Angriffsfläche- Laut CVE-Eintrag bindet der Transport standardmäßig an localhost. Ein routbares --host oder ein erreichbares Clusternetz ändert die möglichen Absender.[2], [5]
Betroffene Versionen- Die Offenlegung nennt Versionen 0.3.9 bis 0.5.5 einschließlich 0.5.6-Release-Kandidaten und Entwicklungszweig (Stand 07.10.2026).[1], [2]
CWE-306: fehlende Authentifizierung für eine kritische Funktion- Der CVE-Datensatz ordnet auch
CWE-306zu, weil der ZeroMQ-ROUTER seine Peers nicht authentifiziert. Das ist eine separate Schwäche an der Transportgrenze, unabhängig von der unsicheren Pickle-Deserialisierung (CWE-502). Eine Gefährdung setzt weiterhin einen erreichbaren Endpunkt voraus; die Standardbindung an localhost ist allein nicht aus dem Netzwerk erreichbar.[2]
Framework-Zuordnungen
Schritt-für-Schritt Angriffsablauf
Einsatzbedingung und Reaktion
| Bedingung | Einschätzung |
|---|---|
| Multiprozessmodus deaktiviert | Dieser CVE-Pfad ist nicht aktiv. |
| Multiprozessmodus nur an Loopback gebunden | Netzwerkpartner sollten den Endpunkt nicht erreichen; Host-Netzwerk und lokale Vertrauensgrenzen prüfen. |
| Routbare Bindung oder offener Cluster-Port | Als möglicherweise erreichbar behandeln, Zugriff beschränken und Prozessrechte prüfen. |
| Betroffene Versionen | Die Offenlegung nennt Versionen 0.3.9 bis 0.5.5 einschließlich 0.5.6-Release-Kandidaten und Entwicklungszweig (Stand 07.10.2026). |
Quellcode: Verwundbar vs. Sicher
Der CVE-Program-Eintrag ordnet CVE-2026-105192 JFrog zu und dokumentiert MessagePack-Erweiterung → DeviceIPCWrapper.Deserialize → pickle.loads, die standardmäßige localhost-Bindung, die Option --host und CVSS 9,8. Der Upstream-Code bestätigt den Deserialisierungsaufruf. Der Artikel enthält kein bewaffnetes Pickle und behauptet keine Herstellerkorrektur. Der Endpunkt muss erreichbar sein; die lokale Standardbindung allein macht ihn nicht aus dem Netzwerk erreichbar. Das temporäre Codebeispiel deaktiviert diesen Dekodierungspfad und ist kein direkt einsetzbarer LMCache-Patch; prüfen Sie die Betriebsauswirkung und isolieren Sie das Netz, bis eine unterstützte Korrektur vorliegt.[2], [1], [3], [4], [5]
@staticmethod
def Deserialize(data: bytes) -> DeviceIPCWrapper:
return pickle.loads(data)
@staticmethod
def Deserialize(data: bytes) -> DeviceIPCWrapper:
# Vorübergehende Fail-Closed-Eindämmung, kein Upstream-Patch.
raise PermissionError("LMCache peer deserialization disabled pending vendor fix")
Checkliste für Engineering & Systemsicherheit
- ✓Erfassen Sie LMCache-Installationen und markieren Sie Multiprozess- oder verteilte Modi samt Paket- und Container-Version.[1], [2]
- ✓Prüfen Sie die tatsächliche ZMQ-Bind-Adresse und Netzrouten. Ein privates Netz schützt nicht, wenn nicht vertrauenswürdige Workloads oder Mandanten den Endpunkt erreichen.[2], [5]
- ✓Deaktivieren Sie den Multiprozess-Transport nach Möglichkeit, bis eine Herstellerkorrektur verfügbar ist; bei Einzelhostbetrieb kann Loopback genügen. Bei notwendigem Mehrknotenbetrieb beschränken Sie den Port auf ausdrücklich vertrauenswürdige Gegenstellen. Das reduziert Erreichbarkeit, macht pickle aber nicht sicher. Verlangen Sie bei jeder künftigen routbaren Bereitstellung authentifizierte ZMQ-Gegenstellen (etwa CURVE oder HMAC pro Nachricht) und ersetzen Sie pickle durch ein validiertes reines Datenformat; eine Firewall-Allowlist ist keine Authentifizierung.
- ✓Betreiben Sie den Dienst mit einem eigenen unprivilegierten Konto und entfernen Sie unnötige Container-Fähigkeiten; laut CVE-Eintrag läuft der offizielle Container als root.[2]
- ✓Verfolgen Sie LMCache-Sicherheitsmeldungen und Releases. Aktualisieren Sie nur auf eine Version, die
CVE-2026-105192ausdrücklich behebt; das geprüfte Offenlegungsmaterial nennt keine korrigierte Version.[1], [2] - ✓Suchen Sie nach unerwarteten Verbindungen zum Multiprozess-Port (laut CVE-Eintrag standardmäßig 5555) und untersuchen Sie die Erreichbarkeit, bevor Sie eine Kompromittierung annehmen.[2], [5]
Quellen
- JFrog Security Research: CVE-2026-105192 mechanics and mitigations
- CVE Program record CVE-2026-105192 (JFrog CNA record)
- LMCache upstream: DeviceIPCWrapper deserialization source
- LMCache upstream: MessagePack extension decoding
- LMCache upstream: multiprocess ZeroMQ transport
- The Hacker News: critical LMCache pickle deserialization disclosure