CVE-2026-54063
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 44 - wyżej niż 44% wszystkich znanych CVE
Streszczenie
Biblioteka Excelize dla języka Go przed wersją 2.11.0 zawiera podatność polegającą na braku walidacji atrybutu XML <row r="N"> w funkcji checkSheet(). Atakujący może dostarczyć specjalnie spreparowany plik XLSX, który powoduje alokację ogromnej ilości pamięci (do 16 GB) lub wywołuje panic z powodu indeksowania poza zakresem, prowadząc do odmowy usługi (DoS).
Ocena ryzyka
Organizacja narażona jest na ataki DoS, które mogą unieruchomić usługę przetwarzającą pliki XLSX od nieuwierzytelnionych użytkowników, co prowadzi do przerwania działania aplikacji i potencjalnych strat finansowych.
Rekomendacja
Należy natychmiast zaktualizować bibliotekę excelize do wersji 2.11.0 lub nowszej. W międzyczasie zaleca się ograniczenie dostępu do funkcji otwierania plików XLSX tylko dla zaufanych źródeł.
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. Prior to 2.11.0, the checkSheet() function in github.com/xuri/excelize/v2 uses an attacker-controlled <row r="N"> XML attribute value directly as the length argument to make([]xlsxRow, row) without validating it against the Excel row limit (TotalRows = 1,048,576). A specially crafted XLSX file can trigger two denial-of-service variants: (A) an out-of-memory process kill when r=2147483647 forces a ~16 GB allocation attempt, and (B) a runtime panic via out-of-bounds slice indexing when r=-1. Any service that opens attacker-supplied XLSX files and calls GetCellValue is affected. No authentication is required. This issue is fixed in version 2.11.0.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

