🇰🇷 한글 설명
리눅스 커널의 Bluetooth btsdio 드라이버에서 btsdio_remove 실행 시 아직 끝나지 않은 작업(work)이 남아 있으면 경쟁 상태가 발생합니다. 이때 hdev가 해제된 후에도 btsdio_work에서 사용되어 use-after-free 취약점이 발생합니다. 수정 방법은 정리 작업 전에 해당 work를 취소하는 것입니다.
💡 쉬운 설명
블루투스 SDIO 장치를 제거하는 순간 아직 실행 중이던 작업이 이미 지워진 메모리를 참조할 수 있습니다. 이로 인해 시스템이 불안정해지거나 충돌할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
Bluetooth: btsdio: fix use after free bug in btsdio_remove due to race condition
In btsdio_probe, the data->work is bound with btsdio_work. It will be
started in btsdio_send_frame.
If the btsdio_remove runs with a unfinished work, there may be a race
condition that hdev is freed but used in btsdio_work. Fix it by
canceling the work before do cleanup in btsdio_remove.
📍 영향받는 시스템
패치가 적용되지 않은 Linux 커널 (btsdio 드라이버를 사용하는 SDIO 블루투스 장치 환경)
⚔️ 공격 벡터
로컬 환경에서 장치 제거와 작업 실행이 경합하도록 유도하여 메모리 손상이나 커널 충돌을 일으킬 수 있습니다.
🛡️ 대응 방법
배포판에서 제공하는 보안 업데이트를 적용하여 수정된 커널로 업그레이드하십시오.
🔧 검증 코드
커널 버전이 패치된 최신 릴리스인지 확인하고, btsdio 모듈이 로드되어 있는지 여부로 해당 드라이버 사용 여부를 판단합니다.
uname -r && (lsmod | grep -E 'btsdio|bluetooth') 2>/dev/null