🇰🇷 한글 설명
Linux 커널의 MCTP USB 드라이버에서 URB 완료와 rx_retry 취소 작업 간의 레이스 컨디션 취약점이 발견되었습니다. ndo_stop 과정에서 상태 설정과 작업 취소 순서가 어긋날 경우, 중단된 상태에서도 URB가 다시 큐에 추가되어 시스템 불안정을 초래할 수 있습니다.
💡 쉬운 설명
컴퓨터의 통신 장치를 끄는 과정에서 데이터 처리 작업이 꼬여서 발생하는 문제입니다. 이로 인해 장치가 꺼졌음에도 불구하고 데이터가 계속 처리되려 시도하면서 시스템에 오류가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: mctp: usb: fix race between urb completion and rx_retry cancellation
It's possible that sequencing between setting ->stopped and cancelling
the rx_retry work (in ndo_stop) could leave us with an urb queued:
T1: ndo_stop T2: rx_retry_work
------------ ----------------
LD: ->stopped => false
ST: ->stopped <= true
usb_kill_urb()
mctp_usb_rx_queue()
usb_submit_urb()
cancel_delayed_work_sync()
That urb completion can then re-schedule rx_retry_work.
Strenghen the sequencing between the stop (preventing another requeue)
and the cancel by updating both atomically under a new rx lock. After
setting ->rx_stopped, and cancelling pending work, we know that the
requeue cannot occur, so all that's left is killing any pending urb.
📍 영향받는 시스템
MCTP USB 드라이버를 사용하는 Linux 커널 버전
⚔️ 공격 벡터
로컬 공격자가 특정 네트워크 통신 시퀀스를 유도하여 커널 레이스 컨디션 유발
🛡️ 대응 방법
MCTP USB 관련 패치가 적용된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 확인합니다.