CVE-2026-46634
KrytyczneCVSS 9.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 35 - wyżej niż 35% wszystkich znanych CVE
Streszczenie
Podatność w bibliotece Twig dla PHP (wersje od 3.9.0 do 3.26.0) pozwala na ominięcie polityki bezpieczeństwa SourcePolicyInterface podczas renderowania szablonów za pomocą funkcji template_from_string(). Wewnętrzny szablon jest kompilowany pod syntetyczną nazwą, która może znajdować się poza zakresem decyzji sandboksowania, co umożliwia atakującemu wykonanie kodu bez wymuszenia polityki bezpieczeństwa.
Ocena ryzyka
Organizacja narażona jest na ryzyko wykonania nieautoryzowanego kodu w kontekście aplikacji PHP, co może prowadzić do wycieku danych, eskalacji uprawnień lub przejęcia kontroli nad serwerem.
Rekomendacja
Należy natychmiast zaktualizować bibliotekę Twig do wersji 3.26.0 lub nowszej, która zawiera poprawkę eliminującą tę podatność.
Inne podatności w Twig
Zobacz wszystkie- CVE-2026-48807Krytyczne
W bibliotece Twig dla PHP wykryto podatność polegającą na niepełnym sprawdzaniu obiektów implementujących interfejs Stringable w kontekście sandboksowania. Przed wersją 3.27.0 mechanizm sandboksowania nie obejmował wszystkich przypadków konwersji na łańcuch znaków dla wartości Traversable przekazywanych do filtrów join i replace oraz operatorów in i not in, co umożliwiało ominięcie polityki sandboksowania.
- CVE-2026-48806Krytyczne
Podatność w bibliotece Twig dla PHP przed wersją 3.27.0 pozwala na ominięcie mechanizmu SandboxExtension::ensureToStringAllowed() podczas konwersji kluczy mapowania na łańcuchy znaków. Atakujący może wykorzystać obiekt implementujący __toString() jako klucz tablicy asocjacyjnej, co prowadzi do nieautoryzowanego wywołania tej metody.
- CVE-2026-48805Krytyczne
Podatność w bibliotece Twig przed wersją 3.27.0 pozwala na ominięcie ograniczeń sandboxa poprzez przestarzałe wewnętrzne funkcje w pliku src/Resources/core.php. Funkcje takie jak twig_array_some(), twig_array_every() i twig_check_arrow_in_sandbox() nie przekazują bieżącego stanu sandboxa do odpowiednich metod CoreExtension, co umożliwia atakującemu wykonanie nieautoryzowanych wywołań.
- CVE-2026-46633Krytyczne
Podatność w silniku szablonów Twig dla PHP przed wersją 3.26.0. Funkcja Compiler::string() nie escapuje apostrofów, gdy nazwa szablonu z tagu {% use %} jest umieszczana w literale łańcuchowym PHP, co pozwala na wstrzyknięcie dowolnego kodu PHP do skompilowanego pliku cache.
- CVE-2026-46636Wysokie
Twig od wersji 1.0.0 do przed 3.27.0 zawiera podatność w SecurityPolicy::checkMethodAllowed(), która bezwarunkowo zezwala na wszystkie wywołania metod na instancjach Twig\Markup. Ponieważ Twig\Markup nie jest finalny, podklasy dziedziczą to obejście. Aplikacja przekazująca obiekt klasy pochodnej Markup do szablonu w trybie piaskownicy (zwykle w celu oznaczenia fragmentu HTML jako bezpiecznego) nieumyślnie udostępnia autorom szablonów wszystkie publiczne metody tej podklasy, niezależnie od skonfigurowanej listy allowedMethods. Problem naprawiono w wersji 3.27.0.
- CVE-2026-49981Wysokie
Podatność w bibliotece Twig dla PHP umożliwia obejście mechanizmu sandboxa. Lista dozwolonych filtrów, tagów i funkcji jest obliczana przy tworzeniu instancji szablonu i może pozostać w pamięci podręcznej po zmianie stanu sandboxa między renderowaniami.
- CVE-2026-48808Wysokie
Podatność w silniku szablonów Twig dla PHP przed wersją 3.27.0 powoduje, że filtr 'column' przekazuje stan piaskownicy jako wartość logiczną, ale nie przekazuje bieżącego źródła do metody checkPropertyAllowed() w SandboxExtension. W rezultacie decyzje SourcePolicyInterface są tracone, a autor szablonu może odczytać publiczne lub magiczne właściwości, które nie są dozwolone przez politykę piaskownicy.
- CVE-2026-47732Średnie
Podatność w silniku szablonów Twig przed wersją 3.26.0 umożliwia ominięcie mechanizmu sandboxa. Kilka konstrukcji językowych (wyrażenia warunkowe, operatory porównania, testy, tagi ładujące szablony, dynamiczne nazwy atrybutów, argumenty spread, tag 'do' oraz operator zakresu '..') wywołuje konwersję łańcuchową na obiektach implementujących Stringable bez sprawdzenia metody checkMethodAllowed() w SecurityPolicy.
- CVE-2026-47730Średnie
W bibliotece Twig (wersje od 3.0.0 do 3.26.0) klasa Twig\Profiler\Dumper\HtmlDumper zapisuje wyniki Profile::getTemplate() i Profile::getName() do wyjścia HTML bez odpowiedniego escapingu. Pozwala to atakującemu na wstrzyknięcie dowolnego kodu HTML poprzez kontrolowane nazwy szablonów lub profili, gdy przeglądarka renderuje zrzut profilera.
- CVE-2026-46640Wysokie
Podatność w bibliotece Twig dla PHP (wersje 3.15.0 do 3.26.0) pozwala atakującemu na wstrzyknięcie kodu PHP poprzez składnię dynamicznych atrybutów _self.(<string>) i aliasów importu. Brak walidacji identyfikatorów powoduje, że kontrolowany przez atakującego ciąg znaków jest emitowany jako surowy PHP do generowanego szablonu i wykonywany podczas jego ładowania.
Oryginalny opis (angielski, źródło NVD)
Twig is a template language for PHP. From 3.9.0 until 3.26.0, template_from_string() compiles an inner template under a synthesized __string_template__<hash> name that can fall outside a SourcePolicyInterface sandbox decision, allowing a sandboxed template that can call template_from_string and include to render an inner template without security policy enforcement. This issue is fixed in version 3.26.0.

