CVE-2026-46639
ŚrednieCVSS 6.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 27 - wyżej niż 27% wszystkich znanych CVE
Streszczenie
Podatność w silniku szablonów Twig w wersjach od 3.24.0 do 3.26.0 powoduje, że podczas przypisania destrukcyjnego obiektów funkcja CoreExtension::getAttribute() jest wywoływana z parametrem sandbox ustawionym na false. To wyłącza sprawdzanie zasad dostępu do właściwości i metod, umożliwiając atakującemu z dostępem do zapisu w szablonie Twig w trybie sandbox odczytanie publicznych właściwości lub wywołanie publicznych getterów na obiektach przekazanych do silnika szablonów.
Ocena ryzyka
Organizacja narażona jest na wyciek poufnych danych, ponieważ atakujący może odczytać publiczne właściwości lub wywołać publiczne gettery na obiektach dostępnych w szablonie, co może prowadzić do ujawnienia wrażliwych informacji.
Rekomendacja
Należy natychmiast zaktualizować bibliotekę Twig do wersji 3.26.0 lub nowszej, która zawiera poprawkę usuwają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-46634Krytyczne
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.
- 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-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.24.0 until 3.26.0, object-destructuring assignment compiles CoreExtension::getAttribute() with the sandbox argument hardcoded to false, disabling property and method policy checks and allowing an attacker with write access to a sandboxed Twig template to read public properties or invoke public getters on objects passed to the template engine. This issue is fixed in version 3.26.0.

