CVE-2026-80204
ŚrednieCVSS 5.4Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 5 - wyżej niż 5% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Podatność może prowadzić do nieautoryzowanej modyfikacji ustawień bezpieczeństwa stron, co może naruszyć integralność i poufność danych.
Rekomendacja
Zaleca się aktualizację pluginu Grav API do wersji 1.0.18 lub nowszej, która zawiera poprawkę.
Inne podatności w Grav API plugin
Zobacz wszystkie- 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-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.
- CVE-2026-63407Wysokie
Grav API Plugin przed wersją 1.0.0-rc.16 w CorsMiddleware zwraca Access-Control-Allow-Origin: * i permisywne odpowiedzi OPTIONS dla uwierzytelnionych punktów końcowych /api/v1. JavaScript z dowolnego pochodzenia może przesłać JWT uzyskany przez atakującego przez nagłówek Authorization lub X-API-Token, odczytać uwierzytelnioną odpowiedź i wykonać operacje zapisu z uprawnieniami właściciela tokena, umożliwiając eksfiltrację danych i modyfikację konta. Problem został naprawiony w wersji 1.0.0-rc.16.
- CVE-2026-62667Wysokie
Wtyczka Grav API przed wersją 1.0.6 zawiera podatność, w której ApiKeyManager::generateKey() przechowuje zadeklarowaną tablicę zakresów, ale ApiKeyAuthenticator::authenticate() nie odczytuje keyData[scopes] i zwraca pełną tożsamość właściciela klucza. W rezultacie AbstractApiController::requirePermission() ocenia pełne ACL użytkownika, więc klucz wydany dla zakresu tylko do odczytu może wykonywać wszystkie operacje zapisu, usuwania i administracyjne dostępne właścicielowi. Problem naprawiono w wersji 1.0.6.
- CVE-2026-62666Wysokie
Wtyczka Grav API przed wersją 1.0.6 zawiera podatność, w której metody UsersController::createApiKey(), generate2fa() i disable2fa() pomijają sprawdzenie celu accessGrantsSuper() używanego w innych endpointach mutacji użytkownika. Konto niebędące superadministratorem z uprawnieniem api.users.write może utworzyć klucz API powiązany z celem access.api.super, uzyskać pełne uprawnienia celu, ponieważ zakresy kluczy nie są egzekwowane, i stworzyć trwały dostęp superadministratora; brakujące sprawdzenie umożliwia również rotację lub wyłączenie uwierzytelniania dwuskładnikowego celu. Problem naprawiono w wersji 1.0.6.
Oryginalny opis (angielski, źródło NVD)
The Grav API plugin (getgrav/grav-plugin-api) before 1.0.18 does not apply the API-key scope cap in the injectSecurityTab() function of BlueprintController when deciding whether a page's security/permissions blueprint section is editable. Because the function performs raw isSuperAdmin()/hasPermission() checks without a request parameter, it cannot enforce scopeAllows(). A caller holding a scoped API key may therefore see (and potentially edit) page permission fields beyond the scope granted to the key. The end-to-end write-time impact was not fully confirmed by the reporter.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

