Wtyczka Grav API (getgrav/grav-plugin-api) w wersjach przed 1.0.0-rc.16 akceptuje tokeny JWT przez parametr URL `?token=`, co powoduje ich utrwalenie w logach serwera, historii przeglądarki i nagłówkach Referer. Wyciek tokenu umożliwia nieuprawniony dostęp do API z uprawnieniami administratora.
▸ Pokaż oryginał (EN)
The Grav API plugin (getgrav/grav-plugin-api) before 1.0.0-rc.16 accepts JWT access tokens through the ?token= URL query parameter on every API route (JwtAuthenticator::extractBearerToken fallback). Because tokens are embedded in URLs, they are logged verbatim in web server access logs, leaked via the Referer header, stored in browser history, and captured by upstream proxy and CDN logs, exposing valid admin access tokens. A leaked token grants unauthorized API access, including reading configuration and user data, creating admin accounts, modifying system settings, and deleting pages.
Mechanizm uwierzytelniania `JwtAuthenticator::extractBearerToken` obsługuje fallback polegający na odczytaniu tokenu dostępowego JWT bezpośrednio z parametru zapytania URL (`?token=`) na każdej trasie API. Ponieważ tokeny są osadzane w adresie URL, są rejestrowane w logach dostępu serwera WWW, przekazywane jako nagłówek Referer przy kliknięciu linków, przechowywane w historii przeglądarki oraz przechwytywane przez proxy i systemy CDN. Atakujący, który uzyska dostęp do któregokolwiek z tych źródeł, może przejąć ważny token administratora.
Atakujący posiadający przechwycony token może uzyskać nieautoryzowany dostęp do API, w tym odczytywać konfigurację systemu i dane użytkowników, tworzyć konta administratorów, modyfikować ustawienia systemowe oraz usuwać strony.
Należy zaktualizować wtyczkę getgrav/grav-plugin-api do wersji 1.0.0-rc.16 lub nowszej. Dodatkowo zaleca się unieważnienie wszystkich wcześniej wystawionych tokenów JWT oraz przegląd logów serwera, proxy i CDN pod kątem ewentualnego wycieku istniejących tokenów.
Wtyczka getgrav/grav-plugin-api w wersjach przed 1.0.0-rc.16
CVSS:4.0/AV:N/AC:L/AT:P/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