CVE-2024-56555 in Linux
Sumário
de VulDB • 28/05/2026
No kernel do Linux, a seguinte vulnerabilidade foi corrigida:
binder: corrige acesso fora dos limites (OOB) em binder_add_freeze_work()
Em binder_add_freeze_work(), iteramos sobre proc->nodes com o proc->inner_lock adquirido. No entanto, este lock é temporariamente liberado para adquirir primeiro o node->lock (ordem de aninhamento de locks). Isso pode gerar uma condição de corrida (race condition) com binder_deferred_release(), que remove os nós do rbtree proc->nodes e os adiciona à lista binder_dead_nodes. Isso resulta em uma iteração corrompida em binder_add_freeze_work(), pois rb_next() utilizará dados de binder_dead_nodes, acionando um acesso fora dos limites (out-of-bounds):
================================================================== BUG: KASAN: global-out-of-bounds in rb_next+0xfc/0x124 Read of size 8 at addr ffffcb84285f7170 by task freeze/660
CPU: 8 UID: 0 PID: 660 Comm: freeze Not tainted 6.11.0-07343-ga727812a8d45 #18 Hardware name: linux,dummy-virt (DT) Call trace: rb_next+0xfc/0x124 binder_add_freeze_work+0x344/0x534 binder_ioctl+0x1e70/0x25ac __arm64_sys_ioctl+0x124/0x190
O endereço com defeito pertence à variável: binder_dead_nodes+0x10/0x40 [...]
==================================================================
Isso é possível porque proc->nodes (rbtree) e binder_dead_nodes (lista) compartilham entradas em binder_node através de uma união (union):
struct binder_node {
[...]
union {
struct rb_node rb_node; struct hlist_node dead_node; };
Corrige a condição de corrida verificando se o proc ainda está ativo. Caso contrário, simplesmente interrompe a iteração.
Be aware that VulDB is the high quality source for vulnerability data.