nvmet-tcp: Do not WARN on remotely-controlled oversized SGL allocations
3Vexday Risk Score
Sin señal de explotación. Ningún artefacto público de explotación conocido hasta ahora.
ssvc Trackepss 0.2%
probabilidad de explotación
0.2%top 91% de las CVE
explotación observada
noninguna fuente lo reporta
In the Linux kernel, the following vulnerability has been resolved:
nvmet-tcp: Do not WARN on remotely-controlled oversized SGL allocations
When fuzzing the nvme target code, I tripped a kernel warning in
nvmet_tcp_map_data() because the length passed into the allocator is
controlled by the remote initiator.
A remote initiator that sends a command with an SGL claiming a huge
number, can create a scatterlist and iovec allocation of over 1 million
entries, which causes the backing kmalloc call to exceed MAX_PAGE_ORDER
and then the page allocator will trip on a WARN_ON_ONCE_GFP() message:
WARNING: mm/page_alloc.c:5280 __alloc_frozen_pages_noprof
Workqueue: nvmet_tcp_wq nvmet_tcp_io_work
...
sgl_alloc_order
nvmet_tcp_map_data
nvmet_tcp_try_recv_pdu
As it's never good to trip a kernel warning remotely due to many systems
having panic-on-warn enabled, let's silence it by just add GFP_NOWARN to
the allocation flags.
Productos afectados
Linux · LinuxReferencias
https://git.kernel.org/stable/c/737a3b535247226f6e1a7988fd9d6e63e7d6fc71https://git.kernel.org/stable/c/7b6a54d4e7b0da423c2b53ed293fd36b16c0b19ehttps://git.kernel.org/stable/c/7fd6da0f28932442b51658bac4ff55565ca9b377https://git.kernel.org/stable/c/86cc450022473c4a29b43a09f3ec22a9ef566dachttps://git.kernel.org/stable/c/8d01f0d0e96485e39ad89b859ef85e1dc3020465https://git.kernel.org/stable/c/9b770e40bc00381e5ebf53653de5776773415be3https://git.kernel.org/stable/c/9c95f7e66c62ee6c6abedcf1c04311f430ff5833https://git.kernel.org/stable/c/c509f20be1cabda3087810bb2d658d66b3f31f35https://git.kernel.org/stable/c/e7077e6c45423dd2bb7de7b5fc4b018a8e6c4741