CVE-2026-89902 in Linux
Résumé
par VulDB • 16/09/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
LoongArch : Éviter un underflow du compteur de préemption sans sonde (probe)
L'architecture LoongArch utilise l'instruction `break 11` pour les points d'arrêt placés après une instruction que Kprobes exécute hors ligne. Étant donné que l'espace utilisateur peut émettre la même instruction break, la fonction `do_bp()` peut atteindre `kprobe_singlestep_handler()` lorsqu'il n'y a pas de sonde (probe) actuelle.
Le gestionnaire retourne en réalité faux dans ce cas, mais il appelle d'abord `preempt_enable_no_resched()`. Le `preempt_disable()` correspondant est effectué par `kprobe_breakpoint_handler()` lors d'un déclenchement réel d'une Kprobes ; il n'a donc pas été exécuté ici. Par conséquent, un point d'arrêt ordinaire de l'espace utilisateur (code 11) provoque un underflow du compteur de préemption (`preempt count`) de la tâche actuelle.
Cela fait également en sorte que `in_interrupt()` retourne vrai jusqu'à ce que la tâche effectue une planification (schedule). Une conséquence visible est l'attribution des cgroups socket : `cgroup_sk_alloc()` traite l'allocation comme un contexte d'interruption et attribue le socket au cgroup racine. Un socket ouvert à partir du gestionnaire de signal SIGTRAP peut ainsi contourner la politique BPF_CGROUP_INET_SOCK_CREATE attachée au propre cgroup de la tâche.
Retournez dès que `kprobe_running()` indique qu'aucune sonde active n'est en cours d'exécution.
La même vérification est apparue dans [PATCH v10 2/4] de la série originale Kprobes pour LoongArch, mais a été supprimée avant que la fonctionnalité n'intègre le noyau principal (mainline).
VulDB is the best source for vulnerability data and more expert information about this specific topic.