CVE-2026-74344 (GCVE-0-2026-74344)
Vulnerability from cvelistv5
Published
2026-08-15 05:58
Modified
2026-08-17 05:46
Severity ?
VLAI Severity ?
EPSS score ?
Summary
In the Linux kernel, the following vulnerability has been resolved:
bpf: Clear rb node linkage when freeing bpf_rb_root
bpf_rb_root_free() detaches the root by copying the current rb_root_cached
and then replacing the live root with RB_ROOT_CACHED. It then walks the
copied root and drops each object contained in the tree.
This leaves the rb node state intact while dropping the object. If the
object is refcounted and survives the drop, its bpf_rb_node_kern still
contains an owner pointer to the freed root and stale rb tree linkage. If
a later bpf_rb_root allocation reuses the same address, bpf_rbtree_remove()
can incorrectly pass the owner check and call rb_erase_cached() on a node
whose rb pointers belong to the old tree.
Mirror the list draining behavior by marking nodes as busy while the root
is being detached, then clear the rb node and release the owner before
dropping the containing object. This makes surviving nodes unowned and
safe to reject from remove or accept for a later add.
References
Impacted products
{
"containers": {
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"kernel/bpf/helpers.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "2eb39de4962f842d653e96818ae372665cd481fd",
"status": "affected",
"version": "9c395c1b99bd23f74bc628fa000480c49593d17f",
"versionType": "git"
},
{
"lessThan": "574612793bed416f6c05fe7c9b50e9eb0441997e",
"status": "affected",
"version": "9c395c1b99bd23f74bc628fa000480c49593d17f",
"versionType": "git"
},
{
"lessThan": "4a7910ee060d8ce55612f5b3cc267f3a265a3cec",
"status": "affected",
"version": "9c395c1b99bd23f74bc628fa000480c49593d17f",
"versionType": "git"
},
{
"status": "affected",
"version": "1d0675957d35ac5e514073481beda62e4e1e2ec5",
"versionType": "git"
},
{
"lessThan": "6.3",
"status": "affected",
"version": "6.2.15",
"versionType": "semver"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"kernel/bpf/helpers.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"status": "affected",
"version": "6.3"
},
{
"lessThan": "6.3",
"status": "unaffected",
"version": "0",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.18.*",
"status": "unaffected",
"version": "6.18.40",
"versionType": "semver"
},
{
"lessThanOrEqual": "7.1.*",
"status": "unaffected",
"version": "7.1.5",
"versionType": "semver"
},
{
"lessThanOrEqual": "*",
"status": "unaffected",
"version": "7.2",
"versionType": "original_commit_for_fix"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.18.40",
"versionStartIncluding": "6.3",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.1.5",
"versionStartIncluding": "6.3",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.2",
"versionStartIncluding": "6.3",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "6.2.15",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nbpf: Clear rb node linkage when freeing bpf_rb_root\n\nbpf_rb_root_free() detaches the root by copying the current rb_root_cached\nand then replacing the live root with RB_ROOT_CACHED. It then walks the\ncopied root and drops each object contained in the tree.\n\nThis leaves the rb node state intact while dropping the object. If the\nobject is refcounted and survives the drop, its bpf_rb_node_kern still\ncontains an owner pointer to the freed root and stale rb tree linkage. If\na later bpf_rb_root allocation reuses the same address, bpf_rbtree_remove()\ncan incorrectly pass the owner check and call rb_erase_cached() on a node\nwhose rb pointers belong to the old tree.\n\nMirror the list draining behavior by marking nodes as busy while the root\nis being detached, then clear the rb node and release the owner before\ndropping the containing object. This makes surviving nodes unowned and\nsafe to reject from remove or accept for a later add."
}
],
"metrics": [
{
"cvssV3_1": {
"baseScore": 7.8,
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
"version": "3.1"
},
"scenarios": [
{
"lang": "en",
"value": "AV:L - The bug is reached only through BPF kfuncs (bpf_rbtree_remove) and bpf_rb_root_free during BPF map/object teardown, all gated by the bpf(2) syscall and local BPF program loading; there is no network, adjacent-radio, or physical-device entry path.\nAC:L - An attacker fully controls refcount retention (bpf_refcount_acquire), when bpf_rb_root_free runs (map close/delete or bpf_obj_drop), and subsequent bpf_rb_root reallocation to reuse the freed address; no victim timing or uncontrollable heap layout is required beyond normal BPF allocator reuse.\nPR:L - Exploitation requires loading BPF programs/maps using bpf_rb_root and refcounted graph nodes, which the kernel enforces with CAP_BPF at map BTF setup; on typical hosts this is reachable by an unprivileged user via user namespaces (CAP_BPF inside the namespace), not init-namespace root only.\nUI:N - No action by another user or administrator is required; the attacker loads their own BPF program, populates the rbtree, triggers teardown, and calls bpf_rbtree_remove on stale nodes.\nS:U - Impact is kernel heap corruption and local privilege escalation within the same kernel security boundary; it is not a VM escape, IOMMU bypass, or cross-authority sandbox breakout.\nC:H - Stale bpf_rb_node linkage lets bpf_rbtree_remove pass the owner check and invoke rb_erase_cached on bogus rb_left/rb_right/parent pointers, corrupting adjacent kernel memory in ways that can be turned into arbitrary kernel memory disclosure.\nI:H - rb_erase_cached on nodes whose rb pointers still reference a detached tree rewrites arbitrary kernel rbtree/list metadata and enables heap grooming for control-flow hijack and local root, not merely a bounded or transient modification.\nA:H - Calling rb_erase_cached with inconsistent rb pointers commonly causes kernel BUG/oops/panic or wedged allocator state, giving reliable system crash or hang even before full exploitation."
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-08-17T05:46:09.476Z",
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux"
},
"references": [
{
"url": "https://git.kernel.org/stable/c/2eb39de4962f842d653e96818ae372665cd481fd"
},
{
"url": "https://git.kernel.org/stable/c/574612793bed416f6c05fe7c9b50e9eb0441997e"
},
{
"url": "https://git.kernel.org/stable/c/4a7910ee060d8ce55612f5b3cc267f3a265a3cec"
}
],
"title": "bpf: Clear rb node linkage when freeing bpf_rb_root",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
},
"cveMetadata": {
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"assignerShortName": "Linux",
"cveId": "CVE-2026-74344",
"datePublished": "2026-08-15T05:58:33.231Z",
"dateReserved": "2026-08-15T05:44:03.886Z",
"dateUpdated": "2026-08-17T05:46:09.476Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
Loading…
Loading…
Sightings
| Author | Source | Type | Date |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
- Confirmed: The vulnerability is confirmed from an analyst perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
- Patched: This vulnerability was successfully patched by the user reporting the sighting.
- Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
- Not confirmed: The user expresses doubt about the veracity of the vulnerability.
- Not patched: This vulnerability was not successfully patched by the user reporting the sighting.
Loading…
Loading…