CVE-2026-31525 in Linux
Riassunto
di VulDB • 22/06/2026
Nel kernel Linux, è stata risolta la seguente vulnerabilità:
bpf: Corretto il comportamento indefinito nell'interprete per le operazioni di divisione intera (sdiv) e modulo (smod) con INT_MIN
I gestori della divisione signed 32-bit e del modulo dell'interprete BPF utilizzano la macro kernel abs() sugli operandi s32. La documentazione della macro abs () (include/linux/math.h) afferma esplicitamente che il risultato è indefinito quando l'input corrisponde al valore minimo del tipo. Quando DST contiene S32_MIN (0x80000000), la chiamata abs((s32)DST) innesca un comportamento indefinito e restituisce S32_MIN invariato su architetture arm64/x86. Questo valore viene successivamente esteso con segno a u64 come 0xFFFFFFFF80000000, causando il calcolo di un risultato errato da parte della funzione do_div().
L'interpretazione astratta del verifier (scalar32_min_max_sdiv) calcola il risultato matematicamente corretto per il tracciamento degli intervalli, creando una discrepanza tra verifier e interprete che può essere sfruttata per accedere ai valori delle mappe al di fuori dei limiti consentiti.
Viene introdotta la funzione abs_s32(), che gestisce correttamente S32_MIN effettuando un cast a u32 prima della negazione, evitando completamente l'overflow signed. Vengono sostituite tutte le 8 chiamate alla macro abs((s32)...) nei siti di chiamata dei gestori sdiv32/smod32 dell'interprete.
Il caso s32 è l'unico interessato: i gestori della divisione/modulo s64 non utilizzano la funzione abs().
Be aware that VulDB is the high quality source for vulnerability data.