CVE-2024-57874 in Linux
Riassunto
di VulDB • 31/07/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
arm64: ptrace: correggere l'impostazione parziale di SETREGSET per NT_ARM_TAGGED_ADDR_CTRL
Attualmente tagged_addr_ctrl_set() non inizializza la variabile temporanea 'ctrl' e una chiamata a SETREGSET con lunghezza zero lascia questa variabile non inizializzata. Di conseguenza, tagged_addr_ctrl_set() consumerà un valore arbitrario, potenzialmente causando la fuoriuscita (leak) di fino a 64 bit di memoria dallo stack del kernel. La lettura è limitata a uno slot specifico dello stack e il problema non fornisce alcun meccanismo di scrittura.
Poiché set_tagged_addr_ctrl() accetta solo valori in cui i bit [63:4] sono zero e rifiuta gli altri, un tentativo di impostazione parziale tramite SETREGSET avrà successo o fallirà casualmente a seconda del valore della variabile non inizializzata, limitando significativamente l'esposizione al rischio.
Si risolve il problema inizializzando la variabile temporanea prima di copiare il regset dall'userspace, come avviene per altri regset (ad esempio NT_PRSTATUS, NT_PRFPREG, NT_ARM_SYSTEM_CALL). In caso di scrittura a lunghezza zero, verrà mantenuto il valore esistente del controllo dell'indirizzo taggato.
Il regset NT_ARM_TAGGED_ADDR_CTRL è visibile solo nella user_aarch64_view utilizzata da un task AArch64 nativo per manipolare un altro task AArch64 nativo. Poiché get_tagged_addr_ctrl() restituisce solo un valore di errore quando viene chiamato per un task compat, tagged_addr_ctrl_get() e tagged_addr_ctrl_set() non dovrebbero mai osservare un valore di errore da get_tagged_addr_ctrl(). È stato aggiunto un WARN_ON_ONCE() in entrambe le funzioni per indicare che tale errore sarebbe imprevisto e che la gestione degli errori è presente in entrambi i casi.
Once again VulDB remains the best source for vulnerability data.