{"answers":{"affected":"It affects 1 product.","exploited":"There is no known exploitation of CVE-2026-98151 in the wild and no public exploit code.","fix":"Apply the vendor's patch.","what":"CVE-2026-98151 is a medium-severity vulnerability in Linux kernel, published on 25 Sep 2026. It can only be exploited from the same machine or local network, with no action from the victim."},"fix_prompt":"Check this codebase for CVE-2026-98151 and fix it if it is affected.\n\nWhat it is: CVE-2026-98151 is a medium-severity vulnerability in Linux kernel, published on 25 Sep 2026. It can only be exploited from the same machine or local network, with no action from the victim.\nExploitation: There is no known exploitation of CVE-2026-98151 in the wild and no public exploit code.\n\nAffected product: Linux kernel. No package-level version data is available, so check the vendor advisory linked from the reference page.\n\nTask:\n1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.\n2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.\n3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.\n4. Run the tests and summarise what changed and why.\n5. If nothing in the project is affected, say so and change nothing.\n\nReference: https://insights.sbomify.com/CVE-2026-98151/ (Markdown: https://insights.sbomify.com/CVE-2026-98151/index.md)","id":"CVE-2026-98151","markdown":"https://insights.sbomify.com/CVE-2026-98151/index.md","name":"CVE-2026-98151","record":{"aliases":["BELL-CVE-2026-98151","DEBIAN-CVE-2026-98151","GHSA-6969-2pr3-9qx5","UBUNTU-CVE-2026-98151"],"analysis":{"component_type":"kernel","fix_type":"patch","impacts":["denial_of_service"],"network_reachable":"adjacent_or_local","non_default_config":false,"product_category":"Linux kernel BPF","requires_auth":"low_privilege","summary":"A logic error in the Linux kernel BPF verifier allows unprivileged users to trigger a warning and potential denial of service via speculative pointer arithmetic.","user_interaction":"not_required","vuln_class":"other"},"analysis_generated_by":"qwen3.8-flash-next","assigner":"Linux","cpe":[{"product":"linux_kernel","vendor":"linux"}],"cvss":{"score":5.5,"severity":"medium","source":"nvd","vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H","version":"3.1"},"cwes":[{"id":"CWE-617","name":"Reachable Assertion"}],"description":"In the Linux kernel, the following vulnerability has been resolved:\n\nbpf: Fix REG INVARIANTS VIOLATION on speculative pointer arithmetic\n\nTake the following unprivileged program as an example:\n\n\tr0 = bpf_map_lookup_elem(...)\t/* PTR_TO_MAP_VALUE, offset 0 */\n\t...\n\t14: r0 += r1\t\t\t/* r1 is a bounded scalar */\n\t15: r9 = r0\n\nLoading it triggers a verifier warning from reg_bounds_sanity_check():\n\n\tverifier bug: REG INVARIANTS VIOLATION (alu): const subreg tnum out\n\tof sync with range bounds r64={.base=0x0, .size=0x0}\n\tr32={.base=0x0, .size=0xffffffff} var_off=(0x0, 0x0)\n\nWhat happens:\n\n1. Processing insn 14 (r0 += r1) in adjust_ptr_min_max_vals(), the new\n   offset is computed into dst_reg's var_off and 32/64-bit ranges.\n\n2. Because pointer registers do not track 32-bit subregister bounds,\n   __mark_reg32_unbounded() first sets r32 to the full range; r32 is\n   re-derived from the offset at the end of the function by\n   reg_bounds_sync().\n\n3. On the unprivileged path, sanitize_ptr_alu() is called and, via\n   sanitize_speculative_path() -\u003e push_stack(), snapshots the current\n   register state and schedules the next instruction (insn 15) to be\n   verified directly as a speculative path.\n\n4. That snapshot is taken between step 2 and the final reg_bounds_sync():\n   at this point dst_reg's var_off still holds the (const) original\n   offset while r32 has just been blanked to the full range, i.e. the two\n   are out of sync. When the speculative path later verifies insn 15\n   (r9 = r0), the inconsistent state reaches reg_bounds_sanity_check() and\n   trips the warning.\n\nvar_off and the 32-bit range must always be consistent. There are two\nways to keep the snapshot consistent:\n\n  1. sync var_off and r32 before the snapshot so they match, or\n  2. leave r32 at its original (already consistent) value and blank it\n     only after the snapshot.\n\nThe whole point of sanitize_ptr_alu() is to insert a harmless masking\nsequence that keeps the access in bounds under speculation, so the state\nit snapshots should faithfully represent that. Take approach 2: move\n__mark_reg32_unbounded() to after sanitize_ptr_alu(), so the speculative\nsnapshot keeps the pointer's original, consistent r32. The non-speculative\npath is unchanged: r32 is still blanked before the offset is applied and\nre-derived by reg_bounds_sync().","ecosystems":[],"exploits":{"exploitdb":0,"first_seen":null,"github_poc":0,"max_poc_stars":null,"metasploit":0,"nuclei":0,"refs":[],"tier":"none_known"},"has_fix":true,"headline":"bpf: Fix REG INVARIANTS VIOLATION on speculative pointer arithmetic","id":"CVE-2026-98151","indexable":true,"kev":null,"kind":"cve","links":{"ecosystem":null,"product":"linux:linux_kernel","products":["linux:linux_kernel"],"type":"other","year":"2026"},"n_packages":0,"n_references":4,"next":{"headline":"nvmet-rdma: fix queue leak when connect backlog is exceeded","id":"CVE-2026-98152"},"packages":[],"prev":{"headline":"bpf: Fix BPF_F_CPU validation for sparse CPU IDs","id":"CVE-2026-98150"},"products":["Linux"],"published":"2026-09-25","related":[{"cvss_score":8.8,"headline":"Linux Kernel Out-of-Bounds Write","id":"CVE-2026-53266","kev_date_added":"2026-09-18","published":"2026-06-25"},{"cvss_score":8.8,"headline":"Linux Kernel Improper Input Validation","id":"CVE-2013-6282","kev_date_added":"2022-09-15","published":"2013-11-19"},{"cvss_score":8.4,"headline":"Linux Kernel Heap-Based Buffer Overflow","id":"CVE-2022-0185","kev_date_added":"2024-08-21","published":"2022-02-11"},{"cvss_score":8.4,"headline":"Linux Kernel Privilege Escalation","id":"CVE-2013-2094","kev_date_added":"2022-09-15","published":"2013-05-14"},{"cvss_score":7.8,"headline":"Linux Kernel Unspecified","id":"CVE-2026-53362","kev_date_added":"2026-08-27","published":"2026-07-04"},{"cvss_score":7.8,"headline":"Linux Kernel Missing Initialization of a Variable","id":"CVE-2026-46300","kev_date_added":"2026-10-28","published":"2026-05-23"},{"cvss_score":7.8,"headline":"Linux Kernel Race Condition","id":"CVE-2025-39964","kev_date_added":"2026-09-18","published":"2025-10-13"}],"sources":[{"class":"attribution","licence":"CVE Terms of Use (MITRE)","name":"CVE List","prefix":"CVE"},{"class":"attribution","licence":"US public information, NVD API terms","name":"NVD"},{"class":"attribution","licence":"CWE Terms of Use","name":"CWE (MITRE)"},{"class":"attribution","licence":"FIRST CVSS licence","name":"CVSS (FIRST)"}],"ssvc":{"automatable":null,"exploitation":null,"technical_impact":null},"state":"PUBLISHED","updated":"2026-10-19","vendors":["Linux"]},"summary":"A logic error in the Linux kernel BPF verifier allows unprivileged users to trigger a warning and potential denial of service via speculative pointer arithmetic.","url":"https://insights.sbomify.com/CVE-2026-98151/"}