🔍 CVE-2026-10635

6.3
CVSS Score
MEDIUM
2026-06-16
2026-10-25 23:10
✅ 완료

🇰🇷 한글 설명

Xtensa 타겟에서 메모리 도메인이 해제될 때 전역 리스트인 xtensa_domain_list에서 해당 노드가 제거되지 않아 발생하는 취약점입니다. 이로 인해 해제된 메모리를 참조하는 dangling pointer가 남게 되며, 이후 메모리 매핑 작업 시 NULL 포인터 역참조로 인한 서비스 거부(DoS) 또는 Use-After-Free를 통한 페이지 테이블 메모리 오염이 발생할 수 있습니다.

💡 쉬운 설명

메모리 관리 목록에서 삭제되어야 할 정보가 삭제되지 않고 남아 있어, 컴퓨터가 이미 사라진 정보를 참조하려다 오류를 일으키는 문제입니다. 이로 인해 시스템이 멈추거나 보안 설정이 무너질 위험이 있습니다.

🇺🇸 원문 (English)

On Xtensa targets with CONFIG_USERSPACE and CONFIG_XTENSA_MMU, the page-table code (arch/xtensa/core/ptables.c) maintains a global list, xtensa_domain_list, of active memory domains using a list node embedded inside the caller-owned struct k_mem_domain. When a domain is destroyed via k_mem_domain_deinit() -> arch_mem_domain_deinit(), the page tables are torn down and domain->arch.ptables is set to NULL, but the domain's node was not removed from xtensa_domain_list. The freed/deinitialized domain therefore remained linked into the global list as a dangling pointer into caller-owned storage that may then be freed or reused. Any subsequent arch_mem_map()/arch_mem_unmap() operation (widely invoked by kernel memory-mapping and demand-paging code) traverses the stale node and dereferences domain->ptables: at minimum a NULL pointer dereference causing a fatal MMU exception (denial of service), and if the k_mem_domain storage has been freed or reused, a use-after-free in which a stale/controlled ptables value is dereferenced and written through during the page-table walk (l2_page_table_map writes l1_table[...] and l2_table[...], and xtensa_mmu_compute_domain_regs writes into the domain struct and the L1 table), yielding page-table memory corruption that can undermine userspace isolation. The vulnerable path is reachable only from privileged kernel/supervisor code (k_mem_domain_deinit is not a syscall), not directly from unprivileged user threads or remotely. Affected: Zephyr v4.4.0 (the Xtensa memory-domain de-initialization feature was introduced in commit 3032b58f52d and first shipped in v4.4.0); fixed on main by adding sys_slist_find_and_remove() in arch_mem_domain_deinit(). The Xtensa MPU path is unaffected.

📍 영향받는 시스템

Zephyr v4.4.0 (Xtensa MMU 사용 환경)

⚔️ 공격 벡터

권한이 있는 커널/슈퍼바이저 코드 내에서 메모리 도메인 해제 시 발생 (직접적인 원격 공격은 불가)

🛡️ 대응 방법

arch_mem_domain_deinit() 함수에 sys_slist_find_and_remove()를 추가하여 전역 리스트에서 노드를 올바르게 제거하도록 업데이트

🔧 검증 코드

취약점이 처음 도입된 커밋 ID가 로그에 있는지 확인하여 해당 버전 포함 여부를 판단합니다.

Shell / Script
git log --grep='3032b58f52d' || echo 'Not found'

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:L/I:H/A:H

💻 영향받는 소프트웨어

Windows iSCSI Target Service