Vulnerabilidad en Linux (CVE-2026-22998)
Gravedad CVSS v3.1:
ALTA
Tipo:
CWE-476
Desreferencia a puntero nulo (NULL)
Fecha de publicación:
25/01/2026
Última modificación:
18/03/2026
Descripción
En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta:<br />
<br />
nvme-tcp: soluciona desreferencias de puntero NULL en nvmet_tcp_build_pdu_iovec<br />
<br />
El commit efa56305908b (&#39;nvmet-tcp: Soluciona un pánico del kernel cuando el host envía una longitud de PDU H2C inválida&#39;) añadió la comprobación de límites de ttag y la validación de data_offset en nvmet_tcp_handle_h2c_data_pdu(), pero no validó si las estructuras de datos del comando (cmd-&gt;req.sg y cmd-&gt;iov) han sido inicializadas correctamente antes de procesar las PDUs H2C_DATA.<br />
<br />
La función nvmet_tcp_build_pdu_iovec() desreferencia estos punteros sin comprobaciones de NULL. Esto puede ser provocado enviando una PDU H2C_DATA inmediatamente después del handshake ICREQ/ICRESP, antes de enviar un comando CONNECT o un comando de escritura NVMe.<br />
<br />
Vectores de ataque que provocan desreferencias de puntero NULL:<br />
1. PDU H2C_DATA enviada antes de CONNECT ? ambos punteros NULL<br />
2. PDU H2C_DATA para comando READ ? cmd-&gt;req.sg asignado, cmd-&gt;iov NULL<br />
3. PDU H2C_DATA para slot de comando no inicializado ? ambos punteros NULL<br />
<br />
La solución valida tanto cmd-&gt;req.sg como cmd-&gt;iov antes de llamar a nvmet_tcp_build_pdu_iovec(). Ambas comprobaciones son necesarias porque:<br />
- Comandos no inicializados: ambos NULL<br />
- Comandos READ: cmd-&gt;req.sg asignado, cmd-&gt;iov NULL<br />
- Comandos WRITE: ambos asignados
Impacto
Puntuación base 3.x
7.50
Gravedad 3.x
ALTA
Productos y versiones vulnerables
| CPE | Desde | Hasta |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.4.268 (incluyendo) | 5.5 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.10.209 (incluyendo) | 5.10.249 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.15.148 (incluyendo) | 5.15.199 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.1.75 (incluyendo) | 6.1.162 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.6.14 (incluyendo) | 6.6.122 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7.2 (incluyendo) | 6.12.67 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.13 (incluyendo) | 6.18.7 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:6.19:rc1:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.19:rc2:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.19:rc3:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.19:rc4:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.19:rc5:*:*:*:*:*:* |
Para consultar la lista completa de nombres de CPE con productos y versiones, ver esta página
Referencias a soluciones, herramientas e información
- https://git.kernel.org/stable/c/32b63acd78f577b332d976aa06b56e70d054cbba
- https://git.kernel.org/stable/c/374b095e265fa27465f34780e0eb162ff1bef913
- https://git.kernel.org/stable/c/3def5243150716be86599c2a1767c29c68838b6d
- https://git.kernel.org/stable/c/76abc83a9d25593c2b7613c549413079c14a4686
- https://git.kernel.org/stable/c/7d75570002929d20e40110d6b03e46202c9d1bc7
- https://git.kernel.org/stable/c/baabe43a0edefac8cd7b981ff87f967f6034dafe
- https://git.kernel.org/stable/c/fdecd3b6aac10d5a18d0dc500fe57f8648b66cd4



