CRITICAL🇬🇧 English

CVE-2026-27886

Strapi: Path Traversal w filtrach relacyjnych umożliwia przejęcie konta admina

CVSS 9.2v4.0pub. 2026-05-14upd. 2026-05-16

Podatność w Strapi (CMS) pozwala nieuwierzytelnionemu atakującemu na odczyt prywatnych pól tabeli administratorów, w tym tokenu resetowania hasła, co umożliwia pełne przejęcie konta administracyjnego bez logowania. Problem dotyczy wersji 4.0.0 do 5.36.x i wynika z niewystarczającej sanityzacji parametrów zapytań filtrujących dane przez pola relacyjne.

Pokaż oryginał (EN)

Strapi is an open source headless content management system. Strapi versions starting in 4.0.0 and prior to 5.37.0 did not sufficiently sanitize query parameters when filtering content via relational fields. An unauthenticated attacker could use the `where` query parameter on any publicly-accessible content-type with an `updatedBy` (or other admin-relation) field to perform a boolean-oracle attack against private fields on the joined `admin_users` table, including the `resetPasswordToken` field. Extracting an admin reset token via this oracle made full administrative account takeover possible without authentication. When a filter such as `where[updatedBy][resetPasswordToken][$startsWith]=a` was applied to a public Content API endpoint, the underlying query generation performed a `LEFT JOIN` against the `admin_users` table and emitted a `WHERE` clause referencing the joined column. The query parameter sanitization layer did not block operator chains that traversed into relational target schemas the caller had no read permission on, allowing the response count to be used as a one-bit oracle on any admin-table field. The patch in version 5.37.0 introduces explicit query-parameter sanitization at the controller and service boundary via three new primitives: `strictParam`, `addQueryParams`, and `addBodyParams`. Operator chains that traverse into restricted relational targets are now rejected before reaching the database.

🤖 Analiza AI
Jak działa

Atakujący wysyła zapytanie GET do publicznie dostępnego endpointu Content API, przekazując parametr `where` wskazujący na pole relacyjne (np. `updatedBy`), a następnie zagnieżdżając w nim odwołanie do prywatnego pola tabeli `admin_users`, np. `where[updatedBy][resetPasswordToken][$startsWith]=a`. Warstwa sanityzacji nie blokowała łańcuchów operatorów przechodzących do schematów docelowych relacji, do których wywołujący nie miał uprawnień odczytu. W rezultacie baza danych wykonywała `LEFT JOIN` na tabeli `admin_users` i emitowała klauzulę `WHERE` odwołującą się do prywatnego pola — liczba zwróconych wyników działała jako jednobitowy wyroczni (boolean-oracle). Powtarzając zapytania z różnymi prefiksami, atakujący mógł metodą brute-force odtworzyć pełną wartość tokenu resetowania hasła i zresetować hasło administratora.

Skutki

Nieuwierzytelniony atakujący może odczytać token resetowania hasła dowolnego konta administratora i dokonać pełnego przejęcia konta administracyjnego (account takeover) bez żadnych poświadczeń.

Mitygacja

Należy zaktualizować Strapi do wersji 5.37.0 lub nowszej. Wersja 5.37.0 wprowadza jawną sanityzację parametrów zapytań na granicy kontrolera i serwisu za pomocą nowych prymitywów `strictParam`, `addQueryParams` oraz `addBodyParams`, które odrzucają łańcuchy operatorów przechodzące do ograniczonych celów relacyjnych przed dotarciem do bazy danych. Jeśli natychmiastowa aktualizacja nie jest możliwa, należy rozważyć ograniczenie dostępu do publicznych endpointów Content API na poziomie firewall lub reverse proxy.

Kogo dotyczy

Strapi w wersjach od 4.0.0 do (ale nie włącznie) 5.37.0

Uwagi

Podatność jest możliwa do wyeksploatowania wyłącznie wtedy, gdy przynajmniej jeden typ treści (content-type) jest publicznie dostępny (bez uwierzytelnienia) i posiada pole relacyjne do tabeli administratorów, np. wbudowane pole `updatedBy`. Szczegóły techniczne opublikowano w ramach GitHub Security Advisory GHSA-rjg2-95x7-8qmx.

CVSS Vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:H/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
  • Strapi

    APP
    Strapi
    4.0.0 – 5.37.0 (bez)
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
Tagi
Auth BypassPath Traversal
CWE
Referencje

Powiązane podatności

CVE-2026-22599CRITICAL9.3PL ✓ten sam produkt

SQL Injection w Strapi Content-Type Builder — możliwe RCE i odczyt plików

CVE-2022-27263CRITICAL9.8ten sam produkt

An arbitrary file upload vulnerability in the file upload module of Strapi v4.1.5 allows attackers to execute ...

CVE-2020-27664CRITICAL9.8ten sam produkt

admin/src/containers/InputModalStepperProvider/index.js in Strapi before 3.2.5 has unwanted /proxy?url= functi...

CVE-2019-18818CRITICAL9.8ten sam produkt

strapi before 3.0.0-beta.17.5 mishandles password resets within packages/strapi-admin/controllers/Auth.js and ...

CVE-2024-56143HIGH8.2ten sam produkt

Strapi is an open-source headless content management system. In versions from 5.0.0 to before 5.5.2, the looku...

CVE-2026-27886 — Strapi: Path Traversal w filtrach relacyjnych umożliwia przejęcie konta admina — CRITICAL 9.2 | CVEbaza.pl