Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

CVE-2026-64317

Gravedad CVSS v3.1:
ALTA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
25/07/2026
Última modificación:
27/07/2026

Descripción

*** Pendiente de traducción *** In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> isofs: bound Rock Ridge symlink components to the SL record<br /> <br /> get_symlink_chunk() and the SL handling in<br /> parse_rock_ridge_inode_internal() walk the variable-length components of<br /> a Rock Ridge "SL" (symbolic link) record. Each component is a two-byte<br /> header (flags, len) followed by len bytes of text, so it occupies<br /> slp-&gt;len + 2 bytes. Both loops read slp-&gt;len and advance to the next<br /> component, and get_symlink_chunk() additionally does<br /> memcpy(rpnt, slp-&gt;text, slp-&gt;len), but neither checks that the component<br /> lies within the SL record before dereferencing it.<br /> <br /> A crafted SL record whose component declares a len that runs past the<br /> record (rr-&gt;len) therefore triggers an out-of-bounds read of up to 255<br /> bytes. When the record sits at the tail of its backing buffer - for<br /> example a small kmalloc()ed continuation block reached through a CE<br /> record - the read crosses the allocation; get_symlink_chunk() then<br /> copies the out-of-bounds bytes into the symlink body returned to user<br /> space by readlink(), disclosing adjacent kernel memory.<br /> <br /> ISO 9660 images are routinely mounted from untrusted removable media -<br /> desktop environments auto-mount them (e.g. via udisks2) without<br /> CAP_SYS_ADMIN - so the record contents are attacker-controlled.<br /> <br /> Reject any component that does not fit in the remaining record bytes<br /> before using it. In get_symlink_chunk() return NULL, like the existing<br /> output-buffer (plimit) checks, so a malformed record makes readlink()<br /> fail with -EIO rather than silently returning a truncated target; in<br /> parse_rock_ridge_inode_internal() stop the inode-size walk.