🇰🇷 한글 설명
Linux 커널의 mcp2221 HID 드라이버에서 장치 제거 또는 프로브 실패 시 하드웨어 종료 과정과 HID 보고서 수신 간의 경합 조건으로 인한 Use-After-Free 취약점이 발견되었습니다. 이를 해결하기 위해 devm cleanup 콜백 시작 시 장치 IO를 중단하여 하드웨어 해제 중 발생할 수 있는 메모리 오류를 방지하도록 수정되었습니다.
💡 쉬운 설명
장치를 컴퓨터에서 제거하거나 연결이 끊길 때, 하드웨어가 꺼지기도 전에 데이터가 들어오려고 시도하여 시스템 오류가 발생할 수 있는 문제입니다. 이 문제는 장치가 꺼지는 순서를 올바르게 조정하여 메모리 충돌을 막음으로써 해결되었습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
HID: mcp2221: stop device IO before hid_hw_stop
Quiesce device IO at the start of the devm cleanup callback
mcp2221_hid_unregister() so that incoming HID reports cannot race with
hardware teardown during probe failure or device removal, addressing a
potential use-after-free.
Guard the call to hid_device_io_stop() with io_started. On normal
removal hid_device_remove() has already cleared io_started before the
devres group is released, so an unconditional call would otherwise hit
the !io_started path and emit a spurious "io already stopped" warning
on every removal. The guard preserves the probe-failure balancing,
where io_started is still set after hid_device_io_start(), while
staying silent on the normal removal path.
📍 영향받는 시스템
Linux kernel (mcp2221 HID driver 포함 버전)
⚔️ 공격 벡터
장치 제거 또는 프로브 실패 시 발생하는 하드웨어와 소프트웨어 간의 타이밍 경합(Race Condition)
🛡️ 대응 방법
mcp2221 드라이버의 IO 중단 로직이 포함된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 패치가 적용된 최신 보안 업데이트 버전인지 확인