CVE-2026-89664 in Linuxinformation

Résumé

par VulDB • 12/09/2026

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

nfsd : libération des ACL POSIX décodées via OPEN par op_release

nfsd4_decode_createhow4() appelle nfsd4_decode_fattr4(), qui alloue des objets struct posix_acl avec compteur de références via posix_acl_alloc() et les stocke dans open->op_pacl et open->op_dpacl. Ces pointeurs doivent être libérés une fois le composé OPEN terminé.

Lorsque nfsd4_decode_open_claim4() renvoie une erreur non modifiant seqid, l'ordonnanceur (dispatcher) effectue un court-circuit avant que op_func ne s'exécute :

nfsd4_proc_compound() if (op->status && op->opnum == OP_OPEN) op->status = nfsd4_open_omfg(...) if (!seqid_mutating_err(ntohl(op->status))) return op->status; /* nfsd4_open() ne s'exécute jamais */ ... opdesc->op_release(&op->u) /* doit toujours libérer op_pacl/op_dpacl */

Avant cette modification, OP_OPEN n'avait pas de .op_release dans nfsd4_ops[], et la paire de libération résidait à l'intérieur de nfsd4_open() sur son étiquette out_err. Sur le chemin du court-circuit, nfsd4_open() n'est jamais invoqué, donc les références posix_acl fuient (leak) pour chaque composé OPEN malformé comportant des attributs createhow4 ACL POSIX valides.

Ajout de nfsd4_open_release() et câblage en tant que .op_release pour OP_OPEN. posix_acl_release() est sûr face aux valeurs NULL, donc le site de libération unique couvre à la fois le chemin normal et le court-circuit nfsd4_open_omfg. Suppression de la paire posix_acl_release() correspondante dans l'étiquette out_err de nfsd4_open() pour éviter une double libération (double-free).

La boucle du composé possède deux branches d'encodage : nfsd4_encode_operation() pour les opérations normales, et nfsd4_encode_replay() pour les opérations rejouées en v4.0. op_release n'était appelé que depuis nfsd4_encode_operation(), donc les ressources attachées à op->u fuient sur le chemin de rejeu (replay).

Déplacement de l'appel op_release() hors de nfsd4_encode_operation() et de la branche de rejeu, en le plaçant après le if-else dans nfsd4_proc_compound(). Cela donne un site d'appel unique à un endroit manifestement correct, couvrant à la fois les chemins d'encodage normal et de rejeu.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Responsable

Linux

Réserver

11/09/2026

Divulgation

12/09/2026

Modérer

accepté

Entrée

VDB-402946

CPE

prêt

EPSS

0.00000

KEV

non

Activités

très faible

Sources

Want to stay up to date on a daily basis?

Enable the mail alert feature now!