CVE-2026-107215
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 12 - wyżej niż 12% wszystkich znanych CVE
Streszczenie
Biblioteka Excelize w wersjach od 2.3.1 do 2.11.0 ufa rozmiarowi strumienia z wpisu katalogowego CFB przed jego walidacją. Złośliwy plik OLE może zadeklarować ujemny lub ogromny rozmiar strumienia EncryptionInfo lub EncryptedPackage, co prowadzi do paniki lub wyczerpania pamięci procesu.
Ocena ryzyka
Atakujący może dostarczyć spreparowany plik Excel, który spowoduje awarię lub wyczerpanie pamięci aplikacji przetwarzającej dokumenty. Może to prowadzić do odmowy usługi (DoS).
Rekomendacja
Brak dostępnej wersji naprawionej. Należy ograniczyć przetwarzanie niezaufanych plików Excel, monitorować zużycie pamięci i rozważyć walidację plików przed przekazaniem do biblioteki Excelize.
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.3.1 to 2.11.0, extractPart allocates a byte slice directly from an attacker-controlled CFB directory-entry size before validating the sector chain or size domain. extractPart trusts the CFB directory entry streamSize for EncryptionInfo and EncryptedPackage allocations before validating the stream. When a crafted OLE compound file declares a negative or extremely large EncryptionInfo or EncryptedPackage stream size, the declared size reaches make with a negative length or forces a multi-gigabyte allocation, allowing an attacker to panic or exhaust process memory. No fixed version is available as of this review.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

