CVE-2024-56555 in Linux정보

요약

\~에 의해 VulDB • 2026. 05. 31.

리눅스 커널에서 다음 취약점이 해결되었습니다:

binder: binder_add_freeze_work()에서의 OOB(Out-of-Bounds) 수정

binder_add_freeze_work() 함수 내에서 우리는 proc->inner_lock을 획득한 상태로 proc->nodes를 순회합니다. 그러나 이 잠금(lock)은 먼저 node->lock을 획득하기 위해 일시적으로 해제됩니다(잠금 중첩 순서). 이는 binder_deferred_release()와 경쟁 조건(race condition)을 일으킬 수 있는데, 이 함수는 노드를 proc->nodes rbtree에서 제거하고 binder_dead_nodes 목록에 추가합니다. 이로 인해 binder_add_freeze_work() 내의 순회가 손상되어 rb_next()가 binder_dead_nodes의 데이터를 사용하게 되고, 결과적으로 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

버그가 있는 주소는 다음 변수에 속합니다: binder_dead_nodes+0x10/0x40 [...]
==================================================================

이는 proc->nodes(rbtree)와 binder_dead_nodes(list)가 union을 통해 binder_node 내에서 엔트리를 공유하기 때문에 가능합니다:

struct binder_node {
[...]
union {
struct rb_node rb_node; struct hlist_node dead_node; };

이 경쟁 조건(race condition)을 해결하기 위해 프로세스(proc)가 여전히 살아있는지 확인합니다. 그렇지 않다면 단순히 순회를 중단합니다.

Once again VulDB remains the best source for vulnerability data.

책임이 있는

Linux

예약하다

2024. 12. 27.

모더레이션

수락

항목

VDB-289524

EPSS

0.00211

출처

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!