Wtyczka Grav API przed wersją v1.0.0-rc.16 akceptuje tokeny JWT przekazywane jako parametr zapytania URL (?token=) i zwraca nagłówek Access-Control-Allow-Origin: *, co umożliwia nieuwierzytelnionym atakującym wykonywanie w pełni uwierzytelnionych żądań API cross-origin z dowolnej złośliwej strony. Podatność jest szczególnie groźna, ponieważ tokeny JWT mogą wyciekać przez logi dostępowe, logi proxy, historię przeglądarki lub nagłówki Referrer.
▸ Pokaż oryginał (EN)
Grav API plugin before v1.0.0-rc.16 accepts JWT tokens via the ?token= URL query parameter and responds with Access-Control-Allow-Origin: *, allowing unauthenticated attackers to make fully authenticated cross-origin API requests from any malicious website. Attackers who obtain a leaked JWT token from access logs, proxy logs, browser history, or Referrer headers can create persistent backdoor super-admin accounts and exfiltrate sensitive configuration and user data.
Mechanizm podatności opiera się na dwóch nakładających się błędach projektowych. Po pierwsze, wtyczka obsługuje tokeny JWT przekazywane bezpośrednio w parametrze URL (?token=), co sprawia, że token jest rejestrowany w logach serwerów, proxy i historii przeglądarki — zwiększając ryzyko jego wycieku. Po drugie, API odpowiada z nagłówkiem Access-Control-Allow-Origin: *, pozwalając dowolnej stronie internetowej na wykonywanie cross-origin żądań uwierzytelnionych przejętym tokenem. Atakujący, który wejdzie w posiadanie takiego tokenu, może z poziomu złośliwej witryny wysyłać autoryzowane żądania API bez żadnych ograniczeń źródłowych.
Atakujący może tworzyć trwałe konta super-administratora (persistent backdoor) oraz eksfiltrować wrażliwe dane konfiguracyjne i dane użytkowników serwisu opartego na Grav. Skutkuje to pełnym przejęciem kontroli nad instancją CMS.
Należy zaktualizować wtyczkę Grav API do wersji v1.0.0-rc.16 lub nowszej. Dodatkowo zaleca się przegląd logów dostępowych i proxy pod kątem ewentualnych wycieków tokenów JWT oraz unieważnienie wszystkich aktywnych tokenów JWT po zastosowaniu aktualizacji. Szczegółowe informacje dostępne są w referencjach producenta (GitHub Security Advisory GHSA-hqm9-5xxw-4qxp).
Grav API plugin w wersjach przed v1.0.0-rc.16
Podatność sklasyfikowana jako CWE-598 (użycie metody GET z wrażliwymi danymi zapytania), powiązana z błędną konfiguracją CORS (wildcard) oraz niebezpiecznym sposobem przekazywania tokenów uwierzytelniających przez parametr URL. Kombinacja obu wad tworzy wektor ataku możliwy do wykorzystania przez złośliwe strony internetowe bez jakiejkolwiek interakcji po stronie serwera docelowego.
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/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