CVE-2026-31426 in Linuxinformación

Resumen

por VulDB • 2026-05-24

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:

ACPI: EC: limpieza de controladores en caso de fallo de detección en acpi_ec_setup()

Cuando ec_install_handlers() devuelve -EPROBE_DEFER en plataformas de hardware reducido, ya ha iniciado el EC (Embedded Controller) e instalado el controlador del espacio de direcciones utilizando el puntero struct acpi_ec como contexto del controlador. Sin embargo, acpi_ec_setup() propaga el error sin realizar ninguna limpieza.

El llamador acpi_ec_add() libera posteriormente la estructura struct acpi_ec para las instancias que no son de arranque, dejando un contexto de controlador colgante (dangling) en ACPICA.

Cualquier evaluación posterior de AML que acceda a un campo OpRegion del EC se enruta hacia acpi_ec_space_handler() con el puntero ya liberado, provocando un use-after-free:

BUG: KASAN: slab-use-after-free in mutex_lock (kernel/locking/mutex.c:289) Write of size 8 at addr ffff88800721de38 by task init/1 Call Trace: <TASK> mutex_lock (kernel/locking/mutex.c:289) acpi_ec_space_handler (drivers/acpi/ec.c:1362) acpi_ev_address_space_dispatch (drivers/acpi/acpica/evregion.c:293) acpi_ex_access_region (drivers/acpi/acpica/exfldio.c:246) acpi_ex_field_datum_io (drivers/acpi/acpica/exfldio.c:509) acpi_ex_extract_from_field (drivers/acpi/acpica/exfldio.c:700) acpi_ex_read_data_from_field (drivers/acpi/acpica/exfield.c:327) acpi_ex_resolve_node_to_value (drivers/acpi/acpica/exresolv.c:392) </TASK>

Asignado por la tarea 1: acpi_ec_alloc (drivers/acpi/ec.c:1424) acpi_ec_add (drivers/acpi/ec.c:1692)

Liberado por la tarea 1: kfree (mm/slub.c:6876) acpi_ec_add (drivers/acpi/ec.c:1751)

El error se activa en plataformas EC de hardware reducido (ec->gpe < 0) cuando el proveedor de IRQ de GPIO aplaza la detección (probing). Una vez que existe el controlador obsoleto, cualquier lectura de sysfs no privilegiada que cause que AML toque un campo OpRegion del EC (batería, térmico, retroiluminación) ejecuta el puntero colgante.

Se corrige esto llamando a ec_remove_handlers() en la ruta de error de acpi_ec_setup() antes de borrar first_ec. ec_remove_handlers() verifica cada bit EC_FLAGS_* antes de actuar, por lo que es seguro llamarlo independientemente de hasta qué punto haya progresado ec_install_handlers():

-ENODEV (controlador no instalado): solo llama a acpi_ec_stop() -EPROBE_DEFER (controlador instalado): elimina el controlador y detiene el EC

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Responsable

Linux

Reservar

2026-03-09

Divulgación

2026-04-13

Moderación

aceptado

Artículo

VDB-357153

CPE

listo

EPSS

0.00111

KEV

no

Actividades

muy bajo

Fuentes

Do you know our Splunk app?

Download it now for free!