CVE-2026-65007
KrytyczneCVSS 9.6Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 18 - wyżej niż 18% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Organizacja ryzykuje, że każdy użytkownik panelu administracyjnego Grav (nawet o niskich uprawnieniach) może wygenerować klucz API dla konta o wyższych uprawnieniach i przejąć to konto, co może prowadzić do nieautoryzowanego dostępu do danych i funkcji administracyjnych.
Rekomendacja
Należy zaktualizować wtyczkę Grav api do wersji 1.0.8 lub nowszej. Przeglądnąć istniejące klucze API i odwołać nieautoryzowane.
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-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.
- CVE-2026-63408Wysokie
Grav API Plugin przed wersją 1.0.0-rc.16 akceptuje JWT z parametru token w URL na każdej trasie /api/v1, w tym na punktach końcowych zmieniających stan. Żądania URL narażają ważne tokeny dostępu na logi Apache, proxy i CDN, historię przeglądarki i nagłówki Referer, co pozwala osobie z dostępem do tych rekordów na ponowne użycie tokena z uprawnieniami właściciela. Problem został naprawiony w wersji 1.0.0-rc.16.
Oryginalny opis (angielski, źródło NVD)
The Grav api plugin (grav-plugin-api) before 1.0.8 fails to properly authorize API key generation and revocation: the plugin intercepts the apiKeyGenerate/apiKeyRevoke admin tasks before the account-management ACL runs and authorizes the caller on only the admin.login permission (the baseline permission held by every panel user). This allows any user with admin.login to mint a persistent API key bound to any account, and the forged key inherits the target account's API permissions. On installs where an API-enabled account holds broader permissions, this enables account impersonation and privilege escalation up to account takeover.

