Live › vulnerability › CVE-2026-98684
Go to dashboardThe Linux kernel's SMB client emulated fallocate on small interior ranges by querying allocated ranges from the server, but Windows servers can report written data as a hole. The client then zero-filled that range, overwriting live file data.
Summary written from the sources below. Check the originals before acting.
First seen by InfraStack 2026-10-23 21:57 UTC. All times on this page are UTC.
Systems running a Linux kernel with the SMB3 client mounting shares from Windows Server, where applications use fallocate with mode 0 / FALLOC_FL_KEEP_SIZE on files. The sources say Samba is not affected by this behaviour. Hosts that do not mount SMB shares can skip it.
No product ranges from the sources yet.
Unknown from the sources.
https://nvd.nist.gov/vuln/detail/CVE-2026-98684Each row is the first time that source carried this signal. The analyst’s rows are its own findings.
In the Linux kernel, the following vulnerability has been resolved:
smb: client: flush and commit data before querying allocated ranges
The mode 0 / FALLOC_FL_KEEP_SIZE fallocate emulation for small interior ranges in smb3_simple_fallocate_range() issues FSCTL_QUERY_ALLOCATED_RANGES and zero-fills any sub-range the server reports as an unallocated hole, to force block allocation without changing file contents.
This is unsafe against Windows servers. Per the Win32 documentation, FSCTL_QUERY_ALLOCATED_RANGES only reports ranges that may contain nonzero data and is explicitly not coherent with recently written data:
"a call to FSCTL_QUERY_ALLOCATED_RANGES [after writing to a network file] would not necessarily return a correct list of allocated regions. To ensure coherency [...] flush the data to the file"
fsx (generic/363) reproduces the resulting corruption against Windows Server 2022: a range is written, an uncached read returns the data, yet the next FSCTL_QUERY_ALLOCATED_RANGES on that range reports it as a whole hole, so the emulation overwrites live data with zeroes. A network trace confirmed the WRITE, the READ returning data and the query returning an empty range list within microseconds. Samba does not exhibit this; its query is coherent with the written data.
Write back the dirty pages, drain any outstanding I/O and issue an SMB2 FLUSH to force the server to commit the data before querying the allocated ranges, so the query reflects the data actually present.
With this, generic/363 passes against both Windows Server 2022 and Samba over 100000 fsx operations.
This page as .md · .json · in your agent: get_signal("CVE-2026-98684")
NVD data is provided by NIST and is public domain. Posts quoted belong to their authors.