Der beliebte PHP Framework Laravel ist in den Versionen zwischen 11.9.0 und 11.35.1 von zwei kritischen Reflected Cross-Site Scripting (XSS)-Schwachstellen betroffen. Beide Schwachstellen treten im Debug-Modus (APP_DEBUG=true) auf, wenn ein HTTP-Fehler (5XX) generiert wird. Dabei werden entweder Route-Parameter oder Request-Parameter unzureichend encoded und direkt in die Fehlerseite eingebettet, was es Angreifern ermöglicht, schadhaften JavaScript-Code in den Browser des Benutzers einzuschleusen.
1. Laravel Reflected XSS via Route Parameter in Debug-Mode Error Page
- Identifier: SBA-ADV-20241209-02
- Typ: Cross-Site Scripting
- Betroffene Versionen: 11.9.0 bis 11.35.1
- Behoben in Version: 11.36.0
- CVE-ID: CVE-2024-13919
- CVSS Score: 8.0 (High)
- Beschreibung:
Im Debug-Modus wird bei Fehlern (HTTP-Fehler 5XX) eine Fehlerseite generiert, die Details über die Anfrage enthält. Hierbei werden Route-Parameter, die über die URL übermittelt werden, ohne ausreichende HTML-Encoding in das HTML eingebettet. Ein Beispiel zeigt, wie unsicher eingebettete Werte mittels der Blade-Syntax{!! … !!}
direkt in die Seite integriert werden. - Proof of Concept:
Ein vorbereiteter Link wiehttp://localhost:8000/poc-route/%3Cimg%20src=''%20onerror='alert(1)'%3E
löst eine Division-by-Zero aus, was zu einem 500-Fehler führt. Die generierte Fehlerseite enthält das<img>
-Tag ohne Encoding, wodurch der Browser das Tag interpretiert und das JavaScript ausführt. - Empfohlene Gegenmaßnahmen:
- Upgrade auf Version 11.36.0 oder höher
- In Produktionsumgebungen den Debug-Modus deaktivieren (APP_DEBUG=false)
2. Laravel Reflected XSS via Request Parameter in Debug-Mode Error Page
- Identifier: SBA-ADV-20241209-01
- Typ: Cross-Site Scripting
- Betroffene Versionen: 11.9.0 bis 11.35.1
- Behoben in Version: 11.36.0
- CVE-ID: CVE-2024-13918
- CVSS Score: 8.0 (High)
- Beschreibung:
Auch hier wird im Debug-Modus eine Fehlerseite angezeigt, wenn ein HTTP-Fehler (5XX) auftritt. Im Unterschied zum ersten Fall werden jedoch Request-Parameter (sowohl aus der URL als auch aus dem Request-Body) ohne ausreichende Encodierung eingebettet. Der entsprechende Code-Snippet zeigt, wie Daten mittels{!! $exception->requestBody() ?: 'No body data' !!}
in das HTML integriert werden, ohne die üblichen Sicherheitsvorkehrungen zu nutzen. - Proof of Concept:
Ein Angreifer kann durch den Aufruf des Linkshttp://localhost:8000/poc-url?payload=<script>alert(1)</script>
einen Fehler provozieren. Die generierte Fehlerseite zeigt den unsicher eingebetteten Request-Parameterpayload
, der vom Browser als HTML interpretiert und somit das eingebettete JavaScript (alert(1)
) ausführt. - Empfohlene Gegenmaßnahmen:
- Upgrade auf Version 11.36.0 oder höher
- Sicherstellen, dass in Produktionsumgebungen der Debug-Modus deaktiviert ist (APP_DEBUG=false)
Professionelle Hilfe erwünscht?
Sentiguard ist spezialisiert auf Notfallhilfe nach Cyberattacken, IT Sicherheitsbeauftragte und IT Sicherheitskonzepte nach BSI Standard. Haben Sie Fragen und wünschen Sie unverbindliche Beratung, dann melden Sie sich gerne bei uns: