CVE-2026-62668
KrytyczneCVSS 9.4Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 39 - wyżej niż 39% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Atakujący z odpowiednimi uprawnieniami może uzyskać dostęp do lokalnych plików, wewnętrznych usług lub metadanych chmury, co może prowadzić do wycieku wrażliwych danych lub eskalacji uprawnień.
Rekomendacja
Zaktualizuj Grav API Plugin do wersji 1.0.6 lub nowszej.
Inne podatności w Grav API Plugin
Zobacz wszystkie- 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.
- 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)
Grav API Plugin is a RESTful API for Grav CMS that provides full headless access to your site's content. Prior to 1.0.6, the Grav API plugin WebhookController.php accepts webhook URLs after only FILTER_VALIDATE_URL syntax validation, and WebhookDispatcher.php initializes cURL without CURLOPT_PROTOCOLS or CURLOPT_REDIR_PROTOCOLS restrictions. An account with api.webhooks.write can submit file, dict, gopher, private-network, or link-local targets, retrieve local files and delivery response bodies, and pivot requests to internal services or cloud metadata endpoints. This issue is fixed in version 1.0.6.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

