CVE-2026-64359 in Linux
Zusammenfassung
von VulDB • 26.07.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
nilfs2: Ablehnung des CLEAN_SEGMENTS ioctls bei Segmentnummern außerhalb des gültigen Bereichs
Syzbot meldete einen hängengebliebenen Task in nilfs_transaction_begin(), bei dem mehrere Tasks, die chmod() auf einer nilfs2-Einhängepunkt ausführten, für mehr als 143 Sekunden blockiert waren und darauf warteten, ns_segctor_sem zum Lesen zu erwerben:
INFO: task syz.0.17:5918 ist seit mehr als 143 Sekunden blockiert. Call Trace: schedule+0x164/0x360 rwsem_down_read_slowpath+0x6d9/0x940 down_read+0x99/0x2e0 nilfs_transaction_begin+0x364/0x710 fs/nilfs2/segment.c:221 nilfs_setattr+0x124/0x2c0 fs/nilfs2/inode.c:921 notify_change+0xc1a/0xf40 chmod_common+0x273/0x4a0 do_fchmodat+0x12d/0x230
Der Writer, der ns_segctor_sem hielt, war ein paralleler Aufrufer von NILFS_IOCTL_CLEAN_SEGMENTS, der in printk feststeckte, während er pro-Element-Warnungen aus nilfs_sufile_updatev() ausgab:
__nilfs_msg+0x373/0x450 fs/nilfs2/super.c:78 nilfs_sufile_updatev+0x21c/0x6d0 fs/nilfs2/sufile.c:186 nilfs_sufile_freev fs/nilfs2/sufile.h:93 [inline]
nilfs_free_segments fs/nilfs2/segment.c:1140 [inline]
nilfs_segctor_collect_blocks fs/nilfs2/segment.c:1261 [inline]
nilfs_segctor_do_construct+0x1f55/0x76c0 nilfs_clean_segments+0x3bd/0xa50 nilfs_ioctl_clean_segments fs/nilfs2/ioctl.c:922 [inline]
nilfs_ioctl+0x261f/0x2780
Die Ursache liegt darin, dass vom Benutzer bereitgestellte Segmentnummern nicht validiert werden, bevor nilfs_clean_segments() mit der Arbeit beginnt; die Bereichsprüfung für jede segnum wird tief in der Aufrufliste von nilfs_sufile_updatev() durchgeführt, das eine nilfs_warn()-Meldung pro ungültigem Eintrag ausgibt, während es weiterhin den segctor-Lock und sufile mi_sem hält. Unter Last (wiederholte Aufrufe über mehrere Einhängepunkte hinweg, die den globalen printk-Pfad auslasten), führt die kumulierte printk-Verzögerung dazu, dass ns_segctor_sem lange genug gehalten wird, um den hung_task-Watchdog auszulösen und parallele Vorgänge wie chmod() zu blockieren, die ns_segctor_sem zum Lesen benötigen.
Behebung durch Validierung des Inhalts von kbufs[4] in nilfs_clean_segments(), unmittelbar nach dem Erwerben von ns_segctor_sem über nilfs_transaction_lock(). Das Halten von ns_segctor_ser sem serialisiert die Prüfung gegen nilfs_ioctl_resize(), das ns_nsegments ändern kann, sodass die Validierung einen konsistenten Wert verwendet. Segmentnummern außerhalb des gültigen Bereichs werden mit -EINVAL abgelehnt, bevor jegliche Bereinigungsarbeit an Segmenten beginnt, sodass fehlerhafte Einträge den pro-Element-Diagnosepfad innerhalb von nilfs_sufile_updatev() niemals erreichen.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.