CVE-2026-86197
ŚrednieCVSS 5.1Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 17 - wyżej niż 17% wszystkich znanych CVE
Streszczenie
Grav przed wersją 2.0.20 zawiera podatność na cross-site scripting w polityce sandboxa Twig, która zezwala na metody addJs i addCss w Grav\Common\Assets bez odpowiedniego escapowania wyjścia. Edytorzy stron mogą wstrzykiwać dowolny skrypt poprzez rejestrowanie złośliwych zasobów lub wstrzykiwanie atrybutów, które są renderowane bez escapowania w tagach head dokumentu i wykonywane dla wszystkich odwiedzających, w tym administratorów.
Ocena ryzyka
Ryzyko obejmuje przejęcie sesji administratorów, kradzież danych, modyfikację treści strony oraz rozprzestrzenianie złośliwego oprogramowania wśród odwiedzających.
Rekomendacja
Zaktualizuj Grav do wersji 2.0.20 lub nowszej. Dodatkowo ogranicz uprawnienia edytorów stron i regularnie audytuj treści pod kątem złośliwych zasobów.
Inne podatności w Grav
Zobacz wszystkie- CVE-2026-61455Średnie
Grav przed wersją 2.0.1 zawiera podatność na bombę dekompresyjną w metodzie ZipArchiver::extract(), która nie ogranicza rozmiaru po dekompresji, liczby plików ani głębokości zagnieżdżenia. Atakujący może dostarczyć spreparowane archiwum ZIP, które po rozpakowaniu wypełnia całe dostępne miejsce na dysku, powodując odmowę usługi poprzez wyczerpanie zasobów pamięci masowej.
- CVE-2026-61450Średnie
Grav przed wersją 2.0.2 zawiera obejście sandboksa Twig, które pozwala autorowi strony (każdemu użytkownikowi z uprawnieniami admin.pages lub osobie mogącej pisać do katalogu user/pages) na wyciek sekretów konfiguracyjnych. Mimo że sandboks zastępuje zmienną 'config' okrojoną fasadą i usuwa metody Config::get/toArray z listy dozwolonych, surowy kontener pozostaje dostępny przez dozwoloną metodę grav.offsetGet('config'), która zwraca oryginalny obiekt Config. Dozwolone filtry dumpowania obiektów (json_encode, print_r, yaml_encode) serializują ten obiekt na poziomie PHP bez wywoływania bramki metod sandboksa, ujawniając pełne drzewo konfiguracji, w tym sekrety wtyczek, takie jak dane uwierzytelniające SMTP, klucze API i dane uwierzytelniające bazy danych wtyczek.
- CVE-2026-58657Średnie
Grav przed wersją 2.0.0 (aż do 2.0.0-rc.9 i gałęzi 2.0) zawiera podatność na przechowywane wstrzykiwanie CSS w akcji mediów Markdown image resize(). Wcześniejsze zabezpieczenia odrzucają bezpośrednie ładunki ?style= i niebezpieczne funkcje fallback, ale akcja resize() w Excerpts::processMediaActions() zapisuje wartości kontrolowane przez wywołującego bezpośrednio do atrybutu styleAttributes obrazu. Redaktor treści z niższymi uprawnieniami, który może edytować Markdown strony, może przechowywać spreparowany URL obrazu z deklaracjami CSS oddzielonymi średnikami w parametrach resize, które są renderowane w końcowym atrybucie <img style=...> gdy recenzent/admin z wyższymi uprawnieniami przegląda stronę lub podgląd.
- CVE-2026-56701Średnie
Grav przed wersją 2.0.0-beta.2 zawiera podatność na wstrzykiwanie zewnętrznych jednostek XML (XXE) w procesie przesyłania plików SVG, co pozwala uwierzytelnionym atakującym na odczyt dowolnych plików. Aplikacja używa funkcji simplexml_load_string bez wyłączenia ładowania zewnętrznych jednostek, co umożliwia atakującym wstrzykiwanie ładunków XXE za pomocą złośliwych plików SVG.
- CVE-2026-44738Wysokie
Grav to platforma internetowa oparta na plikach. W wersjach przed 2.0.0-rc.2, lista dozwolonych działań w sandboxie Twig pozwalała każdemu użytkownikowi z rolą admin.pages na wywołanie config.toArray() w treści strony, co skutkowało wyświetleniem całej zintegrowanej konfiguracji witryny, w tym tajemnic pluginów.
- CVE-2026-42611Wysokie
Grav to platforma internetowa oparta na plikach. Przed wersją 2.0.0-beta.2, użytkownik o niskich uprawnieniach mógł wprowadzić element svg, co prowadziło do ataku XSS, który mógł być eskalowany do zrzutu informacji systemowych dostępnych w /admin/config/info, gdy Super Admin odwiedzał stronę.
- CVE-2026-75837Krytyczne
Grav przed wersją 2.0.14 nie zabezpiecza pola access w podstawowym blueprint grupy wymaganym ograniczeniem security@: admin.super. Delegowany operator admin.users może zapisać grupę z access[admin][super]=true, aby eskalować do super-admina, uzyskując możliwości planowania i ewaluacji Twig.
- CVE-2026-65008Krytyczne
Grav 2.0.4 (poprawiony w 2.0.7) zawiera podatność na zdalne wykonanie kodu w funkcji Blueprint::dynamicData(). Funkcja ta przekazuje ciąg znaków wywołania metody klasy i jej argumenty bezpośrednio do call_user_func_array() bez żadnej listy dozwolonych wartości. Ponieważ wtyczka formularza kieruje frontmatter stron przez tę ścieżkę, uwierzytelnione konto z uprawnieniami admin.pages (lub api.pages.write) może umieścić złośliwą dyrektywę wywołania na stronie. Polecenie wykonuje się jako użytkownik serwera WWW, gdy ktokolwiek – w tym nieuwierzytelniony gość – uzyska dostęp do strony.
- CVE-2025-66844Krytyczne
W grav przed wersją 1.7.49.5, wektor SSRF (Server-Side Request Forgery) może być wyzwolony przez szablony Twig, gdy treść strony jest przetwarzana przez Twig, a konfiguracja pozwala na rejestrację niezdefiniowanych funkcji PHP.
- CVE-2025-66301Krytyczne
Grav to platforma webowa oparta na plikach. Przed wersją 1.8.0-beta.27, z powodu niewłaściwych kontroli autoryzacji przy modyfikowaniu krytycznych pól w żądaniu POST do /admin/pages/{page_name}, edytor z uprawnieniami tylko do zmiany podstawowej treści formularza może zmienić działanie formularza poprzez modyfikację zawartości data[_json][header][form], czyli YAML frontmatter, który zawiera sekcję process określającą, co dzieje się po wysłaniu formularza, w tym ważne akcje mogące prowadzić do dalszych podatności. Podatność naprawiona w wersji 1.8.0-beta.27.
Oryginalny opis (angielski, źródło NVD)
Grav before 2.0.20 contains a cross-site scripting vulnerability in the Twig sandbox policy that allowlists addJs and addCss methods on Grav\Common\Assets without proper output escaping. Page editors can inject arbitrary script by registering malicious assets or injecting attributes, which are rendered unescaped into document head tags and executed for all visitors including administrators.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

