CVE-2026-10681 in Zephyr정보

요약

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

Zephyr의 userspace dynamic-objects 서브시스템에서, kernel/userspace/userspace.c에 있는 thread_idx_alloc() 함수는 리스트 잠금(lists_lock)을 획득하지 않은 상태에서 전역 _thread_idx_map[] 비트맵으로부터 새로운 스레드 권한 인덱스를 할당합니다.

SMP 시스템에서는 k_object_alloc(K_OBJ_THREAD) 시스콜을 동시에 호출하는 두 개의 사용자 모드 스레드가 동일한 낮은 자유(low free) 비트를 모두 관찰하고, 이를 지우기 위해 동일한 비원자적 RMW(Read-Modify-Write) 연산을 수행하여 동일한 tidx 값을 반환할 수 있습니다.

이렇게 새로 생성된 두 K_OBJ_THREAD 객체는 동일한 thread_id가 할당되므로, 두 사용자 스레드는 모든 커널 객체의 perms[] 비트필드에서 단일 비트 위치를 공유(aliasing)하게 됩니다: 따라서 이후 어떤 커널 객체에 대한 접근 권한을 한 스레드에 부여하는 것은 다른 스레드에도 암묵적으로 부여되는 것이 되며, 이는 userspace ACL 격리 기법을 무력화시킵니다. 또한 alloc 함수 내의 잠금 해제된 &=~BIT() 연산과 thread_idx_free() 함수 내의 잠금 획득된 |= BIT() 연산 사이에 2차 lost-update 창이 존재하여 스레드 인덱스 풀에서 엔트리가 누출될 수도 있습니다.

이 결함은 제한 없는 __syscall k_object_alloc을 통해 모든 사용자 모드 스레드에서 접근 가능하며, CONFIG_USERSPACE, CONFIG_DYNAMIC_OBJECTS 및 CONFIG_SMP 설정에 의해 활성화됩니다. 이欠陥(trait)은 2018년에 per-thread 권한 인덱스가 추가될 때 도입되었으며 v4.4.0을 포함한 이전 모든 릴리스에 존재합니다. 비트맵 RMW 연산과 권한 지우기 전역에서 lists_lock 잠금을 유지하고, 이전에 자체적으로 잠금을 획득하던 obj_list 순회를 인라인 처리함으로써 수정되었습니다.

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

책임이 있는

Zephyr

예약하다

2026. 06. 02.

모더레이션

수락

항목

VDB-383140

EPSS

0.00000

활동

중간

출처

Do you want to use VulDB in your project?

Use the official API to access entries easily!