🇰🇷 한글 설명
리눅스 커널의 블루투스 ISO 스택에서 kfree와 kref_get_unless_zero 간의 레이스 컨디션 취약점이 발견되었습니다. hci_conn::iso_data가 잠금(lock)이나 RCU 없이 접근 및 수정되어 Use-After-Free(UAF)가 발생할 수 있습니다.
💡 쉬운 설명
블루투스 데이터를 처리하는 과정에서 두 가지 작업이 동시에 일어나 데이터가 삭제된 후에도 접근을 시도하는 오류가 발생합니다. 이로 인해 시스템이 충돌하거나 해커가 시스템 권한을 탈취할 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
Bluetooth: ISO: fix race of kfree vs kref_get_unless_zero
hci_conn::iso_data is accessed and modified without lock or RCU.
This leads to a race
[Task hdev->workqueue] [Task 2]
iso_recv iso_conn_put(conn)
conn = LOAD hcon->iso_data iso_conn_free(conn)
iso_conn_hold_unless_zero(conn) hcon->iso_data = NULL
kfree(conn)
kref_get_unless_zero(&conn->ref) /* UAF */
and also to races in iso_conn_add() vs. iso_conn_free().
Fix by adding spinlock hci_conn::proto_lock and using it to guard
hci_conn::iso_data.
📍 영향받는 시스템
Linux Kernel (Bluetooth ISO stack 포함 버전)
⚔️ 공격 벡터
특수하게 조작된 블루투스 ISO 패킷을 전송하여 커널 내 레이스 컨디션 유도
🛡️ 대응 방법
리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트 (hci_conn::proto_lock 적용 버전)
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 확인합니다.