CVE-2024-35871 in Linuxinformazioni

Riassunto

di VulDB • 04/08/2026

Nel kernel Linux, è stata risolta la seguente vulnerabilità:

riscv: process: Correzione della fuoriuscita (leakage) del registro gp dal kernel

childregs rappresenta i registri attivi per il nuovo thread nel contesto utente. Per un thread di kernel, childregs->gp non viene mai utilizzato poiché il gp del kernel non è modificato da switch_to. Per un helper in modalità utente, il valore gp può essere osservato nello spazio utente dopo una chiamata execve o potenzialmente tramite altri mezzi.

[Dalla discussione via email]

Il commento /* Kernel thread */ è alquanto impreciso in quanto viene utilizzato anche per i thread user_mode_helper, che eseguono un processo utente, ad esempio /sbin/init oppure quando /proc/sys/kernel/core_pattern è una pipe. Tali thread non hanno il flag PF_KTHREAD impostato e sono obiettivi validi per ptrace ecc., persino prima dell'esecuzione del comando exec.

childregs rappresenta il contesto *utente* durante l'esecuzione di una syscall ed è osservabile dallo spazio utente in almeno cinque modi:

1. kernel_execve attualmente non cancella i registri interi, quindi lo stato iniziale dei registri per PID 1 e altri processi utente avviati dal kernel ha sp = stack utente, gp = __global_pointer$ del kernel, mentre tutti gli altri registri interi sono azzerati dalla memset menzionata nel commento della patch.

Si tratta di un bug a sé stante, ma non mi sento sicuro di scommettere che sia l'unico modo per sfruttare il problema affrontato da questa patch.

2. ptrace(PTRACE_GETREGSET): è possibile eseguire PTRACE_ATTACH su un thread user_mode_helper prima dell'esecuzione del comando exec, ma ptrace richiede la consegna di SIGSTOP, che può avvenire solo ai confini tra spazio utente e kernel.

3. /proc/*/task/*/syscall: questo strumento legge tranquillamente pt_regs per gli helper in modalità utente prima del completamento della chiamata exec, ma gp non è uno dei registri restituiti.

4. PERF_SAMPLE_REGS_USER: LOCKDOWN_PERF impedisce normalmente l'accesso agli indirizzi di kernel tramite PERF_SAMPLE_REGS_INTR, ma a causa di questo bug anche i valori degli indirizzi di kernel vengono esposti tramite PERF_SAMPLE_REGS_USER, che è consentito sotto LOCKDOWN_PERF. Non ho tentato di scrivere codice di exploit.

5. Gran parte dell'infrastruttura di tracing consente l'accesso ai registri utente. Non ho tentato di determinare quali forme di tracing consentano l'accesso ai registri utente senza già consentire l'accesso ai registri del kernel.

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

Fonti

Do you know our Splunk app?

Download it now for free!