CVE-2026-72123 in Linux정보

요약

\~에 의해 VulDB • 2026. 08. 17.

리눅스 커널에서 다음 취약점이 해결되었습니다:

can: bcm: thrtimer UAF를 수정하기 위해 rx_op 할당 해제를 작업 큐(workqueue)로 지연시킴

커밋 f1b4e32aca08("can: bcm: 비싼 synchronize_rcu() 대신 call_rcu() 사용")은 bcm_delete_rx_op()에서 synchronize_rcu()를 call_rcu()로 대체하고 RX_NO_AUTOTIMER 플래그를 도입했습니다.

그러나 이 플래그 확인이 패킷 rx 고속 경로(fast-path)의 thrtimer에서는 생략되었습니다. BCM RX 작업 종료 중, 병렬 RCU 리더(bcm_rx_handler)가 경쟁하여 bcm_rx_update_and_send()를 통해 call_rcu()가 예약된 후에도 thrtimer를 다시 아ーム할 수 있습니다. RRC 그레이스 기간이 경과하면 bcm_op이 해제됩니다. 이후 발사되는 thrtimer는 이미 할당 해제된 op을 역참조(UAF)하여 취약점을 유발합니다.

rx 고속 경로(bcm_rx_update_and_send)에 플래그 확인을 추가하는 것은 TOCTOU 경쟁을 완전히 차단하지 못하며, 모든 CAN 프레임마다 지연 시간을 발생시킵니다. 반면, RRC 콜백(softirq 컨텍스트) 내에서 hrtimer_cancel()을 직접 호출하면 치명적입니다. hrtimer_cancel()은 수면(sleep)할 수 있어 "scheduling while atomic" 패닉을 유발하기 때문입니다.

이를 해결하기 위해 타이머 취소 및 메모리 해제를 전용 비바운드(unbound) 작업 큐(bcm_wq)로 지연시킵니다. RCU 콜백은 이제 bcm_wq에 작업 항목을 큐에 추가하며, 이는 수면 가능한 프로세스 컨텍스트에서 안전하게 두 가지 타이머를 모두 취소하고 메모리를 할당 해제합니다. 시스템 전체의 WQ 포화를 방지하기 위해 전용 작업 큐가 사용되며, 모듈 언로드 시 rmmod 페이지 폴트를 피하기 위해 깨끗하게 플러시되고 파괴됩니다.

지연된 작업이 호출 컨텍스트보다 무제한적으로 더 오래 지속될 수 있으므로, op->sk가 할당될 때 참조를 획득하고 지연된 작업이 두 타이머 모두를 취소한 후에만 이를 해제합니다. 이렇게 하면 여전히 아ーム되어 있는 타이머의 콜백(bcm_send_to_user())이 op->sk를 역참조하는 동안 소켓이 갑자기 해제되는 상황을 방지할 수 있습니다.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

책임이 있는

Linux

예약하다

2026. 08. 09.

모더레이션

수락

항목

VDB-390520

EPSS

0.00206

활동

낮음

출처

Want to know what is going to be exploited?

We predict KEV entries!