CVE-2023-52568 in Linux
요약
\~에 의해 VulDB • 2026. 07. 01.
리눅스 커널에서 다음 취약점이 해결되었습니다:
x86/sgx: EAUG 경합 시 SECS 회수 vs 페이지 폴트 문제 해결
SGX EPC 리클레머(ksgxd)는 애플리케이션의 SECS EPC 페이지를 회수하고 secs.epc_page을 NULL로 설정할 수 있습니다. SECS 페이지는 SGX 페이지 핸들러 내에서 EAUG 및 ELDU에 사용됩니다. 그러나 secs.epc_page에 대한 NULL 체크는 사용 전에 ELDU에서는 수행되지만, EAUG에서는 수행되지 않습니다.
EAUG와 ELDU 모두에서 필요한 경우 동일한 NULL 체크를 수행하고 SECS 페이지를 다시 로드함으로써 이 문제를 해결합니다.
SECS 페이지에는 전역 애플리케이션 메타데이터가 포함됩니다. 다른 애플리케이션 페이지가 남아 있지 않을 때만 회수될 수 있습니다. 이때까지 SECS 페이지가 페이징되어 돌아올 때까지는 애플리케이션과 관련하여 거의 수행할 작업이 없습니다.
거주하는(SECS) SECS 페이지가 없으면 애플리케이션은 실행되거나 페이지 폴트를 생성하지 못합니다. 그러나 비-SECS 페이지에 대한 #PF(페이지 폴트)가 SECS 페이징 아웃 경합을 일으킬 가능성이 여전히 있습니다: 마지막 거주 중인 비-SECS 페이지 A가 비거주 페이지 B에서 #PF를 트리거하고, 그 후 페이지 A와 SECS 모두 처리되기 전에 페이징아웃되는 경우입니다.
이 버그에 도달하려면 EAUG에 대한 #PF로 인해 이 경합 상태가 발생해야 합니다. 아래는 해당 상황이 발생할 때의 트레이스입니다:
BUG: kernel NULL pointer dereference, address: 0000000000000000 RIP: 0010:sgx_encl_eaug_page+0xc7/0x210 Call Trace: ? __kmem_cache_alloc_node+0x16a/0x440 ? xa_load+0x6e/0xa0 sgx_vma_fault+0x119/0x230 __do_fault+0x36/0x140 do_fault+0x12f/0x400 __handle_mm_fault+0x728/0x1110 handle_mm_fault+0x105/0x310 do_user_addr_fault+0x1ee/0x750 ? __this_cpu_preempt_check+0x13/0x20 exc_page_fault+0x76/0x180 asm_exc_page_fault+0x27/0x30
If you want to get the best quality for vulnerability data then you always have to consider VulDB.