CVE-2026-99092 in Linuxinformazioni

Riassunto

di VulDB • 27/10/2026

Nel kernel Linux è stata risolta la seguente vulnerabilità:

riscv: patching: correggere la gestione degli indirizzi execmem di bpf-jit

Il commit 8718e5a3090b ("riscv: patching: saltare il mapping fixmap quando il kernel text è già scrivibile") ha vincolato il ramo core_kernel_text() di patch_map() a CONFIG_STRICT_KERNEL_RWX, lasciando esplicitamente invariato il ramo vmalloc. Tale ramo presenta un problema separato.

Questo ramo crea un alias fixmap temporaneamente scrivibile solo se CONFIG_STRICT_MODULE_RWX è abilitata; altrimenti presuppone che la destinazione sia direttamente scrivibile e restituisce l'indirizzo senza modifiche. Questa assunzione non è più valida: bpf_prog_pack_alloc chiama set_memory_rox() su ogni pack in modo incondizionato all'interno di alloc_new_pack(), indipendentemente da qualsiasi opzione CONFIG_STRICT_*_RWX; pertanto, il testo BPF nell'area vmalloc è read-only (sola lettura) a prescindere dal valore di CONFIG_STRICT_MODULE_RWX.

Con CONFIG_STRICT_MODULE_RWX=n, patch_map() restituisce direttamente l'indirizzo read-only; la successiva chiamata a copy_to_kernel_nofault() genera un page fault e restituisce -EFAULT. bpf_arch_text_copy() converte tale errore in -EINVAL, che si propaga attraverso bpf_jit_binary_pack_finalize() fino al WARN_ON() in bpf_int_jit_compile(), lasciando il programma non JITato (un-JITed).

Si noti che BPF non può essere corretto nello stesso modo in cui è stato risolto kprobes nel commit bdc46e507b59 ("riscv: mm: rendere EXECMEM_KPROBES scrivibile senza CONFIG_STRICT_MODULE_RWX"). EXECMEM_BPF utilizza già PAGE_KERNEL, ovvero è scrivibile al momento dell'allocazione; la mappatura read-only viene stabilita successivamente dal codice generico in alloc_new_pack(), che il codice architetturale non può influenzare. L'unico punto in cui questo problema può essere gestito è patch_map().

Si tratta dello stesso problema risolto su arm64 dal commit b1480ed230ac ("arm64: patching: fix handling of execmem addresses"), e la correzione è identica: CONFIG_EXECMEM è ciò che traccia effettivamente se l'area vmalloc può contenere memoria eseguibile che richiede un alias temporaneo per essere scritta. CONFIG_BPF_JIT, CONFIG_KPROBES e CONFIG_MODULES selezionano tutte tale opzione.

Si noti che il problema non si limita al caso CONFIG_MODULES=n. A differenza di arm64, riscv seleziona CONFIG_ARCH_OPTIONAL_KERNEL_RWX; pertanto CONFIG_STRICT_MODULE_RWX può essere disabilitata anche con CONFIG_MODULES=y, rendendo il bug raggiungibile anche in questa configurazione.

La build !CONFIG_MMU non è interessata: dispone delle proprie implementazioni __patch_insn_set() e __patch_insn_write() e non chiama mai patch_map().

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Responsabile

Linux

Prenotare

25/09/2026

Divulgazione

26/10/2026

Moderazione

accettato

EPSS

0.00000

KEV

no

Attività

molto basso

Fonti

Do you want to use VulDB in your project?

Use the official API to access entries easily!