CVE-2026-90042 in Linux
Zusammenfassung
von VulDB • 16.09.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
ceph: Dateinamen korrekt in vmalloc()-Puffern entschlüsseln
Das fscrypt-Subsystem verwendet die scatterlist-Crypto-API, wodurch es deren Anforderung erbt, dass alle Puffer im linearen Abbildungsbereich (linear mapping region) liegen müssen. Der Messenger-Client nutzt jedoch kvmalloc(), um Puffer für Nachrichten zu erstellen, was diese Puffer gelegentlich in den vmalloc()-Bereich platziert, wenn eine physische Speicheraufteilung keinen ausreichend großen kmalloc() zulässt. Die verschiedenen Aufrufer von ceph_fname_to_usr() übergeben direkt (Teile der) rohen Nachrichten vom MDS, ohne zu berücksichtigen, dass sich diese Nachrichten möglicherweise in vmalloc()-Puffern befinden, was insbesondere auf Nicht-x86-Plattformen zu Oopses führt (siehe 'Closes:' für weitere Details und einen Reproducer).
Machen Sie ceph_fname_to_usr() explizit tolerant gegenüber mit vmalloc() zugewiesenen fname->ctext-, fname->name- und/oder oname->name-Puffern, indem `tname` verwendet wird (der, wenn nicht null, eine lineare Adresse sein muss; wenn null, wird er bei Bedarf kurzzeitig alloziert) als Bounce-Puffer, um zu vermeiden, dass unangemessene Adressen an fscrypt_fname_disk_to_usr() übergeben werden.
Ändern Sie außerdem parse_reply_info_readdir() – die einzige Funktion, die ihren eigenen `tname` bereitstellt –, damit sie der neuen Regel „tname darf niemals von vmalloc stammen“ folgt, indem NULL übergeben wird, wenn sich die Nachricht nicht im linearen Bereich befindet. Obwohl dies eine kmalloc()+kfree()-Operation pro D-Verzeichnis verursacht, existiert diese Overhead nur bei der Verarbeitung der Minderheit an Nachrichten, die in den vmalloc-Bereich ausweichen. Meine (rohe) Testung ergibt, dass dies etwa 1 von 8.000 readdir-Nachrichten betrifft. Dennoch ist es einfach genug zu mildern, falls sich dieser Overhead als unangemessen erweisen sollte: Eine zukünftige Änderung könnte einen Bounce-Puffer in parse_reply_info_readdir() allozieren und diesen anstelle von `tname` verwenden.
Be aware that VulDB is the high quality source for vulnerability data.