Description
In the Linux kernel, the following vulnerability has been resolved:

uprobes: Fix NULL pointer dereference in hprobe_expire()

Forking a task that has a pending uretprobe can oops the kernel with a
NULL pointer dereference in the clone() path:

BUG: kernel NULL pointer dereference, address: 0000000000000018
Oops: 0002 [#1] SMP NOPTI
RIP: 0010:hprobe_expire
CR2: 0000000000000018
Call Trace:
uprobe_copy_process
copy_process
kernel_clone
__x64_sys_clone
do_syscall_64
entry_SYSCALL_64_after_hwframe

This was found on real hosts on Meta fleet.

I've got the impression that this is what is happening:

CPU 1 CPU 2 (traced task)
----- -------------------
hit uprobe, prepare_uretprobe():
hprobe LEASED, refcount >= 1
uprobe_unregister()
put_uprobe(): refcount -> 0
fork() -> dup_utask()
hprobe_expire(hprobe, true)
try_get_uprobe() -> NULL
get_uprobe(NULL) <-- Oops

Only take the extra reference when the uprobe is non-NULL; a NULL means
it is gone and is the correct value to return.
Published: 2026-08-15
Score: 5.5 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The flaw is a NULL pointer dereference (CWE-476) in the Linux kernel's uprobe expiration routine, hprobe_expire. When a task that still holds a pending uretprobe is forked, the cleanup path can dereference a null pointer, causing a kernel oops and reboot. This results in an immediate loss of service for the affected machine.

Affected Systems

The defect resides in the core kernel code shared by all Linux distributions. Any kernel version that has not incorporated the recent patch commit is vulnerable. The issue was reproduced on production hosts within the Meta fleet, indicating that recent kernels lacking the fix are at risk.

Risk and Exploitability

The likely attack vector is local execution or privilege escalation that forces a process with a dangling uprobe reference to fork. Based on the description, the flaw can be triggered when a fork operation occurs after an uprobe has been unregistered while the task is still alive. The CVSS score is 5.5, the EPSS score is < 1%, and the vulnerability is not listed in the CISA KEV catalog. If an adversary can satisfy the prerequisite conditions, the kernel will crash, resulting in a denial of service. Given the exploitation constraints and lack of public exploitation evidence, the risk is considered moderate to high for systems that employ uprobes and perform frequent forking.

Generated by OpenCVE AI on August 21, 2026 at 23:42 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Apply the latest Linux kernel update that includes the fix for the null pointer dereference in hprobe_expire.
  • If an immediate kernel upgrade is not possible, ensure that any pending uretprobes are removed or disabled before forking processes to avoid the dangling reference scenario.
  • Monitor kernel logs for messages related to hprobe_expire or other uprobe handling to detect accidental regressions.

Generated by OpenCVE AI on August 21, 2026 at 23:42 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 21 Aug 2026 22:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-758

Thu, 20 Aug 2026 00:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-476
References
Metrics threat_severity

None

cvssV3_1

{'score': 5.5, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H'}

threat_severity

Moderate


Sat, 15 Aug 2026 16:00:00 +0000

Type Values Removed Values Added
Weaknesses CWE-758

Sat, 15 Aug 2026 12:45:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: uprobes: Fix NULL pointer dereference in hprobe_expire() Forking a task that has a pending uretprobe can oops the kernel with a NULL pointer dereference in the clone() path: BUG: kernel NULL pointer dereference, address: 0000000000000018 Oops: 0002 [#1] SMP NOPTI RIP: 0010:hprobe_expire CR2: 0000000000000018 Call Trace: uprobe_copy_process copy_process kernel_clone __x64_sys_clone do_syscall_64 entry_SYSCALL_64_after_hwframe This was found on real hosts on Meta fleet. I've got the impression that this is what is happening: CPU 1 CPU 2 (traced task) ----- ------------------- hit uprobe, prepare_uretprobe(): hprobe LEASED, refcount >= 1 uprobe_unregister() put_uprobe(): refcount -> 0 fork() -> dup_utask() hprobe_expire(hprobe, true) try_get_uprobe() -> NULL get_uprobe(NULL) <-- Oops Only take the extra reference when the uprobe is non-NULL; a NULL means it is gone and is the correct value to return.
Title uprobes: Fix NULL pointer dereference in hprobe_expire()
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-08-17T05:20:09.952Z

Reserved: 2026-08-15T05:44:03.903Z

Link: CVE-2026-74477

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-15T13:17:52.497

Modified: 2026-08-17T06:19:43.777

Link: CVE-2026-74477

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-08-15T00:00:00Z

Links: CVE-2026-74477 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-08-21T23:45:03Z

Weaknesses