Cloud Metadata SSRF Protection Bypass via IPv6 Resolution
Beschreibung
Die SSRF-Validierung in der GraphQL Asset-Mutation von Craft CMS verwendet `gethostbyname()`, das nur IPv4-Adressen auflöst. Wenn ein Hostname nur AAAA (IPv6)-Einträge hat, gibt die Funktion den Hostnamen-String selbst zurück, wodurch der Blocklistenvergleich immer fehlschlägt und der SSRF-Schutz vollständig umgangen wird. 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)). ## 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 ### Wurzelursache Aus der PHP-Dokumentation: *"Gethostbyname - Holen Sie sich die IPv4-Adresse, die einem bestimmten Internet-Hostnamen entspricht"* Wenn kein IPv4 (A-Record) existiert, gibt `gethostbyname()` den Hostnamen-String unverändert zurück. ### Bypass-Mechanismus `` +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Kein Datensatz existiert | | -> Returns: "fd00-ec2--254.sslip.io" (String, keine IP!) | +------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Blocklist check | | in array("fd00-ec2--254.sslip.io", ['169.254.169.254', ...]) VALIDATIONSPASSE | +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ CREDENTIALS STOLEN | +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
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.