Katalog CVE

CVE-2026-89526

KrytyczneCVSS 9.8
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.20%

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

Streszczenie

W jądrze Linux w module svcrdma pole pozycji fragmentu Read RPC/RDMA jest dostarczane przez zdalnego klienta i przechowywane bez weryfikacji. xdr_count_read_segments() sprawdza tylko wyrównanie do 4 bajtów i nigdy nie porównuje pozycji z długością otrzymanego ciała inline, co w ścieżce pojedynczego fragmentu prowadzi do niedomiaru długości ogona i ujawnienia sąsiedniej pamięci slab, a w ścieżce wielu fragmentów do niedomiarów przy obliczaniu odstępów i kopiowania poza bufor odbioru.

Ocena ryzyka

Zdalny atakujący może ujawnić zawartość pamięci jądra lub uszkodzić pamięć, co może prowadzić do wycieku informacji lub wykonania kodu. Dotyczy serwerów z usługami RDMA.

Rekomendacja

Zaktualizuj jądro Linux do wersji z poprawką, która ogranicza kopiowanie zakresów inline w svc_rdma_copy_inline_range() względem zapisanego ciała RPC oraz odrzuca pojedyncze i wielofragmentowe listy Read z pozycjami poza ciałem lub nakładającymi się.

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: svcrdma: Validate Read chunk positions before reconstruction The RPC/RDMA Read chunk position field is supplied by the remote client and stored verbatim in the parsed chunk list. xdr_count_read_segments() checks only 4-byte alignment; it never compares the position against the received inline body length. In the single-chunk path, svc_rdma_read_complete_one() splits the head and tail kvecs at ch_position. A position past the inline body underflows the tail length, exposing adjacent slab memory to the upper XDR decoder. In the multi-chunk path, svc_rdma_read_multiple_chunks() computes gap lengths between chunks as unsigned subtractions from ch_position. Overlapping Read chunks cause these subtractions to underflow. A final position past the inline body likewise underflows the trailing gap length. svc_rdma_copy_inline_range() then copies past the receive buffer into request pages that are returned to the client through the Reply channel. Bound inline-range copies in svc_rdma_copy_inline_range() against the decoded inline RPC body saved in rc_saved_arg. Reject a single Read chunk positioned beyond that body, and reject multi-chunk lists where accumulated read bytes exceed the next chunk's position. Apply the same position and overlap checks in the call-chunk interleaving path.

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