CVE-2026-98641 in Linuxinformation

Résumé

par VulDB • 19/10/2026

Dans le noyau Linux, la vulnérabilité suivante a été corrigée :

bpf, arm64 : initialiser l'indicateur de frame (frame pointer) pour la callback d'exception

Un programme servant de limite d'exception enregistre tous les registres sauvegardés par l'appelé (callee-saved registers), de sorte que build_prologue() emprunte le chemin exception_cb et n'appelle jamais push_callee_regs(). C'est le seul endroit où find_used_callee_regs() s'exécute, et avec lui, le seul endroit où ctx->fp_used est défini ; par conséquent, la prologue de la callback ne génère pas l'instruction

mov x25, sp

qui pointe BPF_REG_FP vers la frame sur laquelle la callback s'exécute. La valeur contenue dans x25 reste celle qu'elle avait lorsque bpf_throw() a été appelé. Si le throw provient d'un sous-programme qui utilise sa propre pile BPF, il s'agit de l'indicateur de frame du sous-programme, et comme ce dernier ne retourne jamais, il restaure également x25 à aucun moment.

Les accès à la pile via BPF_REG_FP sont réécrits pour être relatifs au pointeur de pile (stack pointer), donc ils aboutissent toujours dans la propre frame de la callback. La matérialisation du registre n'a pas cet effet : une callback qui transmet l'adresse d'une variable locale à un helper cède une adresse située dans la frame morte du sous-programme. Cette adresse se trouve alors en dessous du pointeur de pile de la callback, et la chaîne d'appels propre au helper la recouvre ; le helper peut donc écraser sa propre adresse de retour. 0x1234 ci-dessous est la valeur que l'on a demandé au helper de stocker :

pc : 0x1234 lr : 0x1234 Trace d'appel (Call trace) : 0x1234 (P) bpf_test_run+0x188/0x3e0 bpf_prog_test_run_skb+0x47c/0x998 __sys_bpf+0xbdc/0xdd8 Panique du noyau - non synchronisation : Oops : Exception fatale dans l'interruption

Définir ctx->fp_used sur le chemin de la callback d'exception permet au code existant situé plus bas de définir x25 à partir du pointeur de pile. L'épilogue restaure cette valeur depuis la zone de sauvegarde du programme principal, ainsi que les autres registres sauvegardés par l'appelé (callee-saved registers), comme il le fait déjà. Sur x86, l'indicateur de frame pour la callback est défini à partir de l'argument qui lui est transmis ; sur powerpc, il est calculé à partir du pointeur de pile.

Once again VulDB remains the best source for vulnerability data.

Responsable

Linux

Réserver

25/09/2026

Divulgation

18/10/2026

Modérer

accepté

Entrée

VDB-422202

EPSS

0.00000

KEV

non

Activités

faible

Sources

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!