Look up another CVE · open CVE-2026-97452 in the interactive tracker
CVE-2026-97452
ACPICA: Prevent adding invalid references
Published 2026-09-24 (24 days ago) by the Linux kernel CNA. Subsystem drivers/acpi. Debian urgency: not yet assigned.
What to do, per Debian release
Debian's own status for CVE-2026-97452 in every release this site tracks, and what each one means in practice. Every status below is the one the Debian Security Team publishes for this CVE. source
| Release | Status | Version | What this means |
|---|---|---|---|
| Debian 12bookworm | fixedDLA-4841-1 · 2026-10-17 · text | 6.1.190-1 | Update the kernel and reboot. DLA-4841-1 shipped the fix on 2026-10-17, in 6.1.190-1. A running kernel keeps the old code until the machine restarts. |
| Debian 13trixie | fixedDSA-6528-1 · 2026-09-29 · text | 6.12.111-1 | Update the kernel and reboot. DSA-6528-1 shipped the fix on 2026-09-29, in 6.12.111-1. A running kernel keeps the old code until the machine restarts. |
| Debian 14forky | fixed | 7.2.6-1 | Update the kernel and reboot. Fixed in 7.2.6-1. A running kernel keeps the old code until the machine restarts. |
| Debian unstablesid | fixed | 7.2.6-1 | Update the kernel and reboot. Fixed in 7.2.6-1. A running kernel keeps the old code until the machine restarts. |
| Debian 12bookworm · linux-6.12 | fixedDLA-4817-1 · 2026-10-04 · text | 6.12.111-1~deb12u1 | Update the kernel and reboot. DLA-4817-1 shipped the fix on 2026-10-04, in 6.12.111-1~deb12u1. A running kernel keeps the old code until the machine restarts. |
The vulnerability
What the bug is
Prevent adding references for local, argument, and debug objects in acpi_ut_copy_simple_object().
Where it lives
The fix touches these files. If the subsystem is one you do not use, the practical exposure is lower, though the package is still the vulnerable one.
drivers/acpi/acpica/utcopy.c
- What this is
- ACPI COMPONENT ARCHITECTURE (ACPICA)MAINTAINERS section matched on drivers/acpi/acpica/ · linux-acpi@vger.kernel.org · Supported
Check it on the machine
grep -w CONFIG_ACPI /boot/config-$(uname -r)Reads the booted kernel's own configuration, on the machine and nowhere else. =y is built in, =m is a module, and an is not set line means the code is not there.
Show whether Debian builds this, per release
Debian builds this, but not on every flavour. At least one release below builds the code on some of its kernel flavours and not on others, so the answer depends on the architecture and flavour installed.
- bookwormYnot built on armhf/armmp, armhf/armmp-lpae, armhf/rt/armmp, ppc64el/powerpc64le
- trixieYnot built on armel/rpi, armhf/armmp, armhf/armmp-lpae, armhf/rt/armmp, ppc64el/powerpc64le, ppc64el/powerpc64le-64k, s390x/s390x
- forky, sidYnot built on armhf/armmp, armhf/armmp-lpae, ppc64el/powerpc64le, ppc64el/powerpc64le-64k, s390x/s390x
- bookworm · linux-6.12Ynot built on armhf/armmp, armhf/armmp-lpae, armhf/rt/armmp, ppc64el/powerpc64le, ppc64el/powerpc64le-64k
- Y
- built in where it is built at all; some flavours do not build it
- Build switch
- CONFIG_ACPI
From the configuration Debian publishes for every kernel flavour it builds. It covers only the architectures Debian ships a linux-config package for, and nothing about a kernel you built yourself. Debian's own status above stays authoritative about the source package.MAINTAINERS kbuild Makefiles Debian linux-config packages
Signals
- Published
- 2026-09-24 (24 days ago)source
- CVSS
- 8.4 high
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:Hsource recompute it - Attack vector
- local (AV:L)source
- EPSS
- 0.14%, higher than 3.1% of all CVEssource
- CISA KEV
- not listedthe KEV catalogue
- Debian urgency
- not yet assignedsource
- Subsystem
- drivers/acpi
Upstream fixes
The versions the CNA records as introducing and fixing this, and the commit for each. source
| Introduced | Fixed in | Commit |
|---|---|---|
| 2.6.12 | 5.10.271 | 2350a6f89eca |
| 2.6.12 | 5.15.222 | 61cb905c33d0 |
| 2.6.12 | 6.1.189 | d239ccf5069f |
| 2.6.12 | 6.6.158 | c2cf936b07b0 |
| 2.6.12 | 6.12.111 | e16d1e5fcb17 |
| 2.6.12 | 6.18.53 | a6cd2fc2d542 |
| 2.6.12 | 7.2 | 6e8c55e13a5e |
Debian advisories
| Advisory | Date | Shipped to | Debian |
|---|---|---|---|
| DLA-4841-1 | 2026-10-17 | bookworm 6.1.190-1 | tracker |
| DLA-4817-1 | 2026-10-04 | bookworm 6.12.111-1~deb12u1 | tracker |
| DSA-6528-1 | 2026-09-29 | trixie 6.12.111-1 | tracker |
Why the CNA scored it this way
Quoted from the kernel CNA's own scoring file, word for word. A highlighted metric carries the most severe value CVSS v3.1 defines for it, which is what pushes the score up. source
- AV:LAttack vector, local
- The attacker-controlled AML is a CopyObject of a Package whose elements are Local/Arg/Debug references, carried in a DSDT/SSDT rather than a network message. The patched acpi_ut_copy_simple_object() is reached from acpi_ex_opcode_1A_1T_1R(AML_COPY_OBJECT_OP) during acpi_bus_init→acpi_load_tables→acpi_tb_load_namespace→acpi_ns_load_table→acpi_ns_execute_table.
- AC:LAttack complexity, low
- acpi_ds_init_object_from_op() sets a Local/Arg reference.object to &walk_state->local_variables[i]/arguments[i]; after that method returns, acpi_ps_parse_aml() calls acpi_ds_delete_walk_state(). A later module-level CopyObject of the surviving package always UAF-reads that freed node in acpi_ut_add_reference(); the AML author sequences both sides with no race.
- PR:NPrivileges required, none
- acpi_bus_init() calls acpi_load_tables() which runs module-level CopyObject via acpi_ns_execute_table() with no uid or capable() check; a DSDT/SSDT that stores Package(){Local0} from a nested method then CopyObject's it triggers the UAF at boot without a Linux account or configfs SSDT load.
- UI:NUser interaction, none
- acpi_ns_execute_table() evaluates the table's module-level AML, including the nested method that plants the Local/Arg refs and the subsequent CopyObject, during acpi_load_tables() at ordinary power-on; no mount, file-open, or other victim action is required.
- S:UScope, unchanged
- The UAF is of the kmalloc'd struct acpi_walk_state (its local_variables/arguments pseudo-nodes) inside the host ACPICA interpreter after acpi_ds_delete_walk_state(); it does not cross a KVM/Xen, IOMMU, or sandbox boundary.
- C:HConfidentiality impact, high
- acpi_ut_valid_internal_object() reads descriptor_type from the freed walk_state (the reported 1-byte KASAN UAF at the CopyObject copy). Reclaiming that slab as a fake ACPI_DESC_TYPE_OPERAND lets acpi_ut_update_object_reference walk attacker-chosen nested pointers, a UAF read primitive.
- I:HIntegrity impact, high
- If the freed walk_state is sprayed as a valid operand, acpi_ut_copy_simple_object()'s acpi_ut_add_reference() calls acpi_ut_update_object_reference(REF_INCREMENT) on attacker-controlled type and nested pointers, a UAF write/refcount-increment primitive; memcpy also plants the dangling pointer into the dest copy.
- A:HAvailability impact, high
- The KASAN report is a heap-use-after-free in acpi_ut_valid_internal_object() on the CopyObject path after acpi_ds_delete_walk_state(); using that dangling Local/Arg node pointer oopses/panics, and any UAF is Availability High.