CVE-2026-99084 in Linux
Zusammenfassung
von VulDB • 23.10.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
readdir: Kein Inode-Sperre für ein unveränderliches Verzeichnis verwenden
iterate_dir() nimmt die i_rwsem des Verzeichnisses als Shared-Lock und hält sie während ->iterate_shared(). Für ein Verzeichnis, das niemals Einträge enthält und auch nie entfernt wird, sperrt diese Sperre nichts fest; sie ordnet lediglich jeden Leser und jeden Schreiber dieses Inodes nacheinander an.
Dies ist für das Verzeichnis einer nullfs-Instanz von Bedeutung. Die Instanz des ursprünglichen Mount-Namensraums (initial mount namespace) ist der Root jedes leeren Mount-Namensraums, und die private Instanz ist der Root jedes Kernel-Threads, sodass ein einzelner Inode zwischen Nutzern geteilt wird, die sonst nichts gemeinsam haben. Und ein Leser kann den Lock so lange halten, wie er möchte: Legen Sie einen Mapping einer Datei auf einem FUSE-Mount Ihrer Wahl als Puffer für getdents() an, lassen Sie den Copy von "." und ".." fehlschlagen (fault), und lassen Sie den Server warten. Stellen Sie einen exklusiven Nehmer dahinter in die Warteschlange; ein mkdir() in diesem Verzeichnis geht durch start_dirop(), bevor der schreibgeschützte Mount gemeldet wird, und ab dann wartet jede Lookup, die das dcache in diesem Verzeichnis verfehlt, jedes Erstellen (create) und jeder Mount darauf, bis der Server antwortet. Ein Nutzer eines leeren Mount-Namensraums blockiert alle anderen.
Fügen Sie FOP_IMMUTABLE für die Dateisoperationen eines Verzeichnisses hinzu, das sich niemals ändert und nie entfernt wird, und lassen Sie iterate_dir() den Lock dafür überspringen. Das Flag ändert sich bei einer Datei nicht; ->f_pos ist durch f_pos_lock geschützt, da Verzeichnisse FMODE_ATOMIC_POS sind, IS_DEADDIR kann auf einem solchen Verzeichnis nicht gesetzt werden, und weder touch_atime() noch fsnotify nehmen i_rwsem. Setzen Sie es auf das nullfs-Verzeichnis. Die Platzhalter-Verzeichnisse von libfs haben ebenfalls niemals einen Eintrag, aber ihre Besitzer entfernen sie, daher behalten sie den Lock bei.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.