CVE-2024-35871 in Linux
Résumé
par VulDB • 09/07/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
riscv: processus : Correction de la fuite du registre global (gp) du noyau
childregs représente les registres actifs pour le nouveau thread dans un contexte utilisateur. Pour un thread noyau, childregs->gp n'est jamais utilisé car le gp du noyau n'est pas modifié par switch_to. Pour une aide en mode utilisateur (user_mode_helper), la valeur de gp peut être observée depuis l'espace utilisateur après un appel execve ou potentiellement par d'autres moyens.
[Extrait de la discussion par courriel]
Le commentaire /* Thread noyau */ est quelque peu imprécis car il s'applique également aux threads user_mode_helper, qui exécutent un processus utilisateur, par exemple /sbin/init ou lorsque /proc/sys/kernel/core_pattern est défini sur une pipe. Ces threads n'ont pas le drapeau PF_KTHREAD activé et constituent des cibles valides pour ptrace, etc., même avant leur exécution (exec).
childregs correspond au contexte *utilisateur* lors de l'exécution d'un appel système et il peut être observé depuis l'espace utilisateur selon au moins cinq méthodes :
1. kernel_execve ne vide pas actuellement les registres entiers ; par conséquent, l'état initial des registres pour le PID 1 et autres processus utilisateurs démarrés par le noyau présente sp = pile utilisateur, gp = __global_pointer$ du noyau, tous les autres registres entiers étant mis à zéro par le memset mentionné dans le commentaire du correctif.
Il s'agit d'un bug en soi, mais je ne suis pas disposé à parier qu'il constitue la seule voie pour exploiter le problème traité par ce correctif.
2. ptrace(PTRACE_GETREGSET) : vous pouvez utiliser PTRACE_ATTACH sur un thread user_mode_helper avant son exécution (exec), mais ptrace nécessite que SIGSTOP soit délivré, ce qui ne peut se produire qu'aux limites entre l'espace utilisateur et le noyau.
3. /proc/*/task/*/syscall : cet outil lit sans problème pt_regs pour les user_mode_helpers avant la fin de l'exécution (exec), mais gp n'est pas parmi les registres retournés.
4. PERF_SAMPLE_REGS_USER : LOCKDOWN_PERF empêche normalement l'accès aux adresses noyau via PERF_SAMPLE_REGS_INTR, mais en raison de ce bug, des adresses noyau sont également exposées via PERF_SAMPLE_REGS_USER, qui est autorisé sous LOCKDOWN_PERF. Je n'ai pas tenté d'écrire de code d'exploitation (exploit).
5. Une grande partie de l'infrastructure de traçage permet l'accès aux registres utilisateur. Je n'ai pas cherché à déterminer quelles formes de traçage permettent cet accès sans autoriser préalablement l'accès aux registres noyau.
If you want to get best quality of vulnerability data, you may have to visit VulDB.