Katalog CVE

CVE-2026-89436

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

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.13%

Percentyl 3 - wyżej niż 3% wszystkich znanych CVE

Streszczenie

W jądrze Linux w sterowniku panasonic-laptop występuje błąd przepełnienia bufora poza granice tablicy pcc->sinf[]. Funkcja acpi_pcc_retrieve_biosdata() zapisuje wartość sentinela pod indeksem równym liczbie elementów pakietu SINF, co przy num_sifr równym tej liczbie powoduje zapis jednego elementu poza zaalokowaną tablicą (4-bajtowe przepełnienie sterty). Problem ujawnia się na sprzęcie, gdzie HKEY.SQTY zwraca 37, a pakiet HKEY.SINF() ma 38 elementów.

Ocena ryzyka

Lokalny atakujący lub błąd systemu może wykorzystać ciche przepełnienie sterty w jądrze, prowadząc do uszkodzenia pamięci, niestabilności systemu lub potencjalnej eskalacji uprawnień. Podatność dotyczy tylko określonego sprzętu Panasonic z błędnym DSDT.

Rekomendacja

Zaktualizuj jądro Linux do wersji zawierającej poprawkę, która pomija zapis sentinela, gdy brak na niego miejsca w tablicy pcc->sinf[]. Jeśli aktualizacja nie jest możliwa, rozważ ograniczenie dostępu do dotkniętego sprzętu lub monitorowanie pod kątem niestabilności.

Inne podatności w Linux kernel

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

In the Linux kernel, the following vulnerability has been resolved: platform/x86: panasonic-laptop: Fix sentinel write past pcc->sinf[] acpi_pcc_retrieve_biosdata() rejects SINF packages only when pcc->num_sifr is strictly less than hkey->package.count, then unconditionally writes a trailing sentinel at pcc->sinf[hkey->package.count]. But pcc->sinf[] is allocated with exactly pcc->num_sifr elements (valid indices 0..num_sifr-1), so that write needs num_sifr strictly greater than package.count to stay in bounds -- num_sifr == package.count passes the existing check but still overflows by one element. This is exactly the case probe()'s existing num_sifr++ workaround ("Some DSDT-s have an off-by-one bug where the SINF package count is one higher than the SQTY reported value") is written to accommodate: when a DSDT's SINF package count equals SQTY+1, the workaround makes num_sifr equal to package.count, which is precisely the boundary that overflows here. Found via UBSan (array-index-out-of-bounds) on hardware where HKEY.SQTY returns 37 and HKEY.SINF()'s package has 38 elements: num_sifr becomes 38 after the += 1 workaround, the loop correctly fills indices 0..37, and the sentinel write then targets index 38, one past the end -- a silent 4-byte heap overflow on kernels without CONFIG_UBSAN. Tightening the rejection check to num_sifr <= package.count would avoid the overflow but breaks probe() entirely on exactly this hardware, since num_sifr == package.count is the case the off-by-one workaround exists to support. Nothing else in the driver reads this sentinel value back, so simply skip the write when there is no room for it instead.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS