Podatności Grav
73 znanych podatności CVE w Grav, przetłumaczonych i ocenionych.
- CVE-2026-100668Średnie
Grav 2.0.0 do 2.0.24 zawiera lukę w sandboxie Twig, która pozwala na ominięcie zabezpieczeń. Filtr `array` jest dozwolony w sandboxie, ale nie sprawdza listy dozwolonych metod, co umożliwia odczytanie prywatnych danych kontenera DI, w tym pełnej konfiguracji z sekretami (hasła, klucze OAuth, SMTP, Redis, proxy).
- 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-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-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.
- CVE-2026-117604Wysokie
W Grav od wersji 1.7.53.3 do 1.7.53.6 występuje obejście autoryzacji w Debugger::isDebuggerRequestAuthorized(), które pozwala nieuwierzytelnionym odwiedzającym czytać dane profilera /__clockwork/ poprzez mechanizm fallback REMOTE_ADDR dla loopback. Za odwrotnym proxy na tym samym hoście zdalne żądania wyglądają jak loopback, umożliwiając atakującym odczyt zapisanych rekordów, w tym haseł administratorów w postaci jawnej i poświadczeń konfiguracyjnych.
- CVE-2026-116019Wysokie
Grav w wersjach 2.0.15 do 2.2.13 zawiera podatność obejścia listy dozwolonych, która pozwala edytorom stron wywoływać dowolne publiczne metody statyczne poprzez przenoszenie dyrektyw data-*@ z kluczami unset-name@ lub całkowitoliczbowymi. Atakujący z uprawnieniami do edycji stron mogą osadzać spreparowane pola w nadpisaniach formularzy Flex w frontmatterze strony, aby wywołać metody takie jak Folder::delete lub Utils::download, usuwając katalogi, nadpisując pliki lub czytając pliki poza drzewem stron.
- CVE-2026-114660Średnie
Grav od wersji 2.0.0 przed 2.2.5 zawiera lukę w kontroli dostępu w FlexDirectory::dynamicFlexField(), która pozwala autorom stron wywoływać dowolne metody obiektów Flex poprzez dyrektywy flex-*@ w frontmatterze strony. Gdy użytkownik z prawem edycji strony otwiera stronę, dyrektywy wywołujące setStorageKey() i delete() wykonują się w jego sesji, usuwając chronione strony, których żadne z kont nie może usunąć.
- CVE-2026-114657Średnie
Grav w wersjach od 2.0.0 do przed 2.2.5 zawiera podatność ujawnienia informacji, która pozwala autorom stron przechwytywać dane uwierzytelniające HTTP Basic odwiedzających poprzez treść strony Twig. Autorzy mogą wypisać obiekt request Uri, zawierający PHP_AUTH_USER i PHP_AUTH_PW, wewnątrz wbudowanego stylu obrazu tła, aby eksfiltrować dane uwierzytelniające administratorów na zewnętrzny host.
- CVE-2026-112782Wysokie
Grav w wersjach 1.7.53 przed 1.7.53.5 oraz 2.0.0-rc.8 przed 2.2.2 zawiera lukę wyczerpania zasobów pozwalającą anonimowym odwiedzającym obejść limit system.images.max_pixels, gdy włączone jest system.images.url_actions. Atakujący mogą wysyłać akcje forceResize, zoomCrop lub łańcuchowe akcje obrazów z jednowymiarowymi lub procentowymi wartościami, powodując alokację wielogigabajtowych kanw przez GD, wyczerpanie pamięci serwera i niedostępność strony.
- CVE-2026-112781Średnie
W systemie Grav od wersji 2.0.0 przed 2.2.2 redaktorzy stron mogą czytać chronioną konfigurację, dodając dyrektywy config-*@ do formularzy frontmatter stron. Atakujący z uprawnieniami do edycji stron mogą obejść redakcję config_denied_paths w sandboxie Twig i ujawnić security.salt, dane uwierzytelniające wtyczek oraz hasła Redis wszystkim odwiedzającym.
- CVE-2026-112780Wysokie
Grav od wersji 2.0.15 przed 2.2.2 zawiera lukę obejścia listy dozwolonych, pozwalającą edytorom stron wywoływać dowolne publiczne metody statyczne przez zmianę nazw pól formularza Flex z prefiksem replace-name@. Atakujący z uprawnieniami do edycji stron mogą przemycić dyrektywy data-*@ poza sprawdzenie wywoływalności, aby wywołać Folder::delete, Folder::move lub Utils::download, usuwając katalogi, nadpisując pliki lub odczytując pliki.
- CVE-2026-109326Wysokie
Grav przed wersją 2.1.7 zawiera podatność ujawniania informacji, ponieważ dołączone konfiguracje nginx, lighttpd, IIS i Caddy 2 blokują .git tylko w katalogu głównym dokumentu. Nieuwierzytelnieni atakujący mogą żądać zagnieżdżonych repozytoriów, takich jak user/.git, aby pobrać konfigurację Git, refs i obiekty, odtwarzając nieopublikowaną historię lub ujawnione sekrety.
- CVE-2026-109325Wysokie
Grav od wersji 2.0.22 przed 2.1.7 zawiera podatność obejścia uwierzytelnienia w profilerze Clockwork, który ufa wartościom REMOTE_ADDR z pętli zwrotnej. Nieuwierzytelnieni atakujący za pośrednictwem proxy HTTP na tym samym hoście mogą odczytać rekordy profilera ujawniające konfigurację systemu i wtyczek, sekrety, metadane żądań i zapytania.
- CVE-2026-109324Średnie
Grav przed 2.1.7 zawiera podatność na odmowę usługi, która pozwala uwierzytelnionym autorom mediów wyczerpać pamięć poprzez przesyłanie skompresowanych, zbyt dużych obrazów rastrowych. Atakujący mogą odwołać się do transformacji Twig lub Markdown, aby GD lub Imagick zdekodowały pełne źródło bez sprawdzania wymiarów, co pozwala anonimowym żądaniom wielokrotnie powodować niedostępność strony.
- CVE-2026-109315Średnie
Grav od 2.0.22 przed 2.1.7 zawiera podatność na ujawnienie informacji, która pozwala edytorom stron odczytać token debuggera Clockwork, ponieważ lista redakcji sandboxa pomija system.debugger.token. Atakujący mogą wyrenderować token przez Twig napisany przez edytora i dostarczyć go jako X-Clockwork-Auth, aby odczytać rekordy profilera z konfiguracją, metadanymi żądań i zapytaniami do bazy danych.
- CVE-2026-100671Wysokie
Grav to flat-file CMS. W wersjach 2.0.19 do 2.0.24 — oraz w 2.0.0 do 2.0.18 i 1.7.x tylko tam, gdzie Twig treści został jawnie włączony — treść strony autorstwa użytkownika z uprawnieniem tylko do zapisu strony jest renderowana przez sandbox Twig, który zezwala na get_cookie(), zwracający dowolny cookie wysłany z bieżącym żądaniem, w tym cookie sesji odwiedzającego. Grav przechowuje gotowy wynik po Twig w cache treści strony kluczowanym tylko na tożsamości strony i sumie kontrolnej konfiguracji, bez wymiaru sesji, użytkownika czy żądania.
- CVE-2026-100669Wysokie
Grav przed wersją 2.0.25 zawiera przykładowe pliki konfiguracji serwera WWW, w których reguły blokowania dostępu są dopasowywane z uwzględnieniem wielkości liter. W pliku web.config (IIS) każda reguła deny ustawia ignoreCase="false", co pozwala ominąć zabezpieczenia przez zmianę wielkości liter w ścieżce lub rozszerzeniu pliku. Na systemach plików NTFS (niewrażliwych na wielkość liter) nieuwierzytelniony atakujący może uzyskać dostęp do wrażliwych danych, takich jak sekrety konfiguracyjne czy hashe haseł.
- CVE-2026-92917Wysokie
Grav to flat-file CMS. W wersjach 2.0.0-rc.1 do 2.0.21 sandbox treści Twig nie ogranicza filtrów dump i serialize (print_r, vardump, json_encode, yaml_encode, string), ponieważ GravExtension::assertSandboxDumpSafe() sprawdza stan sandboxa bez argumentu Source, przez co zabezpieczenie nigdy się nie uruchamia. Uwierzytelniony użytkownik z prawem edycji stron może wyrenderować {{ config|print_r }} i ujawnić całą scaloną konfigurację Grav, w tym sekrety wtyczek, takie jak dane SMTP, tokeny API, sekrety webhooków i hasła backendu cache.
- CVE-2026-92916Wysokie
W Grav (flat-file CMS) w wersjach 1.7.0–1.7.53.2 oraz 2.0.0–2.0.21, gdy debugger jest włączony (system.debugger.enabled: true, co nie jest ustawieniem domyślnym), endpoint profilera Clockwork pod /__clockwork/ jest dostępny bez uwierzytelnienia. Ponieważ domyślnie censored: false, przechowywane rekordy zawierają surowe ciasteczka sesji, dane logowania w postaci jawnej oraz pełną konfigurację systemu i wtyczek, w tym sekrety operatora. Luka została naprawiona w wersjach 1.7.53.4 i 2.0.22.
- CVE-2025-64059Niskie
Grav 1.7.50.2 pozwala administratorom na wprowadzanie kodu JavaScript poprzez edytor strony głównej. Znaczenie tej podatności dla trwałego XSS jest kwestionowane, ponieważ administratorzy mają już prawo do modyfikacji szablonów, instalacji wtyczek i przesyłania innej wykonywalnej zawartości.
- CVE-2026-86197Średnie
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.
- CVE-2026-85604Wysokie
Grav przed wersją 2.0.18 (dotknięte wersje <= 2.0.17) zawiera podatność na zdalne wykonanie kodu w filtrze sortowania Twig. Funkcja sortFunc w GravExtension.php na sztywno ustawia argument isSandboxed na false, co pozwala na użycie zwykłej nazwy funkcji w sandboxie; lista zabronionych nie obejmuje spl_autoload, która wykonuje include PHP. Uwierzytelniony użytkownik z uprawnieniami tylko do edycji stron (admin.pages lub api.pages.write) może dostarczyć spreparowany payload, co prowadzi do wykonania dowolnego kodu PHP jako użytkownik serwera WWW.
- CVE-2026-85603Średnie
Grav przed wersją 1.10.55 zawiera podatność na przechodzenie poza katalog (path traversal) w akcji Save As wtyczki administracyjnej, która nie waliduje parametru kodu języka. Uwierzytelniony administrator z uprawnieniem admin.pages.create może podać sekwencje przechodzenia w polu POST lang, aby zapisać dowolne pliki .md poza katalogiem stron z treścią kontrolowaną przez atakującego.
- CVE-2026-85598Średnie
Grav w wersjach od 2.0.0 do 2.0.17 nie stosuje wykrywania XSS przy zapisie do stron modułowych, co pozwala uwierzytelnionym edytorom stron na przechowywanie złośliwych ładunków Twig. Atakujący z uprawnieniami do edycji stron mogą tworzyć strony modułowe z złośliwym kodem Twig, który wykonuje się w przeglądarkach odwiedzających, w tym w sesjach administratora.
- CVE-2026-76846Wysokie
Grav przed wersją 2.0.16 zawiera niekompletną domyślną listę blokowania w konfiguracji sandboxa Twig, która nie blokuje dostępu do sekretów konfiguracji systemu. Atakujący z uprawnieniami edycji stron mogą użyć config.get() lub config.toArray() w szablonach Twig, aby pobrać wrażliwe wartości, takie jak system.cache.redis.password, gdy config_access jest włączony.
- CVE-2026-76839Średnie
Grav przed wersją 2.0.16 umożliwia sandboxowanym szablonom Twig dostęp do wrażliwych pól użytkownika poprzez dozwolone metody offsetGet() i offsetexists(), które nie filtrują pól. Atakujący z uprawnieniami do edycji stron może wywołać offsetGet() na obiektach User, aby wyodrębnić zahaszowane hasła i sekrety 2FA, co umożliwia ataki brute-force i obejście uwierzytelniania.
- CVE-2026-72695Wysokie
Grav przed wersją 2.0.16 zawiera podatność na przechodzenie po ścieżkach w MediaUploadTrait::deleteFile(), która pozwala zautentykowanym użytkownikom z uprawnieniami zarządzania mediami na usuwanie dowolnych plików poprzez podanie nazw plików z sekwencjami przechodzenia po katalogach. Metoda waliduje tylko część nazwy pliku (basename), zachowując niezwalidowane ścieżki katalogów zawierające sekwencje ../, które są przekazywane do unlink(), umożliwiając usunięcie plików poza zamierzonym katalogiem przechowywania mediów.
- CVE-2026-56709Wysokie
Grav przed wersją 3.9.2 nie waliduje niezaufanych nagłówków Host w funkcji sendInvitationEmail() podczas konstruowania linków zaproszeń zawierających tokeny. Atakujący mogą manipulować nagłówkiem Host, aby zatruć linki zaproszeń i przekierować użytkowników do domen kontrolowanych przez atakującego, omijając ochronę require_trusted_host, która obejmuje tylko przepływy resetowania hasła.
- CVE-2026-64850Wysokie
Grav przed wersją 2.0.7 zawiera podatność w Blueprint::dynamicData() w system/src/Grav/Common/Data/Blueprint.php, która przekazuje kontrolowany przez edytora dostawcę Class::method i argumenty do call_user_func_array() bez odrzucania niebezpiecznych parametrów wywołania zwrotnego. Konto z uprawnieniem admin.pages lub api.pages.write może użyć Grav\Common\Utils::arrayFilterRecursive() jako trampoliny z system jako wywołaniem zwrotnym, umieścić polecenie we frontmatter strony i wykonać je jako użytkownik serwera WWW podczas przeglądania strony. Problem został naprawiony w wersji 2.0.7.
- CVE-2026-62673Wysokie
Grav przed wersją 2.0.4 zawiera reguły bezpieczeństwa .htaccess, które porównują wzorce katalogów i rozszerzeń plików w sposób rozróżniający wielkość liter, bez flagi [NC]. Na systemach plików nie rozróżniających wielkości liter, nieuwierzytelniony atakujący może użyć wielkich liter, aby ominąć reguły i pobrać pliki z katalogów user/accounts lub user/config, w tym hasze haseł i konfigurację bezpieczeństwa. Problem naprawiono w wersji 2.0.4.
- CVE-2026-62672Średnie
Grav przed wersją 2.0.4 zezwala na użycie filtra i funkcji regex_replace w allowliście, a GravExtension::regexReplace() przekazuje wzorzec kontrolowany przez edytora bezpośrednio do preg_replace(). Przy włączonym security.twig_content.process_enabled, uwierzytelniony edytor strony może opublikować wzorzec powodujący katastrofalne cofanie się, co obciąża CPU PHP i powoduje odmowę usługi dla odwiedzających.
- CVE-2026-61842Średnie
Grav przed wersją 2.0.2 w sandboxie Twig pozwala na użycie grav.offsetGet('config') do uzyskania surowego obiektu konfiguracji oraz na serializację tego obiektu przez json_encode, print_r, yaml_encode i filtry string bez przechodzenia przez GravSecurityPolicy::checkMethodAllowed. Użytkownik z uprawnieniami edytora strony może renderować zawartość sandboxowaną, która ujawnia sekrety konfiguracji pluginów, w tym dane SMTP, klucze API i dane uwierzytelniające baz danych.
- CVE-2026-61690Średnie
Grav przed wersją 2.0.1 w metodzie ZipArchiver::extract() przekazuje archiwa do ZipArchive::extractTo() bez egzekwowania limitów rozmiaru, liczby plików i głębokości zagnieżdżenia z system.gpm.archive. Kod używający Archiver::create('zip') do rozpakowania archiwum kontrolowanego przez atakującego może wyczerpać miejsce na dysku lub inody, czyniąc stronę niedostępną.
- CVE-2026-53654Średnie
Grav przed wersją 3.8.5 w zadaniu twofa_cancel wtyczki Login akceptuje kontrolowane przez klienta pole _redirect bez nonce i pozwala nieuwierzytelnionemu żądaniu ustawić zewnętrzny cel Location (http, https lub protocol-relative). Controller::execute() stosuje to pole, gdy taskTwofa_cancel() nie ustawia przekierowania, a Grav::getRedirectResponse() akceptuje cel przez Uri::isExternal(), umożliwiając phishingowe przekierowania z zaufanego hosta Grav.
- CVE-2026-75834Średnie
Grav przed wersją 2.0.14 zawiera podatność na przechowywany cross-site scripting w funkcji Security::detectXss() (system/src/Grav/Common/Security.php). Wszystkie wzorce wykrywania XSS używają modyfikatora PCRE /u (UTF-8), więc pojedynczy nieprawidłowy bajt UTF-8 w treści strony powoduje, że preg_match() zwraca false dla każdego wzorca, po cichu omijając bramkę bezpieczeństwa XSS przy zapisie (Validation::checkSafety()). Uwierzytelniony atakujący z uprawnieniami do edycji stron (bez uprawnienia security.xss_whitelist) może przechowywać złośliwy JavaScript, który wykonuje się w przeglądarce odwiedzającego daną stronę.
- CVE-2026-75831Wysokie
Grav przed wersją 2.0.15 zawiera podatność na trwały cross-site scripting w renderowaniu mediów audio i wideo przez metodę sourceParsedownElement. Fragment URL mediów jest konkatenowany bez ucieczki do elementów źródłowych rawHtml, co pozwala atakującym na wstrzyknięcie dowolnego HTML i JavaScript, który wykonuje się w sesjach przeglądających.
- CVE-2026-75828Wysokie
Grav przed wersją 2.0.15 zawiera podatność na trwały cross-site scripting w funkcji detectXss(), gdzie niesparowane cudzysłowy w niecytowanych wartościach atrybutów omijają wykrywanie procedur obsługi zdarzeń. Uwierzytelnieni edytorzy mogą wstrzyknąć procedury obsługi zdarzeń, takie jak onerror=, które przechodzą walidację i wykonują się w przeglądarkach odwiedzających podczas renderowania treści strony.
- CVE-2026-75827Wysokie
Grav przed wersją 2.0.15 zawiera podatność na dowolny zapis plików w walidacji dynamicznych danych Blueprint, która używa niekompletnej listy blokowanych zamiast pozytywnej listy dozwolonych. Atakujący z uprawnieniami do edycji stron lub konfiguracji blueprint mogą wywołać funkcję error_log za pomocą dyrektywy data, aby dodać ładunki PHP do plików dostępnych z sieci, osiągając zdalne wykonanie kodu.
- CVE-2026-74907Średnie
Grav przed wersją 2.0.15 zawiera podatność na path traversal w serwerze statycznych zasobów w index.php, który używa dopasowania prefiksu string zamiast walidacji granic katalogów. Nieuwierzytelnieni atakujący mogą uzyskać dostęp do plików w katalogach sąsiednich, wykorzystując nazwy katalogów, które rozszerzają bazową ścieżkę string, takie jak żądanie assets-secret, gdy assets jest skonfigurowaną bazą.
- CVE-2026-72832Średnie
Grav w wersjach od 1.5.2 do 2.0.12 zawiera podatność na trwały cross-site scripting (XSS) w funkcji Security::detectXss() (system/src/Grav/Common/Security.php). Skanowanie obsługi zdarzeń jest zakotwiczone na `<` i używa `[^>]*?`, które nie może przekroczyć pierwszego dosłownego `>`; gdy `>` pojawi się wewnątrz wartości atrybutu w cudzysłowie, przeglądarka utrzymuje tag otwarty i parsuje kolejny moduł obsługi zdarzeń (np. onerror), więc detektor i przeglądarka są w niezgodzie. Edytor strony bez uprawnień admin.super może zapisać treść strony taką jak `<img src=x title=">" onerror=alert(document.domain)>`, która jest akceptowana, przechowywana i wykonywana w originie witryny, gdy dowolny odwiedzający (w tym nieuwierzytelnieni użytkownicy) przegląda stronę. Naprawiono w wersji 2.0.13.
- CVE-2026-72820Średnie
Grav przed wersją 2.0.13 nieprawidłowo waliduje ścieżki główne profili kopii zapasowych, co pozwala atakującym na archiwizowanie katalogów poza GRAV_ROOT, gdy nie znajdują się one na twardo zakodowanej liście zabronionych. Atakujący z dostępem do edycji profili mogą skonfigurować profile z ścieżkami przejścia, aby ujawnić wrażliwe pliki z lokalizacji takich jak /opt, /mnt lub /srv.
- CVE-2026-65608Wysokie
Podatność zdalnego wykonania kodu (RCE) w Grav w wersjach od 1.7.0 do 2.0.9. Funkcja FlexDirectory::dynamicDataField() wywołuje call_user_func_array() na danych kontrolowanych przez atakującego, bez ograniczeń na niebezpieczne funkcje, takie jak exec czy system. Uwierzytelniony użytkownik z uprawnieniami do tworzenia lub aktualizacji w dowolnym katalogu Flex może wykonać dowolne polecenia powłoki na serwerze.
- CVE-2026-64628Średnie
W systemie Grav występuje podatność na trwałe XSS w atrybutach shortcode, ponieważ skanowanie XSS wykrywa tylko literały z nawiasami ostrymi. Atakujący z uprawnieniami admin.pages może wstrzyknąć złośliwy JavaScript, który wykona się w przeglądarce każdego użytkownika, w tym administratorów.
- CVE-2026-62237Średnie
Grav przed wersją 2.0.4 zawiera podatność na odmowę usługi przez wyrażenia regularne (ReDoS) w filtrze i funkcji regex_replace, które są dozwolone w piaskownicy treści Twig. Gdy przetwarzanie Twig w treści strony jest włączone (domyślnie wyłączone), uwierzytelniony edytor strony może dostarczyć katastrofalnie cofający się wzorzec PCRE, który jest przekazywany bezpośrednio do preg_replace() w PHP, powodując nieograniczone zużycie CPU i odmowę usługi dla procesu serwera WWW.
- CVE-2026-62234Wysokie
Podatność w Grav przed wersją 2.0.4: brak ograniczeń protokołów cURL w webhookach. Uwierzytelnieni użytkownicy z uprawnieniami api.webhooks.write mogą tworzyć webhooki z URL-ami file://, dict:// lub gopher://.
- CVE-2026-62232Wysokie
Grav przed wersją 2.0.4 zawiera podatność w logowaniu, która pozwala na ominięcie uwierzytelniania dwuskładnikowego (2FA). Atakujący znający hasło ofiary może wywołać zadanie regenerate2FASecret bez tokena CSRF, nadpisując tajny klucz 2FA własną wartością, a następnie wygenerować poprawny kod TOTP i zalogować się, redukując 2FA do ochrony tylko hasłem.
- CVE-2026-62230Wysokie
Grav przed wersją 2.0.4 zawiera domyślny plik .htaccess, w którym reguły blokujące dostęp do wrażliwych typów plików (.yaml, .php, .json itp.) nie mają flagi [NC], co powoduje, że dopasowanie rozszerzeń jest rozróżniane pod względem wielkości liter. Na systemach plików nie rozróżniających wielkości liter (Windows/NTFS, macOS/HFS+ lub woluminy Docker) nieuwierzytelniony atakujący może żądać tych plików z rozszerzeniami pisanymi wielkimi lub mieszanymi literami (np. .YAML, .PHP), aby ominąć ograniczenia i odczytać wrażliwe pliki konfiguracyjne zawierające klucze API i dane uwierzytelniające.
- CVE-2026-61873Wysokie
Podatność w Grav przed wersją 9.1.8 umożliwia zapis dowolnych plików poprzez parametr process.save.filename wtyczki Form. Walidacja przed przetwarzaniem Twig nie jest powtarzana po renderowaniu, co pozwala atakującym na ominięcie zabezpieczeń i zapisanie plików, w tym webshelli PHP, do katalogu głównego lub innych wrażliwych lokalizacji.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

