7.8

CVE-2026-31525: bpf: Fix undefined behavior in interpreter sdiv/smod for INT_MIN

Modified
AliasesUBUNTU-CVE-2026-31525DEBIAN-CVE-2026-31525
Published 22-04-2026Last modified 19-10-2026

Vulnerability summary

CVE-2026-31525 is a high (CVSS 7.8) Out-of-bounds Write vulnerability in linux. EPSS estimates a 0.16% chance of exploitation in the next 30 days, higher than 5.5% of scored vulnerabilities.

Priority
Routine

Not severe (CVSS 7.8, local access); no exploitation reported by the 5 checked sources

Source freshness unavailable

How is this decided?
CVSS score
7.8/10
010
High · v3.1 (CVE.org)
EPSS score
0.16%
0%100%
Low · -0.01 pp in 30 days
KEVNot listedNot listed by any tracked catalog.
RansomwareNot flaggedNo ransomware use recorded.
Public exploits0No public exploits recorded

Advisory lineage

Upstream 0 · Downstream 18 · Related 16

Timeline

  1. 22-04-2026
    PublishedVulnerability first disclosed.
  2. 19-10-2026
    Last modifiedVulnerability information updated.

Description

In the Linux kernel, the following vulnerability has been resolved: bpf: Fix undefined behavior in interpreter sdiv/smod for INT_MIN The BPF interpreter's signed 32-bit division and modulo handlers use the kernel abs() macro on s32 operands. The abs() macro documentation (include/linux/math.h) explicitly states the result is undefined when the input is the type minimum. When DST contains S32_MIN (0x80000000), abs((s32)DST) triggers undefined behavior and returns S32_MIN unchanged on arm64/x86. This value is then sign-extended to u64 as 0xFFFFFFFF80000000, causing do_div() to compute the wrong result. The verifier's abstract interpretation (scalar32_min_max_sdiv) computes the mathematically correct result for range tracking, creating a verifier/interpreter mismatch that can be exploited for out-of-bounds map value access. Introduce abs_s32() which handles S32_MIN correctly by casting to u32 before negating, avoiding signed overflow entirely. Replace all 8 abs((s32)...) call sites in the interpreter's sdiv32/smod32 handlers. s32 is the only affected case -- the s64 division/modulo handlers do not use abs().

CVSS metrics

5 scores · 4 sources · 2 versions

EPSS trend

Probability

0.16%

Chance of exploitation in the next 30 days

Percentile

6%

Versus all other CVEs

30-day change

Decrease -0.01 pp

From 0.18% on 04-10-2026

04-10-202603-11-2026

Known exploited

Compare KEV catalogs
CISA KEV

Not in the CISA KEV catalog.

ENISA CNW

Not in the ENISA CNW catalog.

CIRCL

Not in the CIRCL catalog.

Public exploits

0 found

No public exploits indexed.

Weaknesses

CWE · root cause

Affected systems

Version check

Known conditions: local access, low-privilege account, no user interaction (CVSS vector). Other conditions: not stated in public data.

Ubuntu130 products
  • linux< 6.8.0-136.136 | All versions (No fix recorded)
  • linux-allwinner-5.19All versions (No fix recorded)
  • linux-aws< 6.8.0-1061.64 | All versions (No fix recorded)
  • linux-aws-5.0All versions (No fix recorded)
  • linux-aws-5.11All versions (No fix recorded)
Linux2 products
  • linux≥ ec0e2da95f72d4a46050a4d994e4fe471474fd80, < 694ea55f1b1c74f9942d91ec366ae9e822422e42 | ≥ ec0e2da95f72d4a46050a4d994e4fe471474fd80, < 9ab1227765c446942f290c83382f0b19887c55cf | ≥ ec0e2da95f72d4a46050a4d994e4fe471474fd80, < f14ca604c0ff274fba19f73f1f0485c0047c1396 | ≥ ec0e2da95f72d4a46050a4d994e4fe471474fd80, < 0d5d8c3ce45c734aaf3c51cbef59155a6746157d | ≥ ec0e2da95f72d4a46050a4d994e4fe471474fd80, < c77b30bd1dcb61f66c640ff7d2757816210c7cb0 | 6.6
  • linux_kernel≥ 6.6, < 6.6.131 | ≥ 6.7, < 6.12.80 | ≥ 6.13, < 6.18.21 | ≥ 6.19, < 6.19.11 | 7.0:rc1 | 7.0:rc2 | 7.0:rc3 | 7.0:rc4
Debian1 product
  • linux< 6.12.85-1 | < 6.19.11-1

3 vendors · 133 products

References

24 links
Show all 24 references