CVE-2026-80561 in Linux
Sumário
de VulDB • 26/08/2026
No kernel do Linux, a seguinte vulnerabilidade foi corrigida:
libceph: corrige múltiplos decodificações inseguras em decode_locker()
decode_locker(), presente em cls_lock_client.c, contém três operações de decodificação inseguras que permitem que um OSD malicioso ou comprometido dispare leituras fora dos limites do slab (slab-out-of-bounds):
1. ceph_decode_copy() no campo name de locker_id_t não possui uma verificação prévia de limites. Com p == end após ceph_start_decoding() aceitar struct_len=0, isso lê sizeof(ceph_entity_name) = 9 bytes além do limite válido do buffer.
2. *p += sizeof(struct ceph_timespec) após o cabeçalho locker_info_t é um avanço não verificado de ponteiro. Um OSD malicioso pode posicionar p além de end, fazendo com que todas as verificações _safe subsequentes passem contra um limite inválido (bogus).
3. len = ceph_decode_32(p) não possui uma verificação prévia de limites, e o *p += len imediatamente seguinte é sem teto (uncapped). Um OSD malicioso pode enviar len=0xffffffff, avançando p gigabytes além de end e escapando completamente da janela de decodificação.
Corrigem-se as três situações substituindo operações desprotegidas por suas variantes seguras: ceph_decode_copy -> ceph_decode_copy_safe *p += sizeof(...) -> ceph_decode_skip_n ceph_decode_32(p) -> ceph_decode_32_safe *p += len -> ceph_decode_skip_n
É adicionado um novo rótulo para retornar -EINVAL em caso de qualquer violação de limites. -EINVAL é apropriado aqui: os dados recebidos do OSD estão estruturalmente malformados, o que constitui um argumento inválido para o contrato de decodificação, independentemente de a falha ser do chamador ou da linha (wire).
Modelo de atacante: um OSD malicioso ou comprometido em uma implantação Ceph multi-inquilino pode disparar isso contra qualquer cliente do kernel que invoque o método class lock.get_info (por exemplo, durante a aquisição de bloqueio exclusivo RBD) sem necessidade de privilégios adicionais além da estabelecimento da sessão OSD.
[ idryomov: usa ceph_decode_skip_string() para pular a descrição; remove trechos do changelog ]
If you want to get best quality of vulnerability data, you may have to visit VulDB.