🇰🇷 한글 설명
리눅스 커널의 qcom-pmic-typec 드라이버에서 포트 중지 시 지연된 작업(cc_debounce_dwork)이 적절히 취소되지 않는 취약점이 발견되었습니다. 이로 인해 장치가 해제된 후에도 지연된 작업이 실행되어 메모리 오류를 유발할 수 있습니다.
💡 쉬운 설명
USB 연결을 끊을 때 컴퓨터가 하던 일을 제대로 마무리하지 못해 발생하는 오류입니다. 이 오류로 인해 시스템이 갑자기 멈추거나 예상치 못한 동작을 할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
usb: typec: qcom-pmic-typec: disable cc_debounce_dwork on stop
cc_debounce_dwork is queued from the set_cc() and start_toggling()
callbacks, which run from TCPM's kthread worker. port_stop() returns
before tcpm_unregister_port() destroys that worker. Flushing the worker
during unregister may therefore run a callback which queues the delayed
work after port_stop() has returned.
The delayed work can then run after devres has freed pmic_typec_port.
Use disable_delayed_work_sync() in port_stop() to cancel a pending
instance and prevent the TCPM callbacks from queueing another one.
This issue was found by an in-house static analysis tool.
📍 영향받는 시스템
Qualcomm PMIC Type-C 드라이버를 사용하는 리눅스 커널 기반 시스템
⚔️ 공격 벡터
로컬 공격자가 특정 USB 장치 연결/해제 시퀀스를 유도하여 커널 메모리 오류 유발
🛡️ 대응 방법
리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 port_stop() 내 disable_delayed_work_sync() 적용 확인
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인