GHSA-W7PV-JWFV-F7CM
Vulnerability from github – Published: 2026-09-25 12:31 – Updated: 2026-09-25 12:31In the Linux kernel, the following vulnerability has been resolved:
bpf: Don't infer non-NULL from a pointer with an unbounded offset
reg_not_null() decides that a register holds a non-NULL value by looking at its type alone. For pointer types that allow arithmetic the type only guarantees a non-NULL base, in case of an unbound offset the runtime offset value might still add up to NULL. Consider the followng program:
r6 = bpf_map_lookup_elem(map, &0); / present / if (r6 == 0) return 0; r7 = bpf_map_lookup_elem(map, &1); / absent, NULL at runtime / r8 = r7; r8 -= r6; / pointer - pointer: unknown scalar, -r6 / r8 <<= 1; r8 >>= 1; / any non-negative offset is accepted by / / check_reg_sane_offset_ptr() / r6 += r8; / verifier: map value; runtime: zero / if (r7 != r6) return 0; (u8 )(r7 + 0); / r7 is inferred non-NULL, both are zero /
At runtime both registers are zero, the comparison is true and the load faults with NULL pointer dereference.
Require the offset to be within +-BPF_MAX_VAR_OFF in reg_not_null().
{
"affected": [],
"aliases": [
"CVE-2026-98043"
],
"database_specific": {
"cwe_ids": [],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2026-09-25T11:17:33Z",
"severity": null
},
"details": "In the Linux kernel, the following vulnerability has been resolved:\n\nbpf: Don\u0027t infer non-NULL from a pointer with an unbounded offset\n\nreg_not_null() decides that a register holds a non-NULL value by\nlooking at its type alone. For pointer types that allow arithmetic the\ntype only guarantees a non-NULL base, in case of an unbound offset\nthe runtime offset value might still add up to NULL.\nConsider the followng program:\n\n r6 = bpf_map_lookup_elem(map, \u00260); /* present */\n if (r6 == 0) return 0;\n r7 = bpf_map_lookup_elem(map, \u00261); /* absent, NULL at runtime */\n r8 = r7;\n r8 -= r6; /* pointer - pointer: unknown scalar, -r6 */\n r8 \u003c\u003c= 1;\n r8 \u003e\u003e= 1; /* any non-negative offset is accepted by */\n /* check_reg_sane_offset_ptr() */\n r6 += r8; /* verifier: map value; runtime: zero */\n if (r7 != r6) return 0;\n *(u8 *)(r7 + 0); /* r7 is inferred non-NULL, both are zero */\n\nAt runtime both registers are zero, the comparison is true and the\nload faults with NULL pointer dereference.\n\nRequire the offset to be within +-BPF_MAX_VAR_OFF in reg_not_null().",
"id": "GHSA-w7pv-jwfv-f7cm",
"modified": "2026-09-25T12:31:34Z",
"published": "2026-09-25T12:31:34Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-98043"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/67b529f521a6676cdfc78b91b0217d7eaa84216b"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/cb6642048739bf4ee5aa09fe465511f1e87caa63"
}
],
"schema_version": "1.4.0",
"severity": []
}
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
Browse all ATT&CK techniques and the vulnerabilities related to each.
Related by attack behaviour
Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.