„`html
Zusammenfassung
Das Grav API Plugin (getgrav/grav-plugin-api) in Versionen vor 1.0.3 enthält eine kritische Sicherheitslücke in der Datei-Upload-Validierung. Die Schwachstelle ermöglicht authentifizierten Benutzern mit api.media.write-Berechtigung, gefährliche Dateitypen hochzuladen und dadurch Remote Code Execution (RCE) zu erlangen.
Betroffene Systeme
Alle Installationen des Grav API Plugins vor Version 1.0.3 sind betroffen. Dies umfasst verschiedenste Systeme, die auf dem Open-Source-CMS Grav basieren und das API-Plugin aktiviert haben. Besonders kritisch sind Produktivumgebungen mit Mehrbenutzer-Zugriff.
Technische Details
Die Verwundbarkeit liegt in der Funktion HandlesMediaUploads::validateFileExtension(). Diese prüft nur die finale Dateiendung mittels pathinfo($filename, PATHINFO_EXTENSION). Ein Angreifer kann eine Datei mit doppelter Erweiterung hochladen (z.B. shell.php.jpg). Die Validierung erkennt nur die letzte Erweiterung .jpg und umgeht damit die Blocklist gefährlicher Dateitypen.
Der Webserver interpretiert die Datei je nach Konfiguration möglicherweise als PHP-Skript und fĂĽhrt dieses aus. Dies ist besonders wahrscheinlich bei Apache-Servern mit AddType– oder .htaccess-Konfigurationen, die mehrere Erweiterungen interpretieren.
Angriffsvoraussetzungen: Der Angreifer benötigt gültigen API-Zugriff mit api.media.write-Berechtigung oder kann diese durch weitere Schwachstellen erlangen.
Empfohlene Massnahmen
- Sofortige Aktualisierung auf Grav API Plugin 1.0.3 oder später durchführen
- API-Zugriffe überprüfen und unnötige
api.media.write-Berechtigungen entziehen - Webserver-Konfiguration prĂĽfen und mehrfache Dateityp-Interpretationen deaktivieren
- Upload-Verzeichnisse aus dem Web-Root auslagern
- Datei-Ausführungsrechte für Upload-Verzeichnisse einschränken
- Logs auf verdächtige Upload-Aktivitäten prüfen
Bewertung
CVSS Score: 8.8 (High) | Die Schwachstelle wird als hochgradig kritisch eingestuft. Bei erfolgreicher Ausnutzung führt sie zu vollständiger Systemkompromittierung. Ein zeitnaher Patch ist erforderlich.
„`