ceph: properly decrypt filenames in vmalloc() buffers
Affects Linux kernel Ceph filename decryption from 6.6.0 onward, with fixed releases in the 6.6.160, 6.12.111, 6.18.51 and 7.2.5 branches. No vendor severity rating is given; CVSS scores it 9.8 (critical).
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- How many real-world setups can hit the bug, from the vendor's advisory and CISA data. It does not know your setup.What do these mean? →
- Unclear
- Fix
- Fixed in 6.6.160, 6.12.111, 6.18.51, 7.2.5
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
The Linux kernel's Ceph distributed filesystem client (CephFS) is affected when it handles encrypted filenames from metadata server messages. Under memory fragmentation, those messages can sit in vmalloc() memory, which the encryption code cannot safely process, so a crash (kernel oops) can occur, particularly on non-x86 platforms.
Summarized by anthropic/claude-haiku-5.5. Verify details against the original sources.
Read the original description
In the Linux kernel, the following vulnerability has been resolved: ceph: properly decrypt filenames in vmalloc() buffers The fscrypt subsystem uses the scatterlist crypto API, inheriting its requirement that any buffers are in the linear mapping region. However, the messenger client uses kvmalloc() to create buffers for messages, which will occasionally place those buffers in the vmalloc() region when physical memory fragmentation doesn't permit a large enough kmalloc(). The various callers of ceph_fname_to_usr() directly pass (slices of) raw messages from the MDS without considering that the messages may be in vmalloc() buffers, resulting in oopses especially on non-x86 platforms (see 'Closes:' for more details and a reproducer). Make ceph_fname_to_usr() explicitly tolerant of vmalloc()-allocated fname->ctext, fname->name, and/or oname->name buffers, using `tname` (which, when non-null, must be a linear address; when null, is briefly allocated as necessary) as a bounce buffer to avoid passing any inappropriate addresses to fscrypt_fname_disk_to_usr(). Additionally change parse_reply_info_readdir() -- the only function to supply its own `tname` -- to follow the new "tname must never come from vmalloc()" rule by passing NULL when the message is not in the linear region. Though this causes a per-dentry kmalloc()+kfree(), this overhead exists only when processing the minority of messages that spill into vmalloc(). My (crude) testing puts this at only about 1 in 8,000 readdir messages. Still, if the overhead proves unreasonable in the future, it is easy enough to mitigate: a future change could allocate a bounce buffer in parse_reply_info_readdir() and use that as `tname` instead.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 457117f077c6749d1e28469eae91fb69c9806768 · fixed in 23c5cc9652c6ee85617002cb66e1068395045de6; From 457117f077c6749d1e28469eae91fb69c9806768 · fixed in 93729594af506557a86f8b603be7ac5f3370eeca; From 457117f077c6749d1e28469eae91fb69c9806768 · fixed in 110747ff535e3d98ac17d68dbd056bb6ef000e23; From 457117f077c6749d1e28469eae91fb69c9806768 · fixed in 3b467c68803d7c7e82678289e598afd44faa6101; From 457117f077c6749d1e28469eae91fb69c9806768 · fixed in e939fc6a7bd969a58a150b7f188c1047138403e3
- Linux Linux
6.6
- KernelLinux
From 6.6.0 · fixed in 6.6.160; From 6.7.0 · fixed in 6.12.111; From 6.13.0 · fixed in 6.18.51; From 6.19.0 · fixed in 7.2.5
References 5
Questions about CVE-2026-90042
What does this mean?
Filename decryption in the Ceph client can crash the kernel when its message buffer sits in vmalloc() memory. That happens when memory fragmentation prevents a large kmalloc() allocation, and the crashes are reported especially on non-x86 platforms.Source: git.kernel.org
Am I affected, and how do I check?
Kernel versions 6.6.0 through 6.6.160, 6.7.0 through 6.12.111, 6.13.0 through 6.18.51, and 6.19.0 through 7.2.5 are listed as affected, along with the Linux source commits from 457117f077c6 up to the fixed commits. To check a system, run uname -r and compare the version against these ranges.Source: git.kernel.org
What should I do about it?
Move to a fixed kernel for the branch in use: 6.6.160, 6.12.111, 6.18.51, or 7.2.5 and later. The facts do not list a workaround.Source: git.kernel.org
Is it being exploited?
It is not in CISA's Known Exploited Vulnerabilities catalog, and CISA's SSVC assessment does not mark exploitation as active. That does not mean it has not been attacked: vendors and researchers can report attacks before CISA lists them. No public exploit code is tracked.Source: cve.now feed data