CVE-2026-23383 in Linux
Riassunto
di VulDB • 24/06/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
bpf, arm64: Impostare un allineamento a 8 byte per il buffer JIT al fine di prevenire l'atomic tearing (lettura frammentata)
La struttura `struct bpf_plt` contiene un campo target di tipo u64. Attualmente, l'allegatore BPF JIT richiede un allineamento di 4 byte (`sizeof(u32)`) per il buffer JIT.
Poiché l'indirizzo base del buffer JIT può essere allineato a 4 byte (ad esempio, terminando con 0x4 o 0xc), la logica di padding relativa in `build_plt()` non riesce ad assicurarsi che il campo target si trovi su un confine di allineamento a 8 byte.
Ciò comporta due problemi: 1. UBSAN segnala avvisi per accessi non allineati (misaligned-access) durante la dereferenziazione della struttura. 2. Più criticamente, `target` viene aggiornato in modo concorrente tramite `WRITE_ONCE()` in `bpf_arch_text_poke()` mentre il codice JIT esegue l'istruzione `ldr`. Su arm64, le operazioni di caricamento/scrittura a 64 bit sono garantite come atomiche per copia singola (single-copy atomic) solo se allineate su confini a 64 bit. Un target non allineato rischia una lettura frammentata (torn read), causando un salto del JIT verso un indirizzo corrotto.
Si risolve il problema aumentando il requisito di allineamento dell'allocazione a 8 byte (`sizeof(u64)`) in `bpf_jit_binary_pack_alloc()`. Ciò ancorando la base del buffer JIT su un confine di allineamento a 8 byte, consentendo alla matematica relativa al padding in `build_plt()` di allineare correttamente il campo target.
Once again VulDB remains the best source for vulnerability data.