{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-89750","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2026-09-11T19:38:34.762Z","datePublished":"2026-09-11T19:46:54.565Z","dateUpdated":"2026-09-14T12:02:29.948Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-09-14T12:02:29.948Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\ntracing/user_events: Clear copied tracing state before fork duplication\n\ndup_task_struct() copies user_event_mm from the parent into the child,\nwithout grabbing a reference to it. user_event_mm_dup() should\nreplace it, but it leaves that copied pointer unmodified if\nuser_event_mm_alloc() fails.\n\nWhen the child exits, user_event_mm_remove() decrements a reference\nthe child never owned, which ultimately frees user_event_mm, while\nthe parent still as a stale pointer to it. This creates a UAF, which\nKASAN reports as:\n\n    BUG: KASAN: slab-use-after-free in\n    current_user_event_mm+0x51/0x1d0 Write of size 4 at addr\n    ffff888005010d30 by task init/44\n\n    Call Trace:\n     <TASK>\n     kasan_report+0xce/0x100\n     kasan_check_range+0x10f/0x1e0\n     current_user_event_mm+0x51/0x1d0\n     user_events_ioctl+0x82e/0x15c0\n     __x64_sys_ioctl+0x139/0x1c0\n     do_syscall_64+0xce/0x450\n     entry_SYSCALL_64_after_hwframe+0x77/0x7f\n\n    Allocated by task 44:\n     __kasan_kmalloc+0x8f/0xa0\n     __kmalloc_cache_noprof+0x180/0x3a0\n     user_event_mm_alloc+0x3c/0x1f0\n     current_user_event_mm+0x88/0x1d0\n\n    Freed by task 42:\n     __kasan_slab_free+0x43/0x70\n     kfree+0x13a/0x390\n     process_one_work+0x696/0xf90\n     worker_thread+0x420/0xba0\n\nThe fix simply clears the copied pointer before any possible failure.\nIn case of failure, the child then has nothing to free."}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","baseScore":7.8,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:L - Reached only via local syscalls: ioctl(DIAG_IOCSREG) on tracefs user_events_data to create a user_event_mm, then fork/clone without CLONE_VM so dup_task_struct copies the pointer and user_event_mm_dup fails to replace it. No network, adjacent-wireless, or physical path exists.\nAC:L - The attacker controls the full sequence (register an enabler, apply memory pressure, fork, exit the child). user_event_enabler_dup uses GFP_NOWAIT, which fails readily under attacker-generated pressure, and user_event_mm_alloc is GFP_KERNEL_ACCOUNT and can fail under memcg limits; no victim-side race is required.\nPR:L - Non-persist DIAG_IOCSREG has no CAP_SYS_ADMIN or perfmon check; only write access to tracefs user_events_data is required. Tracing deployments (Android/Perfetto, ChromeOS, tracefs gid mounts) grant that to unprivileged local users, matching the intended user_events ABI.\nUI:N - The attacker registers a user event, forks, and exits the child entirely within their own process; no victim action, extra mount, or cooperating user is required.\nS:U - The use-after-free is of a kernel-heap user_event_mm during local fork/exit handling and does not cross a VM, IOMMU, or sandbox boundary; impact is standard in-kernel memory corruption on the same host.\nC:H - Child exit frees the parent's user_event_mm while the parent retains a stale pointer; later ioctl paths (current_user_event_mm refcount_inc, enabler list walks, mm->mm dereference) read reclaimed slab contents, yielding an attacker-groomable kernel memory disclosure primitive.\nI:H - The dangling user_event_mm is written after kfree (refcount_inc, list updates, mmap locks on mm->mm), so slab reuse enables heap spray and arbitrary kernel writes or control-flow hijack, consistent with UAF scoring guidance.\nA:H - KASAN reports a slab-use-after-free write in current_user_event_mm after the child exits, and repeating fork-under-pressure plus parent ioctl or exit reliably oopses or panics the kernel even without a full exploit."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["kernel/trace/trace_events_user.c"],"versions":[{"version":"7235759084a4f8524a46bd2638885ff3b34ce279","lessThan":"33ce55b368b64d65941867add00e7f288cbb8234","status":"affected","versionType":"git"},{"version":"7235759084a4f8524a46bd2638885ff3b34ce279","lessThan":"63b39e49a4c9d68e010e96b26fc7374f0864f2b1","status":"affected","versionType":"git"},{"version":"7235759084a4f8524a46bd2638885ff3b34ce279","lessThan":"25a0758cf6bdbfddac2be71124c9bd0692f4b0b1","status":"affected","versionType":"git"},{"version":"7235759084a4f8524a46bd2638885ff3b34ce279","lessThan":"b799f67119aff179719a0b1e12441ebbdaaf62f9","status":"affected","versionType":"git"},{"version":"7235759084a4f8524a46bd2638885ff3b34ce279","lessThan":"390f6bd8583d177029d9df4bea6667509e55a765","status":"affected","versionType":"git"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["kernel/trace/trace_events_user.c"],"versions":[{"version":"6.4","status":"affected"},{"version":"0","lessThan":"6.4","status":"unaffected","versionType":"semver"},{"version":"6.6.157","lessThanOrEqual":"6.6.*","status":"unaffected","versionType":"semver"},{"version":"6.12.109","lessThanOrEqual":"6.12.*","status":"unaffected","versionType":"semver"},{"version":"6.18.50","lessThanOrEqual":"6.18.*","status":"unaffected","versionType":"semver"},{"version":"7.2.4","lessThanOrEqual":"7.2.*","status":"unaffected","versionType":"semver"},{"version":"7.3-rc1","lessThanOrEqual":"*","status":"unaffected","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.4","versionEndExcluding":"6.6.157"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.4","versionEndExcluding":"6.12.109"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.4","versionEndExcluding":"6.18.50"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.4","versionEndExcluding":"7.2.4"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.4","versionEndExcluding":"7.3-rc1"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/33ce55b368b64d65941867add00e7f288cbb8234"},{"url":"https://git.kernel.org/stable/c/63b39e49a4c9d68e010e96b26fc7374f0864f2b1"},{"url":"https://git.kernel.org/stable/c/25a0758cf6bdbfddac2be71124c9bd0692f4b0b1"},{"url":"https://git.kernel.org/stable/c/b799f67119aff179719a0b1e12441ebbdaaf62f9"},{"url":"https://git.kernel.org/stable/c/390f6bd8583d177029d9df4bea6667509e55a765"}],"title":"tracing/user_events: Clear copied tracing state before fork duplication","x_generator":{"engine":"bippy-1.2.0"}}}}