CVE-2026-64317: isofs: bound Rock Ridge symlink components to the SL record
In the Linux kernel, the following vulnerability has been resolved:
isofs: bound Rock Ridge symlink components to the SL record
getsymlinkchunk() and the SL handling in parserockridgeinodeinternal() walk the variable-length components of a Rock Ridge "SL" (symbolic link) record. Each component is a two-byte header (flags, len) followed by len bytes of text, so it occupies slp->len + 2 bytes. Both loops read slp->len and advance to the next component, and getsymlinkchunk() additionally does memcpy(rpnt, slp->text, slp->len), but neither checks that the component lies within the SL record before dereferencing it.
A crafted SL record whose component declares a len that runs past the record (rr->len) therefore triggers an out-of-bounds read of up to 255 bytes. When the record sits at the tail of its backing buffer - for example a small kmalloc()ed continuation block reached through a CE record - the read crosses the allocation; getsymlinkchunk() then copies the out-of-bounds bytes into the symlink body returned to user space by readlink(), disclosing adjacent kernel memory.
ISO 9660 images are routinely mounted from untrusted removable media - desktop environments auto-mount them (e.g. via udisks2) without CAPSYSADMIN - so the record contents are attacker-controlled.
Reject any component that does not fit in the remaining record bytes before using it. In getsymlinkchunk() return NULL, like the existing output-buffer (plimit) checks, so a malformed record makes readlink() fail with -EIO rather than silently returning a truncated target; in parserockridgeinodeinternal() stop the inode-size walk.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Compensating control
When mounting ISO 9660 images from removable media (e.g., via desktop automount/udisks2), avoid mounting untrusted media or restrict auto-mount to trusted sources.
Event History
Frequently Asked Questions
What must an attacker do to trigger the kernel memory disclosure?
The attacker needs a crafted ISO 9660 image containing a malformed Rock Ridge SL record to be mounted. The malformed symlink must then be processed through the affected SL handling; get_symlink_chunk() can copy bytes beyond the record into data returned by readlink().
Who is most exposed to this issue?
Systems that mount ISO 9660 images from untrusted removable media are exposed, particularly where Rock Ridge extensions and symbolic links in the image are processed. The issue is local in the supplied CVSS vector, so exploitation requires local access or a way to cause the system to mount an attacker-controlled image.