CVE-2026-48702
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 39 - wyżej niż 39% wszystkich znanych CVE
Streszczenie
Rekor, system rejestru przejrzystości łańcucha dostaw, zawiera podatność na atak typu „bomba dekompresyjna” w funkcji `Package.Unmarshal()` dla plików APK. Atakujący może przesłać specjalnie spreparowany plik APK, który po dekompresji zajmuje ogromną ilość pamięci, powodując awarię serwera. Podatność dotyczy wersji od 0.3.0 do 1.5.1 i jest dostępna przez dwa nieuwierzytelnione endpointy.
Ocena ryzyka
Ryzyko polega na możliwości zdalnego wywołania błędu braku pamięci (OOM) w serwerze Rekor, co prowadzi do przerwania działania usługi (DoS). Atak nie wymaga uwierzytelnienia, a ograniczenia rozmiaru żądania nie eliminują w pełni zagrożenia ze względu na wysoki współczynnik kompresji.
Rekomendacja
Należy natychmiast zaktualizować Rekor do wersji 1.5.2 lub nowszej, która zawiera poprawkę. Jeśli aktualizacja nie jest możliwa, należy rozważyć ograniczenie dostępu do endpointów API lub zastosowanie dodatkowych zabezpieczeń sieciowych, ale pamiętaj, że nie ma skutecznego workaroundu.
Inne podatności w Rekor
Zobacz wszystkie- CVE-2026-24117Średnie
Rekor w wersjach 1.4.3 i starszych pozwala na SSRF do dowolnych usług wewnętrznych, ponieważ /api/v1/index/retrieve obsługuje pobieranie klucza publicznego z adresu URL podanego przez użytkownika. SSRF może wywoływać tylko żądania GET, nie zmienia stanu, a odpowiedź nie jest zwracana, więc możliwy jest jedynie blind SSRF (sondujący sieć wewnętrzną).
- CVE-2026-23831Średnie
W Rekor (log przejrzystości łańcucha dostaw oprogramowania) w wersjach 1.4.3 i starszych implementacja wpisu może spowodować panikę przy przetwarzaniu danych kontrolowanych przez atakującego, gdy kanonizowany jest proponowany wpis z pustym polem spec.message. Funkcja validate() zwraca nil (sukces) dla pustej wiadomości, pozostawiając sign1Msg niezainicjalizowany, a Canonicalize() później dereferencjonuje v.sign1Msg.Payload, co prowadzi do dereferencji wskaźnika nil. Wątek jest odzyskiwany, więc klient otrzymuje błąd 500, a usługa działa dalej, więc wpływ na dostępność jest minimalny. Problem naprawiono w wersji 1.5.0.
- CVE-2023-33199Średnie
Podatność w Rekor polega na tym, że źle sformatowany wpis typu `intoto/v0.0.2` może spowodować panikę w wątku procesu Rekor. Mimo to, usługa nadal działa, a użytkownik otrzymuje komunikat o błędzie 500.
Oryginalny opis (angielski, źródło NVD)
Rekor is a software supply chain transparency log. Starting in version 0.3.0 and prior to version 1.5.2, the `Package.Unmarshal()` function in `pkg/types/alpine/apk.go` decompresses the signature and control gzip members of an APK file into in-memory buffers without bounding the total decompressed size. The existing `max_apk_metadata_size` check (default 1MB) is only applied to individual tar entry header sizes after decompression completes, so it does not prevent a decompression bomb from consuming unbounded heap memory. An attacker can craft a gzip stream that compresses at a ~1000:1 ratio (e.g., 2MB compressed zeros → 2GB decompressed). When submitted as spec.package.content in an Alpine `ProposedEntry`, the server decompresses the full payload into memory during request processing, triggering a fatal Go runtime out-of-memory error or OS OOM-kill that cannot be caught by the server's recover() middleware. This is reachable via two unauthenticated endpoints, `POST /api/v1/log/entries (createLogEntry)` and `POST /api/v1/log/entries/retrieve (searchLogQuery)`. Both invoke `V001Entry.Canonicalize()` → `fetchExternalEntities()` → `apk.Unmarshal(packageData)`, which performs the unbounded decompression. Version 1.5.2 patches the issue. There is no effective workaround. Setting `max_request_body_size` reduces but does not eliminate exposure due to the ~1000:1 compression ratio (a 1MB body limit still allows ~1GB heap allocation). Setting `max_apk_metadata_size` has no effect on this vulnerability since the check is applied after decompression.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

