Descripción
En el kernel de Linux, se resolvió la siguiente vulnerabilidad: scsi: libiscsi: rechazar un índice de tarea negativo proveniente de parse_pdu_itt Un transporte que implementa parse_pdu_itt entrega a libiscsi un índice tomado de la PDU, y ambas búsquedas lo acotan solo por arriba: if (i >= session->cmds_max) i y cmds_max son ambos int, por lo que un índice negativo pasa la verificación y session->cmds[i] se lee desde antes del inicio del arreglo. be2iscsi produce uno. beiscsi_parse_pdu() asigna la etiqueta sin procesar, *index = (int)itt; y beiscsi_complete_pdu() reenvía un NOP-In no solicitado desde el anillo asíncrono del hardware sin reemplazar su ITT, por lo que el valor es el del target. Además, informa la antigüedad propia de la sesión en lugar de la contenida en la etiqueta, lo que deja a la comparación de antigüedad en iscsi_verify_itt() sin nada que rechazar. Se acota el índice por abajo en ambas búsquedas.
Qué hacer
Revisa si usas el producto afectado y en qué versión, y aplica la actualización o la mitigación que indique el aviso del fabricante. CISA no ha confirmado que se esté explotando; si eso cambia, esta ficha pasa a «explotada» y te avisamos en el boletín.
Versiones afectadas
- Linux Afectadas: bfead3b2cb4607c71831423c3ee97d22cd0c9dcb y anteriores a 24bd9ba431b2daa263f3551bc2f09f6b4487f5ae · bfead3b2cb4607c71831423c3ee97d22cd0c9dcb y anteriores a f8fabe1fe044f86abc42194b8f86dfd70212115f · bfead3b2cb4607c71831423c3ee97d22cd0c9dcb y anteriores a e896a97f336c5edfc13066b57ed431cb3f64e68c · bfead3b2cb4607c71831423c3ee97d22cd0c9dcb y anteriores a 6200fb2de579f268742a77b0f3d823cb0a8b1947 · bfead3b2cb4607c71831423c3ee97d22cd0c9dcb y anteriores a 0eb06ebbbecb122f0df9a1f7f623f5255be741ed · bfead3b2cb4607c71831423c3ee97d22cd0c9dcb y anteriores a 6cadfa6f1f5896632d4223d3b7addb2a29fea74e · bfead3b2cb4607c71831423c3ee97d22cd0c9dcb y anteriores a 35b60549a956237488c89a2d85352e026e7d55b7 · bfead3b2cb4607c71831423c3ee97d22cd0c9dcb y anteriores a 8ee2a09a1dbb257c9e828ad2497f8e4832dfb142
- Linux Afectadas: 2.6.33 No afectadas: 5.10.273 · 5.15.224 · 6.1.191 · 6.6.161 · 6.12.115 · 6.18.59
Según el registro de la vulnerabilidad en CVE.org, tal como lo publicó el fabricante. Confirma tu versión exacta en el aviso del fabricante.
Referencias
- Referencia en git.kernel.orggit.kernel.org/stable/c/24bd9ba431b2daa263f3551bc2f09f6b4487f5ae
- Referencia en git.kernel.orggit.kernel.org/stable/c/f8fabe1fe044f86abc42194b8f86dfd70212115f
- Referencia en git.kernel.orggit.kernel.org/stable/c/e896a97f336c5edfc13066b57ed431cb3f64e68c
- Referencia en git.kernel.orggit.kernel.org/stable/c/6200fb2de579f268742a77b0f3d823cb0a8b1947
- Referencia en git.kernel.orggit.kernel.org/stable/c/0eb06ebbbecb122f0df9a1f7f623f5255be741ed
- Referencia en git.kernel.orggit.kernel.org/stable/c/6cadfa6f1f5896632d4223d3b7addb2a29fea74e
- Referencia en git.kernel.orggit.kernel.org/stable/c/35b60549a956237488c89a2d85352e026e7d55b7
- Referencia en git.kernel.orggit.kernel.org/stable/c/8ee2a09a1dbb257c9e828ad2497f8e4832dfb142
Ver el texto original en inglés (CVE.org)
scsi: libiscsi: Reject a negative task index from parse_pdu_itt
In the Linux kernel, the following vulnerability has been resolved: scsi: libiscsi: Reject a negative task index from parse_pdu_itt A transport that implements parse_pdu_itt hands libiscsi an index taken from the PDU, and both lookups bound it from above only: if (i >= session->cmds_max) i and cmds_max are both int, so a negative index passes and session->cmds[i] is read from before the array. be2iscsi produces one. beiscsi_parse_pdu() assigns the raw tag, *index = (int)itt; and beiscsi_complete_pdu() forwards an unsolicited NOP-In from the hardware async ring without replacing its ITT, so the value is the target's. It also reports the session's own age rather than the one in the tag, which leaves the age comparison in iscsi_verify_itt() with nothing to reject. Bound the index from below in both lookups.