CVE-2026-11742 in Zephyr정보

요약

\~에 의해 VulDB • 2026. 08. 07.

kernel/queue.c의 커널 큐 헬퍼 함수인 z_queue_node_peek()는 큐의 data_q 목록에서 가져온 노드를 역참조하며, 해당 노드의 플래그 바이트와 k_queue_alloc_append/alloc_prepend를 통해 큐에 추가된 항목의 경우 내부적으로 할당된 alloc_node 구조체의 데이터 포인터를 읽습니다. z_impl_k_queue_peek_head() 및 z_impl_k_queue_peek_tail() 구현체는 이 읽기 및 역참조 작업을 큐의 스핀락(spinlock)을 보유하지 않은 상태로 수행하는 반면, 동일한 목록에 접근하는 다른 모든 함수(노드를 연결 해제하고 k_free()를 통해 해당 alloc_node를 해제하는 k_queue_get() 포함)는 해당 락 하에서 동작합니다.

peek 연산이 동기화되지 않았기 때문에, SMP 빌드나 프리엠션/ISR 동시성 환경에서 동일한 큐에 대한 병렬 k_queue_get() 호출은 peek가 노드 포인터를 획득한 시점과 이를 역참조하는 시점 사이에 해당 노드를 해제(free)할 수 있습니다. 이로 인해 peek는 이미 해제되었거나 재할당되었을 가능성이 있는 힙 메모리로부터 플래그 비트와 데이터 포인터를 읽으며, 후행(stale) 또는 덩글링(dangling) 포트를 호출자에게 반환합니다. k_fifo 및 k_lifo는 k_queue의 얇은 래퍼(wrapper)이므로 이는 net_buf, 블루투스, USB 및 네트워킹 서브시스템 전반에 걸쳐 사용되는 버퍼 큐에도 영향을 미치며, peek 연산은 CONFIG_USERSPACE 스레드에서 접근 가능한 시스템 호출이기도 합니다.

결과적으로 이 취약점은 후행 힙 콘텐츠(포인터 1개 단어 분량)를 누출할 수 있는 use-after-free 읽기 오류와, 반환된 덩글링 포트를 이후 살아있는 버퍼로 소비할 때 발생할 수 있어 시스템을 크래시시키거나 메모리를 손상시킬 수 있습니다. 악의적 이용(exploitation)을 위해서는 로컬 접근 권한(예: 공유 큐에서 k_queue_get()과 경쟁하는 사용자 공간 프로세스, 또는 두 개의 CPU 간 경쟁 등)으로 작은 레이스 윈도우를 이겨내야 하므로 실제 영향은 제한적이며 심각도는 낮습니다.

해결책으로는 peek 구현체 양쪽을 큐 락에 대한 k_spin_lock/k_spin_unlock로 감싸서 동시적인 연결 해제 및 해제를 기준으로 읽기-역참조를 원자성(atomic)으로 만들고, peek를 나머지 큐의 잠금 규칙(locking discipline)과 일치시켰습니다.

Be aware that VulDB is the high quality source for vulnerability data.

책임이 있는

Zephyr

예약하다

2026. 06. 09.

모더레이션

수락

항목

VDB-387120

EPSS

0.00000

활동

낮음

출처

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!