Katalog CVE

CVE-2026-58654

ŚrednieCVSS 4.3
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.26%

Percentyl 17 - wyżej niż 17% wszystkich znanych CVE

Streszczenie

Wtyczka Grav API (getgrav/grav-plugin-api) w wersji 1.0.0 zawiera podatność na nieograniczone przesyłanie plików w punkcie końcowym przesyłania awatara (/api/v1/users/user/avatar). Punkt końcowy weryfikuje tylko typ MIME zadeklarowany przez klienta (getClientMediaType) zaczynający się od 'image/' i nie sprawdza rzeczywistej zawartości pliku ani nie ogranicza wynikowego rozszerzenia, co pozwala uwierzytelnionemu użytkownikowi przechowywać dowolną treść — w tym kod PHP, SVG z osadzonym JavaScriptem oraz ładunki poliglotyczne — w katalogu user/accounts/avatars/ z przewidywalnymi nazwami plików. Bezpośredni dostęp HTTP do przechowywanych plików jest blokowany przez .htaccess (zwraca 403), ale pliki pozostają na dysku i mogą prowadzić do zdalnego wykonania kodu lub trwałego XSS w przypadku wystąpienia błędu path traversal lub błędnej konfiguracji serwera. Podatność została naprawiona w wersji 1.0.1.

Ocena ryzyka

Ryzyko dla organizacji obejmuje możliwość zdalnego wykonania kodu (RCE) lub trwałego ataku XSS, jeśli serwer jest nieprawidłowo skonfigurowany lub istnieje inna podatność typu path traversal. Nawet bez bezpośredniego dostępu HTTP, pliki pozostają na dysku i mogą być wykorzystane w połączeniu z innymi błędami.

Rekomendacja

Zaleca się natychmiastową aktualizację wtyczki Grav API do wersji 1.0.1 lub nowszej. Dodatkowo należy sprawdzić konfigurację serwera pod kątem blokowania dostępu do katalogu user/accounts/avatars/ oraz rozważyć dodanie walidacji zawartości plików po stronie serwera.

Inne podatności w Grav API plugin

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

The Grav API plugin (getgrav/grav-plugin-api) 1.0.0 contains an unrestricted file upload vulnerability in the avatar upload endpoint (/api/v1/users/user/avatar). The endpoint validates only the client-declared MIME type (getClientMediaType) beginning with 'image/' and does not inspect the actual file content or restrict the resulting extension, allowing an authenticated user to store arbitrary content — including PHP code, SVG with embedded JavaScript, and polyglot payloads — under user/accounts/avatars/ with predictable filenames. Direct HTTP access to the stored files is blocked by .htaccess (returns 403), but the files persist on disk and could lead to remote code execution or stored XSS in the presence of a path traversal flaw or server misconfiguration. Fixed in 1.0.1.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS