Descripción
En el Linux kernel se ha resuelto la siguiente vulnerabilidad: ceph: bound copied dentry name length in NFS export get_name ceph_get_name() copia el nombre suministrado por el MDS en el búfer de tamaño NAME_MAX del llamador con memcpy(name, rinfo->dname, rinfo->dname_len) y luego escribe name[rinfo->dname_len] = 0, sin comprobar dname_len contra NAME_MAX. Un MDS malicioso o defectuoso que devuelva una respuesta LOOKUPNAME con dname_len > NAME_MAX desborda el búfer. __get_snap_name() copia rde->name / rde->name_len de la misma forma, sin comprobación. Impacto: un MDS de Ceph malicioso o comprometido desborda el búfer de nombre NAME_MAX en la ruta get_name de exportación NFS de un cliente, una escritura fuera de límites en slab reportada por KASAN. Es alcanzable cuando un montaje CephFS se reexporta mediante NFS. Se agrega ceph_export_copy_name(), que rechaza longitudes superiores a NAME_MAX con -ENAMETOOLONG antes de la copia, y se usa tanto en ceph_get_name() como en __get_snap_name().
Qué hacer
Revisa si usas el producto afectado y en qué versión, y aplica la actualización o la mitigación que indique el aviso del fabricante. CISA no ha confirmado que se esté explotando; si eso cambia, esta ficha pasa a «explotada» y te avisamos en el boletín.
Versiones afectadas
- Linux Afectadas: 19913b4eac4a230dccb548931358398f45dabe4c y anteriores a aadfe588ad8032ea99bda259ae7b8d42854f8193 · 19913b4eac4a230dccb548931358398f45dabe4c y anteriores a 3cb09301c30909a7935e9de41f98eeb5ef7e4d40 · 19913b4eac4a230dccb548931358398f45dabe4c y anteriores a dff3d84d14142ea43ad61ef5d6b4de05ba16ba42 · 19913b4eac4a230dccb548931358398f45dabe4c y anteriores a a294064e0e0f81ea607b2f019e16888aa1b0a011 · 19913b4eac4a230dccb548931358398f45dabe4c y anteriores a 61d9f27b191b838b96b697ce0bfaee39a138243a · 19913b4eac4a230dccb548931358398f45dabe4c y anteriores a 06fb5e623cdc2402d6bb29be94d9beb9a826ffec · 19913b4eac4a230dccb548931358398f45dabe4c y anteriores a e7c2fd3893a7f7fcd7e8cf0b2c6348bb1e893df6 · 19913b4eac4a230dccb548931358398f45dabe4c y anteriores a eff8013c5a8916613c742ae5a2cc341cb605c0ae
- Linux Afectadas: 3.15 No afectadas: 5.10.273 · 5.15.224 · 6.1.191 · 6.6.157 · 6.12.109 · 6.18.50
Según el registro de la vulnerabilidad en CVE.org, tal como lo publicó el fabricante. Confirma tu versión exacta en el aviso del fabricante.
Referencias
- Referencia en git.kernel.orggit.kernel.org/stable/c/aadfe588ad8032ea99bda259ae7b8d42854f8193
- Referencia en git.kernel.orggit.kernel.org/stable/c/3cb09301c30909a7935e9de41f98eeb5ef7e4d40
- Referencia en git.kernel.orggit.kernel.org/stable/c/dff3d84d14142ea43ad61ef5d6b4de05ba16ba42
- Referencia en git.kernel.orggit.kernel.org/stable/c/a294064e0e0f81ea607b2f019e16888aa1b0a011
- Referencia en git.kernel.orggit.kernel.org/stable/c/61d9f27b191b838b96b697ce0bfaee39a138243a
- Referencia en git.kernel.orggit.kernel.org/stable/c/06fb5e623cdc2402d6bb29be94d9beb9a826ffec
- Referencia en git.kernel.orggit.kernel.org/stable/c/e7c2fd3893a7f7fcd7e8cf0b2c6348bb1e893df6
- Referencia en git.kernel.orggit.kernel.org/stable/c/eff8013c5a8916613c742ae5a2cc341cb605c0ae
Ver el texto original en inglés (CVE.org)
ceph: bound copied dentry name length in NFS export get_name
In the Linux kernel, the following vulnerability has been resolved: ceph: bound copied dentry name length in NFS export get_name ceph_get_name() copies the MDS-supplied name into the caller's NAME_MAX-sized buffer with memcpy(name, rinfo->dname, rinfo->dname_len) and then writes name[rinfo->dname_len] = 0, without checking dname_len against NAME_MAX. A malicious or buggy MDS that returns a LOOKUPNAME reply with dname_len > NAME_MAX overflows the buffer. __get_snap_name() copies rde->name / rde->name_len the same unchecked way. Impact: a malicious or compromised Ceph MDS overflows the NAME_MAX name buffer in a client's NFS-export get_name path, a slab out-of-bounds write reported by KASAN. Reachable when a CephFS mount is re-exported over NFS. Add ceph_export_copy_name(), which rejects lengths above NAME_MAX with -ENAMETOOLONG before the copy, and use it in both ceph_get_name() and __get_snap_name().