CVE-2026-46081 in Linux
Resumen
por VulDB • 2026-05-27
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
crypto: acomp - corregir el puntero incorrecto almacenado por acomp_save_req()
acomp_save_req() almacena &req->chain en req->base.data. Cuando acomp_reqchain_done() se invoca en la finalización asíncrona, recibe &req->chain como el argumento de datos, pero lo convierte directamente a struct acomp_req. Dado que data apunta al miembro chain, todos los accesos posteriores a los campos se realizan en un desplazamiento incorrecto, lo que provoca corrupción de memoria.
El problema ocurre cuando una implementación de hardware asíncrona, como el controlador QAT, completa una solicitud que utiliza la interfaz de dirección virtual DMA (por ejemplo, acomp_request_set_src_dma()). Esta combinación hace que crypto_acomp_compress() entre en la ruta acomp_do_req_chain(), la cual establece acomp_reqchain_done() como la función de devolución de llamada de finalización a través de acomp_save_req().
Con KASAN habilitado, esto se manifiesta como una falla de protección general en acomp_reqchain_done():
general protection fault, probablemente por dirección no canónica 0xe000040000000000 KASAN: probablemente acceso a memoria de usuario en el rango [0x0000400000000000-0x0000400000000007]
RIP: 0010:acomp_reqchain_done+0x15b/0x4e0 Rastreo de llamadas: qat_comp_alg_callback+0x5d/0xa0 [intel_qat]
adf_ring_response_handler+0x376/0x8b0 [intel_qat]
adf_response_handler+0x60/0x170 [intel_qat]
tasklet_action_common+0x223/0x820 handle_softirqs+0x1ab/0x640
Corrija esto almacenando la propia solicitud en req->base.data en lugar de &req->chain, de modo que acomp_reqchain_done() reciba el puntero correcto. Simplifique acomp_restore_req() en consecuencia para acceder a req->chain directamente.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.