🇰🇷 한글 설명
리눅스 커널의 Thunderbolt 드라이버에서 DPRX 읽기 작업이 취소된 후에도 DP 터널에 접근하는 취약점이 발견되었습니다. 이로 인해 도메인이 중단되거나 해제되는 과정에서 이미 해제된 터널에 대해 콜백을 실행하여 시스템 불안정을 초래할 수 있습니다.
💡 쉬운 설명
컴퓨터가 절전 모드로 들어가거나 연결된 장치를 분리할 때, 이미 꺼진 연결 통로를 계속 사용하려고 시도하여 오류가 발생하는 문제입니다. 이로 인해 시스템이 멈추거나 예상치 못한 동작을 할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
thunderbolt: Don't access a DP tunnel after its DPRX read was canceled
tb_dp_dprx_work() checks ->dprx_canceled before it takes tb->lock so it
misses a tb_dp_dprx_stop() that could not cancel the already running
work. It then polls the DPRX capabilities and runs the callback for a
tunnel that has already been torn down while the domain is suspending or
going away.
This can be hit by cancelling the DPRX read from outside the ordered
tb->wq: During suspend tb_disconnect_and_release_dp() does just this and
with a later patch tb_stop() will do it as well. The latter in combination
with the Apple NHI where the DPRX read never completed is how I hit
this.
Check the flag with tb->lock held instead and check it again in
tb_dp_tunnel_active() because the callback runs after the lock has been
dropped again.
Also clear the flag in tb_dp_dprx_start() so that it only ever describes
the work that is currently in flight.
📍 영향받는 시스템
Thunderbolt 드라이버를 사용하는 리눅스 커널 기반 시스템 (Apple NHI 관련 하드웨어 포함)
⚔️ 공격 벡터
물리적 장치 연결 해제 또는 시스템 절전 모드 진입 시 발생하는 레이스 컨디션(Race Condition)
🛡️ 대응 방법
Thunderbolt 관련 패치가 적용된 최신 리눅스 커널로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 수정된 최신 패치 버전인지 확인하십시오.