CVE-2026-10667 in zephyr정보

요약

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

Zephyr의 동적 커널 객체 추적 기능(kernel/userspace/userspace.c, 이전 버전에서는 kernel/userspace.c으로 불림)은 동적으로 할당된 커널 객체의 이중 연결 리스트(obj_list)를 유지합니다. k_object_wordlist_foreach() 함수에서 이 리스트를 순회할 때는 SAFE 반복자(다음 노드를 캐싱함)를 사용하여 lists_lock 하에 수행되었으나, 노드의 제거 및 해제는 서로 다른 분리된 스핀락인 k_object_free()의 objfree_lock과 unref_check()의 obj_lock 하에 수행되었습니다. SMP 시스템에서 하나의 CPU가 lists_lock 하에서 obj_list를 순회하는 동안, 다른 CPU는 반복자가 다음 포인터로 캐시한 dyn_obj 노트를 언링크하고 k_free()하여 해지된 커널 메모리를 역참조(use-after-free / 덩그랑 리스트 트래버설)하게 만들 수 있습니다. 모든 레이싱 작업은 시스템 호출을 통해 비특권 사용자 모드 스레드에서 접근 가능합니다: k_object_alloc/k_object_alloc_size와 k_object_release는 unref_check()를 통한 제거(obj_lock 하에)를 주도하는 반면, k_thread_abort 및 스레드 생성은 k_thread_perms_all_clear()/k_thread_perms_inherit()를 통한 순회(lists_lock 하에)를 주도합니다. 따라서 CONFIG_SMP + CONFIG_USERSPACE 빌드 환경에서 특권이 없는 사용자 스레드는 사용자와 공간 간 보안 경계를 넘어 커널의 객체 추적 구조를 손상시켜 커널 메모리 손상(잠재적 권한 상승) 또는 커널 크래시(DOS: 서비스 거부)를 유발할 수 있습니다. 수정 방법은 objfree_lock을 제거하고 k_object_free() 내 find+remove 시 및 k_thread_perms_clear() 내 unref_check() 주변을 포함하여 모든 obj_list 수정 작업을 lists_lock 하에서 직렬화합니다. CONFIG_SMP+CONFIG_USERSPACE+CONFIG_DYNAMIC_OBJECTS 구성에 영향을 미치며, 이 결함은 2019년 스핀락 도입(commit 8a3d57b6cc6, v1.14.0에서 처음 출시)으로 거슬러 올라가며 v4.4.0까지 배포되었습니다.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

책임이 있는

Zephyr

예약하다

2026. 06. 02.

모더레이션

수락

항목

VDB-377879

EPSS

0.00000

활동

낮음

출처

Do you need the next level of professionalism?

Upgrade your account now!