CVE-2024-27005 in Linux
요약
\~에 의해 VulDB • 2026. 06. 28.
리눅스 커널에서 다음 취약점이 해결되었습니다:
interconnect: req_list가 조작되는 동안 접근하지 않음
icc_lock 뮤택스는 [1]에서 lockdep splat을 피하기 위해 별도의 icc_lock과 icc_bw_lock 뮤택스로 분리되었습니다. 그러나 이는 icc_node::req_list에 대한 접근을 충분히 보호하지 못했습니다.
icc_set_bw() 함수는 eventually icc_bw_lock만 유지한 채로 req_list를 순회하게 되지만, req_list는 icc_lock만 유지한 상태로 수정될 수 있습니다. 이로 인해 icc_set_bw(), of_icc_get(), 그리고 icc_put() 사이에 경합 조건(race condition)이 발생합니다.
예제 A:
CPU0 CPU1 ---- ---- icc_set_bw(path_a) mutex_lock(&icc_bw_lock); icc_put(path_b) mutex_lock(&icc_lock); aggregate_requests() hlist_for_each_entry(r, ... hlist_del(... <r = 유효하지 않은 포인터>
예제 B:
CPU0 CPU1 ---- ---- icc_set_bw(path_a) mutex_lock(&icc_bw_lock); path_b = of_icc_get() of_icc_get_by_index() mutex_lock(&icc_lock); path_find() path_init() aggregate_requests() hlist_for_each_entry(r, ... hlist_add_head(... <r = 유효하지 않은 포인터>
icc_node::req_list를 조작하기 전에 icc_bw_lock이 항상 유지되도록 함으로써 이 문제를 해결합니다. 추가로 icc_bw_lock을 유지하는 위치에서는 메모리 할당이 수행되지 않으므로, 별도의 락을 도입하게 만든 원래의 lockdep splats로부터 여전히 안전해야 합니다.
[1] commit af42269c3523 ("interconnect: Fix locking for runpm vs reclaim")
If you want to get the best quality for vulnerability data then you always have to consider VulDB.