
Erkennen, ob eine Strapi-Instanz anfällig für CVE-2026-27886 ist (unauthenticated boolean-oracle Exfiltration von Administrator-Geheimnissen).
Erkennen Sie sicher, ob eine Strapi-Instanz anfällig für CVE-2026-27886 ist, ohne die vollständige Account-Übernahme-Kette durchzuführen. Siehe den vollständigen Bericht im Bishop Fox Blog.
CVE-2026-27886 ist eine nicht authentifizierte Umgehung der Parameterbereinigung in Strapi-Versionen 4.0.0 bis 5.36.1, die es entfernten, nicht authentifizierten Angreifern ermöglicht, Administratorgeheimnisse über die öffentliche Content-API preiszugeben. Der Query-Sanitizer des Frameworks in @strapi/utils verarbeitet nur die dokumentierten Query-Schlüssel filters, sort, fields und populate und bewahrt stillschweigend jeden anderen Top-Level-Schlüssel der Anfrage auf. Die unbekannten Schlüssel werden dann durch transformQueryParams weitergeleitet und landen in strapi.db.query(...) als SQL-WHERE-Klausel. Durch Abfragen von where[updatedBy][resetPasswordToken][$startsWith]=<prefix> gegen eine beliebige öffentliche Content-API-Sammlung kann ein Angreifer Administratorgeheimnisse Zeichen für Zeichen über das meta.pagination.total-Feld der Antwort preisgeben.
Dieses Tool führt nicht-destruktive Schwachstellentests durch:
GET /api/<collection>-AnfrageGET-Anfrage mit angehängtem ?where[id][$lt]=-1meta.pagination.total-Werte, um festzustellen, ob die where-Klausel die Datenbankebene erreicht hatDas Prädikat where[id][$lt]=-1 kann keinen realen Datensatz treffen. Wenn die Klausel auf der Datenbankebene berücksichtigt wird, fällt die Antwort auf null Zeilen zurück. Wenn der Patch vorhanden ist, wird der unbekannte where-Schlüssel von der Zulassungsliste des Sanitizers entfernt, bevor die Abfrage erstellt wird, und die Antwort ist identisch mit der Basis. Der Test berührt niemals private Admin-Spalten und ändert niemals Daten.
where-Klausel auf der Datenbankebene berücksichtigt wurde.sanitizeQuery alle nicht erkannten Top-Level-Schlüssel entfernt, bevor sie die Datenbank erreichen.UNENTSCHIEDEN-Ergebnis.Auf einem anfälligen Server listet das Tool dann die E-Mail-Adresse des Administrators Zeichen für Zeichen über where[updatedBy][email][$startsWith]=<prefix> auf. Es führt keine Kette zur Account-Übernahme des Administrators durch.
git clone https://github.com/BishopFox/CVE-2026-27886-check
cd CVE-2026-27886-check
Keine externen Abhängigkeiten. Der Scanner verwendet nur Module aus der Python-Standardbibliothek.
Testen Sie einen öffentlichen Content-API-Sammlungsendpunkt eines Strapi-Servers. Strapi ordnet den pluralName des Inhaltstyps dem URL-Pfad zu, daher variiert der genaue Name je nach Bereitstellung.
python3 CVE-2026-27886-check.py <ENDPUNKT>
$ python3 CVE-2026-27886-check.py http://target.example.com/api/articles
[+] Target: http://target.example.com/api/articles
[+] Differential confirmed: baseline total=1, where-test total=0 -> VULNERABLE
[+] Enumerating admin email
admin email = [email protected]
[+] Done. To remediate, upgrade to Strapi 5.37.0 or later.
$ python3 CVE-2026-27886-check.py http://target.example.com/api/articles
[+] Target: http://target.example.com/api/articles
[+] Differential check: baseline total=1, where-test total=1 -> NOT VULNERABLE
Das Tool kann die Schwachstelle nur erkennen, wenn die folgenden Bedingungen erfüllt sind:
find für mindestens einen Inhaltstyp gewährtupdated_by_idWenn eine Bedingung nicht erfüllt ist, meldet das Tool ein UNENTSCHIEDEN-Ergebnis.
Dieser Code wird unter einer MIT-Lizenz verteilt.
Die Verwendung dieses Tools zum Angriff auf Ziele ohne vorherige gegenseitige Zustimmung ist illegal. Es liegt in der Verantwortung des Endbenutzers, alle geltenden lokalen, staatlichen und bundesstaatlichen Gesetze einzuhalten. Die Entwickler übernehmen keine Haftung und sind nicht verantwortlich für Missbrauch oder Schäden, die durch dieses Programm verursacht werden.