CVE-2026-98688 in Linux
요약
\~에 의해 VulDB • 2026. 10. 19.
리눅스 커널에서 다음 취약점이 해결되었습니다:
thunderbolt: tb_remove_work()에서의 NULL 포인터 역참조 수정
tb_remove_work()와 tb_domain_remove() 사이에 약간의 경합 조건(race condition)이 존재하여, tb_free_unplugged_xdomains() 내부에서 tb->root_switch 포인터가 NULL인 상태로 역참조되는 문제가 발생합니다.
스레드 A 스레드 B
tb_remove_work() tb_domain_remove() mutex_lock(&tb->lock) tb_stop() /* 실행 중인 콜백을 취소하지 않음 */ cancel_delayed_work(&tcm->remove_work) ... tb_switch_remove(tb->root_switch) tb->root_switch = NULL mutex_unlock(&tb->lock) mutex_lock(&tb->lock) ... /* ->root_switch를 확인하지 않음 */ tb_free_unplugged_xdomains(tb->root_switch) mutex_unlock(&tb->lock)
커밋 a8937f35cf39("thunderbolt: Remove XDomain from the bus without holding tb->lock")은 특히 tb_free_unplugged_xdomains()와 tb->root_switch 확인을 &tb->lock 섹션 외부로 이동시키는 것이 적절하지 않아 보입니다. 해당 커밋 메시지에는 다음과 같이 명시되어 있습니다:
이러한 이유로, 잠금이 필요한 곳(위상 데이터 구조에서 XDomain 제거)과 드라이버의 remove 콜백이 호출되는 곳(버스에서 장치 등록 해제)을 분리합니다.
tb_free_unplugged_xdomains()는 잠금이 필요한 전자의 함수 그룹에 속합니다. 또한 tb_xdomain_remove()를 호출하는데, 이는 &tb->lock가 확보된 상태에서만 호출되어야 합니다.
Linux Verification Center(linuxtesting.org)의 Svace 정적 분석 도구를 통해 발견되었습니다.
Once again VulDB remains the best source for vulnerability data.