CVE-2026-93243 in Linuxinformation

Résumé

par VulDB • 24/09/2026

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

mm/secretmem : comptabilisation correcte des pages verrouillées (locked)

Le module secretmem gère les folios en traitant la mémoire comme si elle avait été verrouillée via mlock(), et est donc limitée par la limite RLIMIT_MEMLOCK.

Cependant, ces folios sont non évictables (unevictable) et le restent jusqu'à ce que l'inode soit évicté, éliminant ainsi les sémantiques habituelles de mlock() : mapper puis démapper des folios ne supprime pas leur état non évictable, car cela dépend de AS_UNEVICTABLE et non de PG_mlocked.

Un utilisateur peut donc facilement contourner la limite RLIMIT_MEMLOCK ; il suffit de mapper puis de démapper pour que VmLck cesse de compter l'étendue secretmem. Pire encore, les folios ne sont pas comptabilisés dans le RSS (Resident Set Size) du processus, ce qui signifie que le tueur OOM (Out-Of-Memory killer) ne saura pas qu'il doit tuer le processus.

Des opérations répétées de mappage/démappage (ou de fork) peuvent alors entraîner la consommation de toute la mémoire système disponible avec des folios non évictables, provoquant une instabilité du système.

Un descripteur de fichier secretmem peut être transmis entre les processus et lors d'un fork ; par conséquent, une limite par processus n'a tout simplement pas de sens. Il convient donc de suivre l'exemple établi par io_uring, perf, skbuff, iommufd et xdp en suivant le nombre de pages verrouillées dans user_struct->locked_vm.

Puisque la portée suivie correspond en réalité à la durée de vie de l'inode, RLIMIT_MEMLOCK s'applique par utilisateur et non par processus ; il n'est donc pas logique d'autoriser un contournement pour les utilisateurs disposant de CAP_IPC_LOCK ; cette exception est donc supprimée.

Il n'y a aucune raison de continuer à marquer le mappage comme ayant été verrouillé via mlock(), car cela est trompeur et la gestion du cycle de vie est désormais correcte, ce qui justifie également sa suppression.

Notez que secretmem ne prend en charge aucune forme de troncature (y compris l'opération hole punching) et que les folios sont non récupérables ; il suffit donc de comptabiliser les folios lors d'une faute de page (fault) et de les décomptabiliser lors de la destruction de l'inode.

__secretmem_account_pages() est à peu près un doublon du code utilisé par io_uring, etc., mais comme il s'agit d'un correctif de bug nécessitant une rétrocompatibilité (backport), toute tentative de déduplication sera reportée à une mise à jour ultérieure.

test_mlock_limit() asserte mlock_future_ok() lors d'un mmap(), cependant cela a été supprimé ; le test est donc entièrement retiré pour ce correctif. Un nouveau test sera envoyé séparément vers la branche principale (upstream).

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

Responsable

Linux

Réserver

17/09/2026

Divulgation

24/09/2026

Modérer

accepté

Entrée

VDB-409518

CPE

prêt

EPSS

0.00000

KEV

non

Activités

très faible

Sources

Do you know our Splunk app?

Download it now for free!