🇰🇷 한글 설명
Linux 커널의 Bluetooth hci_conn 모듈에서 create_big_sync 함수 호출 시 발생할 수 있는 Use-After-Free(UAF) 취약점이 해결되었습니다. 연결 상태를 검증하지 않고 객체를 참조할 경우, 이미 해제된 메모리에 접근하여 시스템 불안정이나 권한 상승을 초래할 수 있습니다.
💡 쉬운 설명
블루투스 연결을 만드는 과정에서 이미 끊어진 연결 정보를 잘못 참조하여 발생하는 보안 결함입니다. 이 문제를 이용하면 해커가 시스템을 강제로 종료시키거나 제어권을 탈취할 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
Bluetooth: hci_conn: fix potential UAF in create_big_sync
Add hci_conn_valid() check in create_big_sync() to detect stale
connections before proceeding with BIG creation. Handle the
resulting -ECANCELED in create_big_complete() and re-validate the
connection under hci_dev_lock() before dereferencing, matching the
pattern used by create_le_conn_complete() and create_pa_complete().
Keep the hci_conn object alive across the async boundary by taking
a reference via hci_conn_get() when queueing create_big_sync(), and
dropping it in the completion callback. The refcount and the lock
are complementary: the refcount keeps the object allocated, while
hci_dev_lock() serializes hci_conn_hash_del()'s list_del_rcu() on
hdev->conn_hash, as required by hci_conn_del().
hci_conn_put() is called outside hci_dev_unlock() so the final put
(which resolves to kfree() via bt_link_release) does not run under
hdev->lock, though the release path would be safe either way.
Without this, create_big_complete() would unconditionally
dereference the conn pointer on error, causing a use-after-free
via hci_connect_cfm() and hci_conn_del().
📍 영향받는 시스템
Linux Kernel (Bluetooth hci_conn 관련 모듈 포함 버전)
⚔️ 공격 벡터
악의적인 블루투스 연결 요청을 통해 연결 해제와 생성 과정을 교묘하게 조작하여 메모리 오류 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 취약점이 해결된 패치 버전인지 확인