CVE-2026-61452
ŚrednieCVSS 5.3Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 9 - wyżej niż 9% wszystkich znanych CVE
Streszczenie
Wtyczka Grav API (getgrav/grav-plugin-api) przed wersją 2.0.4 zawiera podatność polegającą na nieprawidłowym unieważnianiu sesji. Tokeny JWT są wydawane bez identyfikatora jti (JWT ID), co uniemożliwia ich odwołanie po stronie serwera.
Ocena ryzyka
Atakujący, który przechwycił token dostępu, może zachować pełny dostęp do API przez cały okres jego ważności (domyślnie 1 godzina), nawet po wylogowaniu, zmianie hasła, wydaniu nowego tokena lub dezaktywacji konta ofiary.
Rekomendacja
Należy niezwłocznie zaktualizować wtyczkę Grav API do wersji 2.0.4 lub nowszej, która usuwa tę podatność.
Inne podatności w Grav API plugin
Zobacz wszystkie- CVE-2026-61456Średnie
Wtyczka Grav API przed wersją 1.0.3 nie oczyszcza plików SVG przesyłanych przez endpoint POST /api/v1/media. Metoda processUploadedFile() sprawdza tylko rozszerzenie pliku, nie wywołując Security::sanitizeSVG(), co pozwala uwierzytelnionemu atakującemu z uprawnieniem api.media.write na przesłanie SVG z dowolnym kodem JavaScript. Plik jest przechowywany bez zmian i serwowany z Content-Type: image/svg+xml; gdy administrator otworzy go w przeglądarce, osadzony skrypt wykonuje się w kontekście jego sesji, umożliwiając kradzież ciasteczek i przejęcie sesji.
- CVE-2026-58656Wysokie
Wtyczka Grav API przed wersją 1.0.0-rc.16 akceptuje tokeny JWT w parametrze URL ?token= i odpowiada nagłówkiem Access-Control-Allow-Origin: *, co pozwala nieuwierzytelnionym atakującym na wykonywanie w pełni uwierzytelnionych żądań API z dowolnej złośliwej strony. Atakujący, którzy zdobędą wyciekły token JWT z logów dostępu, logów proxy, historii przeglądarki lub nagłówków Referrer, mogą utworzyć trwałe konta super-admina i wykraść wrażliwe dane konfiguracyjne oraz użytkowników.
- CVE-2026-42843Wysokie
Wtyczka Grav API to RESTful API dla Grav CMS, które umożliwia pełny dostęp do treści, mediów, konfiguracji i zarządzania użytkownikami. W wersjach przed 1.0.0-beta.15 występuje luka związana z niebezpiecznym bezpośrednim odniesieniem do obiektu oraz błędem logicznym, co pozwala uwierzytelnionym użytkownikom na modyfikację swoich uprawnień.
- CVE-2026-62668Krytyczne
Podatność w Grav API Plugin (wtyczka do Grav CMS) przed wersją 1.0.6. WebhookController.php akceptuje adresy URL webhooków po tylko składniowej walidacji FILTER_VALIDATE_URL, a WebhookDispatcher.php inicjalizuje cURL bez ograniczeń CURLOPT_PROTOCOLS lub CURLOPT_REDIR_PROTOCOLS. Konto z uprawnieniami api.webhooks.write może wysyłać żądania do plików, dict, gopher, sieci prywatnych lub link-local, pobierać lokalne pliki i odpowiedzi, a także przekierowywać żądania do wewnętrznych usług lub endpointów metadanych chmury. Problem naprawiono w wersji 1.0.6.
- CVE-2026-65007Krytyczne
Wtyczka Grav api (grav-plugin-api) przed wersją 1.0.8 nieprawidłowo autoryzuje generowanie i odwoływanie kluczy API. Przechwytuje zadania administracyjne apiKeyGenerate/apiKeyRevoke przed wykonaniem ACL zarządzania kontami i autoryzuje wywołującego tylko na podstawie uprawnienia admin.login (podstawowe uprawnienie posiadane przez każdego użytkownika panelu). Umożliwia to każdemu użytkownikowi z admin.login wygenerowanie trwałego klucza API powiązanego z dowolnym kontem, a sfałszowany klucz dziedziczy uprawnienia API konta docelowego. W instalacjach, gdzie konto z włączonym API ma szersze uprawnienia, umożliwia to podszywanie się pod konto i eskalację uprawnień aż do przejęcia konta.
- CVE-2026-61451Krytyczne
Wtyczka Grav API (grav-plugin-api) przed wersją 1.0.4 nie weryfikuje pochodzenia pola admin_base_url w punkcie końcowym POST /api/v1/auth/forgot-password. Funkcja sanitizeHttpUrl() sprawdza tylko schemat URL (http/https), ale nie sprawdza hosta względem własnego serwera, co pozwala atakującemu na podstawienie dowolnego hosta. Nieuwierzytelniony atakujący może spowodować, że e-mail resetujący hasło wysłany do ofiary będzie zawierał link prowadzący do serwera kontrolowanego przez atakującego; gdy ofiara kliknie link, prawidłowy token resetujący zostaje ujawniony atakującemu, co umożliwia pełne przejęcie konta.
- CVE-2026-86196Wysokie
Wtyczka Grav API przed wersją 1.0.20 buduje linki do resetowania hasła z niezaufanego nagłówka Host w punkcie końcowym forgot-password, co pozwala nieuwierzytelnionym atakującym przekierować tokeny resetowania do domen kontrolowanych przez atakującego. Atakujący mogą wysyłać żądania resetowania hasła dla dowolnego konta ze złośliwym nagłówkiem Host, przechwycić token resetowania z wiadomości e-mail ofiary i przejąć konto, w tym konta super-admina.
- CVE-2026-80204Średnie
Plugin Grav API (getgrav/grav-plugin-api) przed wersją 1.0.18 nie egzekwuje ograniczeń zakresu klucza API w funkcji injectSecurityTab() klasy BlueprintController. Osoba posiadająca klucz API z ograniczonym zakresem może zobaczyć i potencjalnie edytować pola uprawnień strony poza przyznanym zakresem.
- CVE-2026-56708Średnie
Wtyczka Grav API przed wersją 1.0.16 zawiera podatność na podrabianie żądań po stronie serwera (SSRF) w dostarczaniu webhooków, która pozwala atakującym ominąć walidację nazwy hosta przez ponowne wiązanie DNS. Atakujący kontrolujący autorytatywny DNS dla skonfigurowanej nazwy hosta webhooka mogą odpowiadać na zapytania walidacyjne publicznymi adresami, a na zapytania dostarczania prywatnymi adresami, aby dotrzeć do wewnętrznych zasobów sieciowych.
- CVE-2026-64852Wysokie
Grav API Plugin przed wersją 1.0.8 przechwytuje zadania administracyjne apiKeyGenerate i apiKeyRevoke w user/plugins/api/api.php i autoryzuje wywołującego tylko przez admin.login. Podstawowy użytkownik panelu może wybrać inne konto z trasy, utworzyć trwałe poświadczenie ApiKeyManager powiązane z tym celem i odziedziczyć uprawnienia API celu, w tym api.super lub administracyjny zapis, jeśli są obecne. Problem został naprawiony w wersji 1.0.8.
Oryginalny opis (angielski, źródło NVD)
The Grav API plugin (getgrav/grav-plugin-api) before 2.0.4 contains an improper session invalidation vulnerability where JWT access tokens are issued without a jti (JWT ID) claim and therefore cannot be revoked server-side. Unlike refresh tokens, access tokens remain valid for their full lifetime (default 1 hour) regardless of logout, password change, new token issuance, or account disablement. An attacker who has stolen an access token retains full API access until the token naturally expires.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

