CVE-2026-63827

apparmor: fix use-after-free in rawdata dedup loop

HIGH
7.8
CVSS Score
Published: July 19, 2026 at 12:02 PM UTC
Updated: August 17, 2026 at 05:17 AM UTC
1 product affected across 1 vendorLinux Kernel

Using Linux by Linux?

Get instant alerts when new vulnerabilities affect Linux - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
HIGH7.8
Exploit prediction
EPSS 0.1%

Description

In the Linux kernel, the following vulnerability has been resolved: apparmor: fix use-after-free in rawdata dedup loop aa_replace_profiles() walks ns->rawdata_list to dedup the incoming policy blob against entries already attached to existing profiles. Per the kernel-doc on struct aa_loaddata, list membership does not hold a reference: profiles hold pcount, and when the last pcount drops, do_ploaddata_rmfs() is queued on a workqueue that takes ns->lock and removes the entry. Between dropping the last pcount and the workqueue running, an entry remains on the list with pcount == 0. aa_get_profile_loaddata() is an unconditional kref_get() on pcount, so when the dedup loop hits such an entry, refcount hardening reports refcount_t: addition on 0; use-after-free. inside aa_replace_profiles(), and the poisoned counter then trips "saturated" and "underflow" warnings on the subsequent uses of the same loaddata. Before commit a0b7091c4de4 ("apparmor: fix race on rawdata dereference") the dedup path used a get_unless_zero-style helper on a single counter, so the existing "if (tmp)" guard was meaningful. The split-refcount refactor introduced aa_get_profile_loaddata(), which has plain kref_get() semantics, and the guard quietly became a no-op. Introduce aa_get_profile_loaddata_not0(), matching the existing _not0 convention used by aa_get_profile_not0(), and use it for the rawdata_list dedup lookup so dying entries are skipped. Reproduced on x86_64 with v7.1-rc5 in QEMU+KVM running Ubuntu 24.04 + stress-ng 0.17.06: stress-ng --apparmor 1 --klog-check --timeout 60s Without this patch the three refcount_t warnings fire within a few seconds. With it the same 60 s run is clean. Coverage is a smoke-test only; a longer soak with CONFIG_KASAN, CONFIG_KCSAN and CONFIG_PROVE_LOCKING would be welcome from anyone with the cycles.

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

v ≥ 6.19.85.10.253 ≤ v < 5.10.2615.15.203 ≤ v < 5.15.2126.1.169 ≤ v < 6.1.1776.12.77 ≤ v < 6.12.956.18.18 ≤ v < 6.18.386.19.8 ≤ v < 6.206.6.130 ≤ v < 6.6.1447.0 ≤ v < 7.1.37.0 ≤ v < 7.23b8e77c7abab40e6de9ad9de730d77984a4988405.10.2535.15.2036.1.1696.12.776.18.186.19.86.6.1306b6ba87579c7e7c669e0bec91823e7fb693bc5df6ef1f2926c41ab96952d9696d55a052f1b3a94187.0763e838adc3c7ec5a7df2990ce84cad951e42721a0b7091c4de45a7325c8780e6934a894f92ac86baf782cc8871e3683ddd5a3cd2f7df526599863a9d9d8560b9b7932f8cffc4c068c14289220900f79f9761add6d100962a23996cb68f3d6abdd4d1815
Vendor states this is fixed in 15fd83a1e42ede15070968806bb6c8b1a5170688 (fixed)
Vendor states this is fixed in 5e34fa9f6f7cd688ae153fff13139a5cf2d42339 (fixed)
Vendor states this is fixed in 643221da57dbb1a8fd800610331cf1ec27969f71 (fixed)
Vendor states this is fixed in 6f060496d03e4dc560a40f73770bd08335cb7a27 (fixed)
Vendor states this is fixed in a7a2890028f16e5b0af0bb005d80fcb32559cca3 (fixed)
Vendor states this is fixed in b17f0c59cc1525765625cf07d0391b7f9c1ed7e5 (fixed)
Vendor states this is fixed in c3ca2631073b2cef06824fd2bfc452ff7a1023de (fixed)
Vendor states this is fixed in ce261a20b41db522e320a41bbf1292bf85af66df (fixed)
Vendor states this is fixed in 5.10.261 (unaffected)
Vendor states this is fixed in 5.15.212 (unaffected)
Vendor states this is fixed in 6.1.177 (unaffected)
Vendor states this is fixed in 6.12.95 (unaffected)
Vendor states this is fixed in 6.18.38 (unaffected)
Affected range stops below 6.20, so it looks safe — our inference, not a vendor statement
Vendor states this is fixed in 6.6.144 (unaffected)
Vendor states this is fixed in 7.0 (unaffected)
Vendor states this is fixed in 7.1.3 (unaffected)
Vendor states this is fixed in 7.2 (unaffected)

Remediation

No guide yet

No remediation guidance has been written for this CVE yet, and no fixed version or vendor advisory is recorded against it.

CVSS

7.8HIGHLinux
Vector?

Quick Info

StatusAWAITING ANALYSIS

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card