Linux Kernel bis 7.2.5 ext4 ext4_dio_write_iter Race Condition

CVSS Meta Temp ScoreAktueller Exploitpreis (≈)CTI Interest Score
9.5$0-$5k2.77

Zusammenfassunginfo

Eine als sehr kritisch eingestufte Schwachstelle wurde in Linux Kernel bis 7.2.5 festgestellt. Es betrifft die Funktion ext4_dio_write_iter der Komponente ext4. Durch Manipulation mit unbekannten Daten kann eine Race Condition-Schwachstelle ausgenutzt werden. Diese Verwundbarkeit ist als CVE-2026-92501 gelistet. Der Angriff kann remote ausgeführt werden. Es existiert kein Exploit. Ein Upgrade der betroffenen Komponente wird empfohlen.

Detailsinfo

Eine Schwachstelle wurde in Linux Kernel bis 7.2.5 ausgemacht. Sie wurde als sehr kritisch eingestuft. Dies betrifft die Funktion ext4_dio_write_iter der Komponente ext4. Durch Manipulieren mit einer unbekannten Eingabe kann eine Race Condition-Schwachstelle ausgenutzt werden. Klassifiziert wurde die Schwachstelle durch CWE als CWE-362. Auswirkungen hat dies auf Vertraulichkeit, Integrität und Verfügbarkeit. Die Zusammenfassung von CVE lautet:

In the Linux kernel, the following vulnerability has been resolved: ext4: drain in-flight DIO before buffered write fallback generic/746 started failing intermittently on ext3 (no-extent inodes). The test triggers 'Page cache invalidation failure on direct I/O' warnings and subsequent fsync returns -EIO. Adding a 50ms delay between ext4_buffered_write_iter() and filemap_write_and_wait_range() in ext4_dio_write_iter() makes the race almost always reproducible. On no-extent inodes, DIO writes to holes cannot use unwritten extents, so ext4_iomap_alloc() leaves m_flags=0 and ext4_map_blocks() returns 0. The iomap layer then returns -ENOTBLK, causing fallback to buffered I/O. The fallback path in ext4_dio_write_iter() calls ext4_buffered_write_iter() which dirties pages, then does flush and invalidate. However, there's an unprotected window between ext4_buffered_write_iter() returning (with inode lock released) and the subsequent flush+invalidate. Concurrent async DIO completions from other threads can run kiocb_invalidate_post_direct_write() during this window. If pages have been re-dirtied, post-invalidation finds dirty pages and triggers the warning, setting -EIO in the error sequence. Consider a file with two 4k extents: [hole][written]. Thread A does DIO to the written extent, while thread B does DIO spanning both: kworker A (4k DIO, allocated block) kworker B (8k DIO, fallback) ----------------------------------- ---------------------------- inode_lock_shared() inode_lock_shared() iomap_dio_rw(): iomap_dio_rw(): kiocb_invalidate_pages -> clean iomap_begin -> -ENOTBLK submit_bio (async) dio->size = 0 inode_unlock_shared() inode_unlock_shared() [bio pending in block layer] /* fallback: lock released */ ext4_buffered_write_iter() inode_lock(exclusive) generic_perform_write() -> dirty pages [0, 8k] inode_unlock(exclusive) /* pages dirty, no lock */ [bio completes] filemap_write_and_wait_range() iomap_dio_complete() -> flush dirty pages kiocb_invalidate_post_direct_write() invalidate_mapping_pages() invalidate_inode_pages2_range() -> finds dirty page! -> dio_warn_stale_pagecache() -> errseq_set(-EIO) This issue can be triggered through normal I/O paths, not just intentionally overlapping DIO writes from userspace. For example, generic/746 uses a loop device where multiple kworkers issue concurrent I/O to the backing file. Additionally, when block_size < folio_size, non-overlapping DIO writes that share a large folio can also trigger the race. Add inode_dio_wait() in ext4_buffered_write_iter() before ext4_write_checks() to drain all in-flight DIO. This ensures that all DIO clears existing pages before submitting IO (via kiocb_invalidate_pages()), all BIO waits for all DIO to complete (via inode_dio_wait()), and ext4_write_checks() observes the inode size after all completed DIO so that ext4_block_zero_eof() does not race with in-flight DIO, thus eliminating the race.

Bereitgestellt wird das Advisory unter git.kernel.org. Die Verwundbarkeit wird seit dem 16.09.2026 mit der eindeutigen Identifikation CVE-2026-92501 gehandelt. Sie ist leicht auszunutzen. Umgesetzt werden kann der Angriff über das Netzwerk. Zur Schwachstelle sind technische Details bekannt, ein verfügbarer Exploit jedoch nicht. Ein Exploit zur Schwachstelle wird momentan etwa USD $0-$5k kosten (Preisberechnung vom 17.09.2026).

