CVE-2026-72129
KrytyczneCVSS 9.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 12 - wyżej niż 12% wszystkich znanych CVE
Streszczenie
W jądrze Linux w module nvmet-rdma występuje problem z obsługą danych inline z niezerowym offsetem. Funkcja nvmet_rdma_use_inline_sg() mapuje offset kontrolowany przez hosta, ale zakłada, że dane zaczynają się na pierwszej stronie inline. Przy offsetach większych niż rozmiar strony może wystąpić niedomiar (underflow) długości, prowadzący do odczytu poza zakresem pamięci.
Ocena ryzyka
Podatność może prowadzić do odczytu poza zakresem pamięci, co może ujawnić wrażliwe dane lub spowodować awarię systemu.
Rekomendacja
Zastosuj poprawkę z aktualizacji jądra Linux, która poprawnie mapuje offset na indeks strony i przesunięcie w stronie, oraz odpowiednio oblicza liczbę stron.
Oryginalny opis (angielski, źródło NVD)
In the Linux kernel, the following vulnerability has been resolved: nvmet-rdma: handle inline data with a nonzero offset nvmet_rdma_use_inline_sg() maps the host-controlled inline data offset into the per-command inline scatterlist. The bounds check admits any offset with off + len <= inline_data_size, but the mapping still assumes the data begins in the first inline page: sg->offset = off; sg->length = min_t(int, len, PAGE_SIZE - off); When a port is configured with inline_data_size > PAGE_SIZE (settable up to max(SZ_16K, PAGE_SIZE)), an offset in (PAGE_SIZE, inline_data_size] makes "PAGE_SIZE - off" underflow, so sg->length is set to ~4 GiB and the block backend reads far past the first inline page. num_pages(len) also ignores the offset, so an in-bounds offset whose [off, off+len) span crosses a page boundary under-counts the scatterlist. Map the offset properly: split it into a page index and an in-page offset, start the scatterlist at that page, and size the page count from page_off + len. Because the request scatterlist may now start at inline_sg[page_idx] rather than inline_sg[0], generalize the inline-SGL identity test in nvmet_rdma_release_rsp() to a range test; otherwise the persistent inline scatterlist is mistaken for an allocated one and nvmet_req_free_sgls() frees an inline page (and warns in free_large_kmalloc()).

