CVE-2026-107212
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 25 - wyżej niż 25% wszystkich znanych CVE
Streszczenie
Biblioteka Excelize w wersjach od 2.1.0 do 2.11.0 w Rows.Columns akceptuje numer wiersza z wyprzedzeniem powyżej TotalRows bez zastosowania limitu wymuszanego przez Rows.Next. Złośliwy arkusz z nadmiernym numerem wiersza powoduje iterację przez wszystkie brakujące wiersze, zużywając CPU.
Ocena ryzyka
Atakujący może dostarczyć spreparowany plik Excel, który spowoduje długotrwałe zużycie CPU przez aplikację przetwarzającą dokumenty. Może to prowadzić do odmowy usługi (DoS).
Rekomendacja
Brak dostępnej wersji naprawionej. Należy ograniczyć przetwarzanie niezaufanych plików Excel i rozważyć walidację numerów wierszy przed iteracją.
Inne podatności w Excelize
Zobacz wszystkie- CVE-2026-107225Średnie
Excelize to biblioteka języka Go do odczytu i zapisu arkuszy kalkulacyjnych Microsoft Excel. W wersjach od 2.8.0 do 2.11.0 predykaty ekstrakcji wypełnienia, obramowania i czcionki w GetStyle sprawdzają tylko górne granice dla indeksów tabeli stylów kontrolowanych przez atakującego. File.GetStyle opiera się na predykatach extractStyleCondFuncs, które pozwalają ujemnym wartościom FillID, BorderID i FontID dotrzeć do indeksowania slice. Gdy spreparowany plik styles.xml dostarczy ujemny fillId, borderId lub fontId, a aplikacja odczyta styl, ujemny identyfikator przechodzi predykat sprawdzający tylko górną granicę i staje się ujemnym indeksem slice, co pozwala atakującemu wywołać panic podczas odczytu stylu komórki. Brak dostępnej poprawionej wersji na dzień przeglądu.
- CVE-2026-107224Średnie
Excelize to biblioteka języka Go do odczytu i zapisu arkuszy kalkulacyjnych Microsoft Excel. W wersjach od 2.1.0 do 2.11.0 rozmiar nieskompresowany Zip64 z ustawionym wysokim bitem jest konwertowany z uint64 na ujemny int64 przed sprawdzeniem limitu rozmiaru i alokacją. ReadZipReader pobiera UncompressedSize64 przez FileInfo.Size i przekazuje zawiniętą ujemną wartość do readFile. Gdy spreparowany wpis Zip64 deklaruje rozmiar nieskompresowany od 2^63 do 2^64-1, a skoroszyt jest otwierany, ujemny rozmiar omija limity rozpakowywania i trafia do make jako ujemna pojemność, co pozwala atakującemu wywołać panic podczas otwierania skoroszytu. Brak dostępnej poprawionej wersji na dzień przeglądu.
- CVE-2026-107223Wysokie
Podatność w bibliotece Excelize (Go) od wersji 2.1.0 do 2.11.0. Funkcja flatCols rozszerza zakresy kolumn bez walidacji Min i Max względem limitu kolumn arkusza, co pozwala atakującemu na nadmierne zużycie CPU i pamięci lub wywołanie OOM.
- CVE-2026-107222Średnie
Excelize to biblioteka języka Go do odczytu i zapisu arkuszy kalkulacyjnych Microsoft Excel. W wersjach od 2.7.0 do 2.11.0 ekstrakcja formatowania warunkowego indeksuje wymagane slice potomne lub dereferencjonuje opcjonalne dziecko colorScale bez walidacji struktury reguły. GetConditionalFormats osiąga extractCondFmtCellIs i indeksuje ColorScale.Cfvo, DataBar.Cfvo oraz DataBar.Color bez pełnych sprawdzeń strukturalnych. Gdy spreparowany arkusz dostarczy regułę cellIs, dataBar lub colorScale bez oczekiwanych dzieci, a aplikacja wywoła GetConditionalFormats, brakujące dane formuły, koloru, obiektu wartości lub colorScale trafiają do indeksu poza zakresem lub dereferencji nil, co pozwala atakującemu wywołać panic i zakończyć niechroniony proces. Brak dostępnej poprawionej wersji na dzień przeglądu.
- CVE-2026-107221Średnie
Excelize to biblioteka języka Go do odczytu i zapisu arkuszy kalkulacyjnych Microsoft Excel. W wersjach od 2.0.0 do 2.11.0 funkcja checkRow ustala rozmiar docelowego slice komórek na podstawie ostatniej komórki w kolejności dokumentu XML, a następnie rozrzuca każdą komórkę według jej jawnego odwołania do kolumny. GetCellValue osiąga workSheetReader i checkRow, gdzie targetList jest zbyt krótka dla wcześniejszej komórki poza kolejnością. Gdy spreparowany wiersz umieszcza komórkę o wyższym numerze kolumny przed końcową komórką o niższym numerze, a API arkusza niebędące strumieniowym odczytuje arkusz, indeks kolumny wcześniejszej komórki przekracza długość slice wynikającą z końcowej komórki, co pozwala atakującemu wywołać nieodwracalny panic i zakończyć proces. Brak dostępnej poprawionej wersji na dzień przeglądu.
- CVE-2026-107220Średnie
Excelize to biblioteka języka Go do odczytu i zapisu arkuszy kalkulacyjnych Microsoft Excel. W wersjach od 2.7.1 do 2.11.0 mergeCellsParser pozostawia pusty prostokąt dla pustego odwołania mergeCell ref, a następnie przekazuje ten pusty slice do cellInRange bez sprawdzenia długości. GetCellValue osiąga mergeCellsParser, który przekazuje pusty prostokąt pochodzący z atrybutu mergeCell ref do cellInRange. Gdy spreparowany arkusz zawiera puste odwołanie mergeCell ref, a API komórek niebędące strumieniowym odczytuje arkusz, cellInRange indeksuje cztery pozycje w pustym slice, co pozwala atakującemu wywołać panic przy pierwszej operacji na dotkniętej komórce. Brak dostępnej poprawionej wersji na dzień przeglądu.
- CVE-2026-107219Wysokie
Podatność w bibliotece Excelize (Go) od wersji 2.3.1 do 2.11.0. Szyfrowanie agile akceptuje sterowaną przez atakującego wartość spinCount i wykonuje nieograniczoną liczbę iteracji wyprowadzania klucza, co pozwala na zajęcie rdzenia CPU na czas wybrany przez atakującego.
- CVE-2026-107218Średnie
Excelize to biblioteka języka Go do odczytu i zapisu arkuszy kalkulacyjnych Microsoft Excel. W wersjach od 2.10.1 do 2.11.0 funkcja RIGHT waliduje żądaną długość za pomocą liczby jednostek kodu UTF-16, ale tnie tablicę run za pomocą liczby punktów kodu Unicode. RIGHT osiąga leftRight przez CalcCellValue, gdzie countUTF16String waliduje jedną jednostkę, a utf8.RuneCountInString dostarcza indeks slice w innej. Gdy RIGHT przetwarza tekst z płaszczyzny dodatkowej z żądaną liczbą znaków między liczbą run a liczbą jednostek kodu UTF-16, niespójne jednostki powodują ujemny indeks slice run, co pozwala atakującemu wywołać panic podczas oceny formuły. Brak dostępnej poprawionej wersji na dzień przeglądu.
- CVE-2026-107217Wysokie
Podatność w bibliotece Excelize (Go) od wersji 2.0.0 do 2.11.0 (oraz 1.1.0-1.4.1). Funkcja ColumnNameToNumber nie wykrywa przepełnienia przy konwersji nazw kolumn, co może prowadzić do paniki i zakończenia procesu przez złośliwy plik.
- CVE-2026-107216Wysokie
Podatność w bibliotece Excelize (Go) od wersji 2.8.1 do 2.11.0. Funkcja ANCHORARRAY rekurencyjnie wywołuje CalcCellValue, tworząc nowy kontekst obliczeń i omijając kontrolę cykli, co może prowadzić do przepełnienia stosu Go i przerwania procesu.
Oryginalny opis (angielski, źródło NVD)
Excelize is a Go language library for reading and writing Microsoft Excel spreadsheets. From 2.1.0 to 2.11.0, Rows.Columns accepts a look-ahead row number above TotalRows without applying the limit enforced by Rows.Next. File.GetRows relies on Rows.Next and Rows.Columns, but Rows.Columns consumes the row r attribute without the limit check in Rows.Next. When a crafted worksheet places an oversized row number after an ordinary valid row and the application calls GetRows or iterates Rows, the iterator advances through every missing row number instead of rejecting the workbook, allowing an attacker to consume a CPU core for an attacker-controlled duration. No fixed version is available as of this review.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

