Cloud Metadata SSRF Protection Bypass via DNS Rebinding
Beschreibung
## Zusammenfassung Die SSRF-Validierung in der GraphQL Asset-Mutation von Craft CMS führt die DNS-Auflösung **separat** von der HTTP-Anfrage aus. Diese Time-of-Check-Time-of-Use-Schwachstelle (TOCTOU) ermöglicht DNS-Rebinding-Angriffe, bei denen der DNS-Server eines Angreifers im Vergleich zur tatsächlichen Anforderung unterschiedliche IP-Adressen zur Validierung zurückgibt. Dies ist eine Umgehung der Sicherheitskorrektur für CVE-2025-68437 ([GHSA-x27p-wfqw-hfcc](https://github.com/craftcms/cms/security/advisories/GHSA-x27p-wfqw-hfcc)), die den Zugriff auf alle blockierten IPs ermöglicht, nicht nur auf IPv6-Endpunkte. ## Schweregrad-Umfahrung von Cloud-Metadaten SSRF-Schutz für alle blockierten IPs ## Erforderliche Berechtigungen Exploitation erfordert GraphQL-Schemaberechtigungen für: - Bearbeiten von Assets im ``-Volume - Erstellen von Assets im ``-Volume Diese Berechtigungen können gewährt werden: - Authentifizierte Benutzer mit entsprechendem GraphQL-Schemazugriff - Öffentliches Schema (falls mit Schreibberechtigungen falsch konfiguriert) - ## Technische Details ### Vulnerable Code Flow Der Code unter `src/gql/resolvers/mutations/Asset.php` führt zwei separate DNS-Lookups aus: ```php // VALIDATION PHASE: First DNS resolution at time T1 private function validateHostname(string $url): bool {$hostname = parse url($url, PHP URL HOST); $ip = gethostbyname($hostname); // DNS Lookup #1 - Returns safe IP if (in array($ip, ['169.254.169.170.2', // AWS ECS Metadaten '169.25.200', // Alibaba Cloud '192.0.0.192', // Oracle Cloud ]) { return false; // Check passs - IP looks safe } return true; } // ... time gap between validation and request ... REQUEST PHASE: Second DNS resolution at time T2 (inside Guzzle) $response = $client->get($url); // 2. **Request**: Guzzles interne DNS-Auflösung via libcurl Ein Angreifer, der einen DNS-Server steuert, kann für jede Abfrage verschiedene IPs zurückgeben. ### Bypass-Mechanismus `` +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- CREDENTIALS STOLEN | +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Rebinding DNS Rebinding ermöglicht den Zugriff auf alle blockierten IPs: | Target | Rebind To | Impact | |------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Quellen & weiterführende Informationen
Hier werden ausschließlich tatsächlich zu dieser Schwachstelle gespeicherte Quellenbelege angezeigt.
Was ist zur Behebung zu tun?
Auf eine behobene Version aktualisieren: 5.8.23, 4.16.19.
Empfohlene Schritte
- Betroffene Systeme identifizieren: Pixel & Tonic Craft CMS.
- Exposition prüfen: Internet-Erreichbarkeit, Admin-Oberflächen, VPN, Mail- oder Webdienste.
- Update/Rollout auf behobene Version vorbereiten und priorisiert einspielen.
- Nacharbeiten dokumentieren: betroffene Assets, Maßnahme, Zeitpunkt, Restrestrisiko.
Übergangsmaßnahmen
- Zugriff auf betroffene Dienste auf vertrauenswürdige Netze einschränken.
- WAF/IDS/EDR-Regeln und Hersteller-IOCs aktivieren, sofern verfügbar.
- Nicht benötigte Funktionen, Plugins oder Dienste temporär deaktivieren.
- Administrative Zugänge besonders absichern: MFA, Passwortrotation, Session-Invalidierung.