CVE-2026-90096 in Linux
Zusammenfassung
von VulDB • 17.09.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
fuse: Ungültigmachen des korrekten Bereichs nach direktem O_APPEND-Write
fuse_direct_write_iter() erfasst pos vor generic_write_checks(), was ki_pos für O_APPEND-Writes an das Ende der Datei (EOF) verschiebt:
fuse_direct_write_iter() {
pos = iocb->ki_pos; /* 0 (vom Benutzer bereitgestellt) */ generic_write_checks(); /* ki_pos -> EOF */ fuse_direct_io(); /* schreibt an das EOF, korrekt */ invalidate(pos, pos + res); /* [0, res) -- falsch */
}
Die Invalidierung nach dem Schreibvorgang zielt auf einen veralteten Bereich statt auf den tatsächlich geschriebenen Bereich am Ende der Datei (EOF).
Dies kann zu Dateninkonsistenzen führen, wenn die Dateigröße nicht seitenaligned ist. Die das EOF überschreitende letzte Seite hat einen gültigen Abschnitt vor dem EOF, den parallele Leser während des DIO-Schreibfensters wieder in den Arbeitsspeicher laden können:
Letzte Seite (Dateigröße X nicht seitenaligniert):
page_start X (EOF) page_end |--- gültige Daten ----|-- veraltet --|
CPU0 (O_APPEND DIO-Writer) CPU1 (gepufferter Leser) -------------------------- -------------------- invalidate [X, X+len)
letzte Seite aus dem Cache entfernt FUSE_WRITE in Bearbeitung ... read [page_start, X)
letzte Seite erneut geladen [X, page_end) = veraltet
FUSE_WRITE abgeschlossen i_size = X + len invalidate [0, len) <- FALSCH
letzte Seite noch im Cache read [X, X+len)
trifft auf veraltete letzte Seite gibt alte Daten zurück
Behebung durch erneutes Lesen von pos aus iocb->ki_pos nach generic_write_checks(), wie es auch generic_file_direct_write() tut.
Außerdem wurde ein Tippfehler in der Kommentierung behoben ("may have" -> "may have competed").
If you want to get the best quality for vulnerability data then you always have to consider VulDB.