🇰🇷 한글 설명
리눅스 커널의 블루투스 mgmt 계층에서 EIR 업데이트 중 Use-After-Free(UAF) 취약점이 발견되었습니다. MGMT_OP_SET_LOCAL_NAME 명령이 비동기적으로 처리될 때 UUID 목록 변경과 충돌하거나 잠금 메커니즘이 누락되어 메모리 오류를 유발할 수 있습니다.
💡 쉬운 설명
블루투스 이름을 변경하는 과정에서 시스템이 메모리를 잘못 관리하여 프로그램이 충돌하거나 보안 문제가 생길 수 있는 오류입니다. 블루투스 관련 명령이 동시에 처리될 때 데이터가 사라진 메모리 영역을 참조하면서 발생합니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
Bluetooth: mgmt: fix pending command UAF in EIR updates
MGMT_OP_SET_LOCAL_NAME is handled asynchronously on powered controllers
and can run set_name_sync(). When the controller is BR/EDR capable,
set_name_sync() updates the local name and then rebuilds EIR data through
eir_create(). The EIR builder walks hdev->uuids, but the UUID list can
be changed and entries can be freed by MGMT_OP_ADD_UUID and
MGMT_OP_REMOVE_UUID.
pending_eir_or_class() is meant to serialize management commands that
can change EIR or the class of device, but it did not include
MGMT_OP_SET_LOCAL_NAME. In addition, it walked hdev->mgmt_pending
without hdev->mgmt_pending_lock even though pending commands are added
and removed under that mutex. A racing command completion can therefore
remove and free a pending command while pending_eir_or_class() is still
inspecting it, leading to a use-after-free in the pending-command list or
allowing a local name update to rebuild EIR while UUID entries are being
removed.
Take hdev->mgmt_pending_lock while scanning hdev->mgmt_pending and treat
MGMT_OP_SET_LOCAL_NAME as an EIR/class-affecting pending command on the
powered asynchronous path. Check for a conflicting pending command before
copying the new short name so a rejected SET_LOCAL_NAME request does not
modify hdev->short_name.
📍 영향받는 시스템
Bluetooth mgmt 기능을 사용하는 Linux Kernel (패치 적용 전 버전)
⚔️ 공격 벡터
로컬 시스템에서 블루투스 관리 명령(UUID 추가/삭제 및 이름 변경)을 동시에 실행하여 레이스 컨디션 유도
🛡️ 대응 방법
리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 최신 패치 버전인지 확인
📊 CVSS Vector String
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
💻 영향받는 소프트웨어
NVIDIA Cloud Gaming Guest Driver for Linux