🔍 CVE-2025-40002

0.0
CVSS Score
UNKNOWN
2025-10-18
2026-10-19 21:10
✅ 완료

🇰🇷 한글 설명

리눅스 커널의 Thunderbolt 드라이버에서 tb_dp_dprx_work 함수 실행 중 Use-After-Free(UAF) 취약점이 발견되었습니다. 기존의 cancel_delayed_work() 방식은 지연된 작업이 완전히 종료되었음을 보장하지 못해, 메모리가 해제된 후에도 해당 메모리에 접근을 시도하는 레이스 컨디션 문제를 일으킵니다.

💡 쉬운 설명

컴퓨터 부품인 Thunderbolt를 사용하는 과정에서, 이미 삭제된 메모리 정보를 다시 사용하려고 시도하여 시스템 오류나 보안 문제가 발생할 수 있는 결함입니다. 작업이 끝날 때까지 기다리지 않고 메모리를 먼저 지워버려서 발생하는 문제입니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: thunderbolt: Fix use-after-free in tb_dp_dprx_work The original code relies on cancel_delayed_work() in tb_dp_dprx_stop(), which does not ensure that the delayed work item tunnel->dprx_work has fully completed if it was already running. This leads to use-after-free scenarios where tb_tunnel is deallocated by tb_tunnel_put(), while tunnel->dprx_work remains active and attempts to dereference tb_tunnel in tb_dp_dprx_work(). A typical race condition is illustrated below: CPU 0 | CPU 1 tb_dp_tunnel_active() | tb_deactivate_and_free_tunnel()| tb_dp_dprx_start() tb_tunnel_deactivate() | queue_delayed_work() tb_dp_activate() | tb_dp_dprx_stop() | tb_dp_dprx_work() //delayed worker cancel_delayed_work() | tb_tunnel_put(tunnel); | | tunnel = container_of(...); //UAF | tunnel-> //UAF Replacing cancel_delayed_work() with cancel_delayed_work_sync() is not feasible as it would introduce a deadlock: both tb_dp_dprx_work() and the cleanup path acquire tb->lock, and cancel_delayed_work_sync() would wait indefinitely for the work item that cannot proceed. Instead, implement proper reference counting: - If cancel_delayed_work() returns true (work is pending), we release the reference in the stop function. - If it returns false (work is executing or already completed), the reference is released in delayed work function itself. This ensures the tb_tunnel remains valid during work item execution while preventing memory leaks. This bug was found by static analysis.

📍 영향받는 시스템

Thunderbolt 드라이버를 사용하는 리눅스 커널 버전

⚔️ 공격 벡터

특정 타이밍에 Thunderbolt 장치를 연결하거나 해제하는 레이스 컨디션 유도

🛡️ 대응 방법

리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 참조 횟수(Reference Counting) 로직이 수정된 패치를 적용해야 합니다.

🔧 검증 코드

현재 실행 중인 커널 버전을 확인하여 취약점이 해결된 최신 패치 버전인지 확인합니다.

Shell / Script
uname -r

💻 영향받는 소프트웨어

Linux Kernel