Katalog CVE

CVE-2026-100671

WysokieCVSS 8.0
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.29%

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

Streszczenie

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.

Ocena ryzyka

Strona opublikowana przez użytkownika z uprawnieniem page-write może przechwycić identyfikator sesji następnego administratora, który ją wyświetli, a następnie cache'owany wynik udostępnia ten identyfikator nieuwierzytelnionym odwiedzającym, którzy mogą odtworzyć cookie, aby uwierzytelnić się jako administrator. Prowadzi to do pełnego przejęcia konta administratora.

Rekomendacja

Zaktualizuj Grav do wersji 2.0.25 lub nowszej. Wyłącz przetwarzanie Twig treści, jeśli nie jest wymagane, i sprawdź cache treści pod kątem podejrzanych danych sesji.

Inne podatności w Grav

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

Grav is a flat-file CMS. In versions 2.0.19 through 2.0.24 — and in 2.0.0 through 2.0.18 and 1.7.x only where content Twig has been explicitly enabled — page content authored by a user holding only page-write permission is rendered through a Twig sandbox that allowlists get_cookie(), which returns any cookie sent with the current request, including the visitor's session cookie. Because the read occurs server-side via filter_input(INPUT_COOKIE, ...), the HttpOnly, Secure and SameSite attributes offer no protection. Grav then stores the finished post-Twig output in a page-content cache keyed only on page identity and the configuration checksum, with no session, user or request dimension and no bypass for authenticated visitors. A page published by a page-write user can therefore capture the session identifier of the next administrator who views it, after which the cached output serves that identifier to unauthenticated visitors, who can replay the cookie to authenticate as that administrator. Since 2.0.19, security.twig_content.process_enabled defaults to true and Security::applyTwigContentDefault() derives each page's process.twig flag from that gate, so content Twig runs on every page with no frontmatter or operator action. Fixed in 2.0.25; 1.7.x is outside the backport scope.

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