Katalog CVE

CVE-2026-48702

WysokieCVSS 7.5
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.46%

Percentyl 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
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