Podatności Scriban
15 znanych podatności CVE w Scriban, przetłumaczonych i ocenionych.
- CVE-2026-74790Krytyczne
Scriban przed wersją 7.0.0 przechowuje w pamięci podręcznej obiekty TypedObjectAccessor tylko według typu, bez uwzględniania zmian MemberFilter. Pozwala to na ponowne użycie instancji TemplateContext i ujawnienie członków, które powinny być ukryte, co umożliwia atakującemu dostęp do filtrowanych właściwości i pól po zaostrzeniu filtrów.
- CVE-2026-73061Krytyczne
Scriban przed wersją 7.2.2 zawiera podatność na obejście modyfikatorów dostępu w TypedObjectAccessor, co pozwala kodowi szablonu na zapis właściwości obiektów CLR bez sprawdzania widoczności setterów. Atakujący mogą modyfikować właściwości z prywatnymi, wewnętrznymi lub init-only setterami oraz przeprowadzać masowe przypisania na właściwościach z publicznymi setterami, trwale zmieniając obiekty hosta po renderowaniu szablonu.
- CVE-2026-74795Wysokie
Scriban przed wersją 6.6.0 zawiera podatność na niekontrolowaną rekurencję w parserze rekurencyjnym. Parser nie egzekwuje domyślnego limitu głębokości wyrażeń (ExpressionDepthLimit jest domyślnie null/wyłączony), więc atakujący kontrolujący dane wejściowe szablonu może dostarczyć głęboko zagnieżdżony szablon (np. tysiące zagnieżdżonych nawiasów), co wyczerpuje stos wątku i powoduje StackOverflowException. Ponieważ wyjątek StackOverflowException nie może być przechwycony w .NET, prowadzi to do natychmiastowego, nieodwracalnego zakończenia procesu, co skutkuje odmową usługi.
- CVE-2026-74794Wysokie
Scriban przed wersją 6.6.0 zawiera podatność na nieskończoną rekurencję podczas renderowania obiektów, gdy właściwość ObjectRecursionLimit jest domyślnie nieograniczona. Atakujący mogą dostarczyć obiekty z cyklicznymi referencjami do kontekstu szablonu, wyczerpując stos i wywołując nieprzechwytywalny StackOverflowException, który kończy proces hostujący.
- CVE-2026-74792Wysokie
Scriban przed wersją 7.0.0 (dotknięte wersje <= 6.6.0) zawiera podatność na przepełnienie stosu w parsowaniu zagnieżdżonych inicjalizatorów tablic. Głęboko zagnieżdżone inicjalizatory tablic rekurencyjnie przechodzą przez ścieżkę (ParseArrayInitializer → ParseExpression → ParseArrayInitializer), która nie jest objęta licznikiem ExpressionDepthLimit dodanym w poprawce dla GHSA-wgh7-7m3c-fx25. Atakujący, który może dostarczyć niezaufane dane do Template.Parse, może wywołać nieprzechwytywalny StackOverflowException, natychmiast kończący proces, nawet przy domyślnym włączonym ExpressionDepthLimit.
- CVE-2026-74791Wysokie
Scriban przed wersją 7.0.0 nie czyści słownika CachedTemplates podczas wywołania TemplateContext.Reset(), co pozwala na utrzymywanie się buforowanych szablonów w ponownie używanych kontekstach. Atakujący mogą wykorzystać zależne od żądania implementacje ITemplateLoader, aby uzyskać dostęp do wcześniej autoryzowanych treści szablonów z wcześniejszych renderowań bez ponownego wywoływania TemplateLoader.Load().
- CVE-2026-74789Wysokie
Scriban przed wersją 7.0.0 (dotknięte <= 6.6.0) stosuje ograniczenie LoopLimit tylko do instrukcji pętli skryptowych, a nie do kosztownych iteracji wykonywanych wewnątrz wbudowanych operatorów i funkcji. W rezultacie pojedyncze wyrażenie, takie jak {{ 1..1000000 | array.size }} lub wyrażenie amplifikujące pamięć, takie jak {{ 'A' * 200000000 }}, może wymusić duże zużycie CPU lub pamięci nawet przy skonfigurowanym bardzo małym LoopLimit, co prowadzi do odmowy usługi.
- CVE-2026-74788Wysokie
Scriban przed wersją 7.0.0 (dotknięte wersje <= 6.6.0) zawiera podatność na niekontrolowaną alokację pamięci w funkcjach szablonu string.pad_left i string.pad_right, które nie walidują parametru width przed delegowaniem do .NET String.PadLeft/PadRight. Gdy aplikacja udostępnia Scriban niezaufanym danym wejściowym, atakujący może podać bardzo dużą wartość width (np. 500 000 000), co powoduje alokację ~1GB pamięci w jednym wywołaniu, prowadząc do OutOfMemoryException i odmowy usługi. Limit LimitToString nie zapobiega temu, ponieważ jest egzekwowany dopiero po pełnej alokacji stringa.
- CVE-2026-74787Wysokie
Scriban przed wersją 7.0.0 zawiera podatność na niekontrolowaną rekurencję w funkcji wbudowanej object.to_json, która nie ma limitów głębokości ani wykrywania cyklicznych referencji. Atakujący mogą tworzyć szablony z obiektami odwołującymi się do siebie, co powoduje nieograniczoną rekurencję i wyjątek StackOverflowException, który kończy proces .NET.
- CVE-2026-74786Średnie
Scriban przed wersją 7.0.0 (dotknięte wersje <= 6.6.0) zawiera podatność na odmowę usługi, w której limit bezpieczeństwa LimitToString (domyślnie 1MB) może zostać ominięty, ponieważ ObjectToString resetuje licznik długości (_currentToStringLength) przy każdym wywołaniu najwyższego poziomu, a StringBuilderOutput nie egzekwuje skumulowanego limitu rozmiaru wyjścia. Atakujący, który może dostarczyć szablon, może wielokrotnie renderować ciąg bliski limitowi w pętli, przydzielając około 1GB pamięci i powodując warunek braku pamięci, który powoduje awarię aplikacji hostującej.
- CVE-2026-74785Średnie
Scriban przed wersją 7.0.0 zawiera trzy odrębne podatności na odmowę usługi w ocenie wyrażeń, które omijają istniejące zabezpieczenia poprzez nieograniczone mnożenie ciągów, niekontrolowane operacje przesunięcia BigInteger oraz ominięcie LoopLimit przez wyliczanie zakresów w funkcjach wbudowanych. Atakujący, którzy mogą dostarczać szablony, mogą powodować wyjątki braku pamięci lub wyczerpanie procesora, zwykle kończąc cały proces hosta.
- CVE-2026-74784Wysokie
Scriban przed wersją 7.2.0 zawiera podatność na odmowę usługi w funkcji array.insert_at, która przydziela nieograniczone wpisy null bez przestrzegania ograniczeń LoopLimit lub LimitToString. Atakujący mogą podać duży parametr indeksu, aby wywołać wyjątek OutOfMemoryException i doprowadzić do awarii procesu w mniej niż sekundę.
- CVE-2026-74783Wysokie
Scriban w wersjach od 6.6.0 do 7.2.0 zawiera nieegzekwowany mechanizm ExpressionDepthLimit, który nie zatrzymuje rekurencyjnego parsowania głęboko zagnieżdżonych wyrażeń. Atakujący mogą dostarczyć szablony z głęboko zagnieżdżonymi nawiasami, inicjalizatorami tablic, inicjalizatorami obiektów lub operatorami jednoargumentowymi, aby wywołać nieprzechwytywalny wyjątek StackOverflowException, który natychmiast kończy proces hosta.
- CVE-2026-73062Wysokie
Scriban w wersjach od 3.0.0 do 7.2.0 zawiera podatność na odmowę usługi w operatorze mnożenia tablic, który przydziela pamięć bez egzekwowania LoopLimit lub bezpiecznych arytmetycznie kontroli przepełnienia. Atakujący mogą podać duży mnożnik całkowity w szablonie, aby wymusić alokacje pamięci rzędu wielu gigabajtów, powodując wyczerpanie zasobów i degradację dostępności.
- CVE-2026-73060Wysokie
Scriban w wersjach od 3.0.0 do 7.2.5 zawiera podatność na odmowę usługi w operatorze ScriptRange.Multiply, który omija LoopLimit, gdy lewy operand jest leniwą sekwencją. Atakujący mogą dostarczyć szablony z mnożeniem tablic na leniwych sekwencjach, aby wykonać miliardy nieobciążonych iteracji, zajmując rdzenie CPU i wyczerpując zasoby garbage collectora, nawet gdy LoopLimit jest ustawione na 1.