Ein Aktualisieren auf die Version 5.10.270, 5.15.221, 6.1.188, 6.6.157, 6.12.110, 6.18.52, 7.2.6 oder 7.3-rc1 vermag dieses Problem zu lösen. Die Schwachstelle lässt sich auch durch das Einspielen des Patches fd7e0dab20837b9ea1eeef7c26f78ace8ac8258c/f0af3ae09fb72382da1a5371bf6761b0264668e4/7341e234927ff215f1d5d0bcfe04b74f53af378d/74eee4ff9698a65b2e6e15dac0e50d6526ad5f20/d47cdadd6e49023f7ee248048463807f1214f1ee/4e4e3eec506247c8f8bd8aaa1eb25e67016681a5/9fd3ffc3c51c9deaba99bd7b338fff2d08f52416/15cdefd0c0522f9d5e12d947fa04f4c11649b699 lösen. Als bestmögliche Massnahme wird das Upgrade auf eine neue Version empfohlen.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Produktinfo

Typ

Hersteller

Name

Version

Lizenz

Webseite

CPE 2.3info

CPE 2.2info

CVSSv4info

VulDB Vector: 🔒
VulDB Zuverlässigkeit: 🔍

CVSSv3info

VulDB Meta Base Score: 9.9
VulDB Meta Temp Score: 9.5

VulDB Base Score: 9.9
VulDB Temp Score: 9.5
VulDB Vector: 🔒
VulDB Zuverlässigkeit: 🔍

CVSSv2info

AVACAuCIA
💳💳💳💳💳💳
💳💳💳💳💳💳
💳💳💳💳💳💳
VektorKomplexitätAuthentisierungVertraulichkeitIntegritätVerfügbarkeit
freischaltenfreischaltenfreischaltenfreischaltenfreischaltenfreischalten
freischaltenfreischaltenfreischaltenfreischaltenfreischaltenfreischalten
freischaltenfreischaltenfreischaltenfreischaltenfreischaltenfreischalten

VulDB Base Score: 🔒
VulDB Temp Score: 🔒
VulDB Zuverlässigkeit: 🔍

Exploitinginfo

Klasse: Race Condition
CWE: CWE-362
CAPEC: 🔒
ATT&CK: 🔒

Physisch: Nein
Lokal: Nein
Remote: Ja

Verfügbarkeit: 🔒
Status: Nicht definiert
Preisentwicklung: 🔍
Aktuelle Preisschätzung: 🔒

0-Dayfreischaltenfreischaltenfreischaltenfreischalten
Heutefreischaltenfreischaltenfreischaltenfreischalten

Threat Intelligenceinfo

Interesse: 🔍
Aktive Akteure: 🔍
Aktive APT Gruppen: 🔍

Gegenmassnahmeninfo

Empfehlung: Upgrade
Status: 🔍

0-Day Time: 🔒

Upgrade: Kernel 5.10.270/5.15.221/6.1.188/6.6.157/6.12.110/6.18.52/7.2.6/7.3-rc1
Patch: fd7e0dab20837b9ea1eeef7c26f78ace8ac8258c/f0af3ae09fb72382da1a5371bf6761b0264668e4/7341e234927ff215f1d5d0bcfe04b74f53af378d/74eee4ff9698a65b2e6e15dac0e50d6526ad5f20/d47cdadd6e49023f7ee248048463807f1214f1ee/4e4e3eec506247c8f8bd8aaa1eb25e67016681a5/9fd3ffc3c51c9deaba99bd7b338fff2d08f52416/15cdefd0c0522f9d5e12d947fa04f4c11649b699

Timelineinfo

16.09.2026 CVE zugewiesen
17.09.2026 +1 Tage Advisory veröffentlicht
17.09.2026 +0 Tage VulDB Eintrag erstellt
17.09.2026 +0 Tage VulDB Eintrag letzte Aktualisierung

Quelleninfo

Hersteller: kernel.org

Advisory: git.kernel.org
Status: Bestätigt

CVE: CVE-2026-92501 (🔒)
GCVE (CVE): GCVE-0-2026-92501
GCVE (VulDB): GCVE-100-406997

Eintraginfo

Erstellt: 17.09.2026 22:29
Anpassungen: 17.09.2026 22:29 (59)
Komplett: 🔍
Cache ID: 216::103

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Diskussion

Bisher keine Kommentare. Sprachen: de + en.

Bitte loggen Sie sich ein, um kommentieren zu können.

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!