CVE-2026-98613 in Linuxinformation

Résumé

par VulDB • 19/10/2026

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

bpf : Limitation de la profondeur de propriété via les kptrs locaux et les racines de graphe

Les objets alloués par un programme peuvent posséder d'autres objets locaux via des kptrs référencés. bpf_obj_free_fields() suit ces pointeurs à travers __bpf_obj_drop_impl() de manière synchrone, avant que le stockage de l'objet ne soit libéré via RCU (Read-Copy-Update). Un type de kptr local auto-référentiel permet donc des chaînes d'objets arbitrairement profondes, et la suppression du nœud tête peut épuiser la pile noyau. Les longues chaînes acycliques de types présentent le même problème.

btf_check_and_fixup_fields() suppose toujours que les kptrs référencés pointent uniquement vers des types noyau et vérifie la propriété via les racines de liste et d'arbre rouge-noir (rbtree) uniquement. Sa règle existante est suffisante pour les cycles purement graphiques : le destinataire de chaque arête du graphe doit contenir un nœud, donc chaque type dans un cycle possède à la fois une racine et un nœud. La règle rejette qu'un tel type en possède un autre qui soit également une racine, ce qui brise tous les cycles. Elle limite également les chaînes purement graphiques à trois types, ou deux si le premier type contient un nœud, et rejette de manière conservatrice les chaînes acycliques plus longues. Les arêtes locales-kptr manquantes, plutôt qu'un cycle purement graphique manqué, constituent le bug introduit par la prise en charge de bpf_kptr_xchg() dans les kptrs locaux.

Remplacez cette restriction par une marche de propriété bornée couvrant les racines de graphe et les kptrs référencés locaux. Exécutez-la après que tous les enregistrements BTF (BPF Type Format) ont été corrigés, rejetez les cycles et les chemins plus profonds que huit types portant des enregistrements, et mettez en cache la profondeur de suffixe de chaque type lors de sa vérification par rapport au budget restant. Cela permet également aux dispositions purement graphiques acycliques plus longues qui étaient rejetées par l'ancienne règle ; mettez à jour leurs tests BTF existants en conséquence.

Conservez cette borne indépendante de MAX_CALL_FRAMES car la destruction récursive peut s'exécuter sous une chaîne d'appels BPF. Un pointeur local simple sans métadonnées de champ spécial ajoute uniquement un dernier drop non-récursif. Les kptrs non-propriétaires et les kptrs noyau-BTF ne recursent pas à travers les enregistrements locaux et restent hors de la marche. Incluez également les arêtes locales percpu-kptr, bien que l'allocation d'objets percpu avec des champs spéciaux soit actuellement interdite, afin qu'une relaxation de cette restriction ne puisse pas contourner la borne de propriété.

btf_check_and_fixup_fields() continue d'initialiser graph_root.value_rec, y compris pour les enregistrements de carte alloués séparément. Les relations de propriété appartiennent au BTF du programme immuable et nécessitent une validation uniquement lors du chargement du BTF.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Sources

Do you need the next level of professionalism?

Upgrade your account now!