🇰🇷 한글 설명
Zephyr Bluetooth LE Audio BAP 유니캐스트 클라이언트가 상대방이 제공하는 ASE 상태 알림을 잘못 처리하여 발생하는 취약점입니다. 코덱 설정은 완료되었으나 유니캐스트 그룹에 추가되지 않은 상태에서 공격자가 조작된 QoS 알림을 보내면 NULL 포인터 역참조가 발생하여 시스템이 충돌합니다.
💡 쉬운 설명
블루투스 오디오 연결 과정에서 악의적인 기기가 잘못된 신호를 보내면 기기가 갑자기 꺼지거나 멈출 수 있는 보안 결함입니다. 공격자는 이 방법을 통해 연결된 기기의 서비스를 방해할 수 있습니다.
🇺🇸 원문 (English)
The Zephyr Bluetooth LE Audio Basic Audio Profile (BAP) unicast client mishandles peer-supplied ASE state notifications. In unicast_client_ep_qos_state() (subsys/bluetooth/audio/bap_unicast_client.c), the handler writes attacker-controlled QoS fields (interval, framing, phy, sdu, rtn, latency, pd) through the stream->qos pointer with only a stream != NULL guard. stream->qos is NULL for any stream that has been codec-configured via bt_bap_stream_config() but not yet added to a unicast group (it is set only by unicast_group_add_stream()).
A malicious or buggy remote ASCS server, to which the local device is connected as a BAP unicast client, can send a GATT notification announcing the ASE has entered the QoS Configured state while the local endpoint is still in the Codec Configured state — a transition the dispatcher explicitly permits — during that window, causing a write through a NULL pointer and a crash (denial of service). The data written is itself remote-controlled.
The defect shipped in v4.3.0 and v4.4.0 (and earlier). The fix re-points all BAP QoS storage to the always-valid embedded ep->qos struct, eliminating the NULL dereference.
📍 영향받는 시스템
Zephyr RTOS v4.3.0, v4.4.0 및 이전 버전
⚔️ 공격 벡터
악의적인 ASCS 서버가 GATT 알림을 통해 조작된 QoS 상태 변경 신호를 전송하여 NULL 포인터 쓰기 유도
🛡️ 대응 방법
BAP QoS 저장소를 항상 유효한 임베디드 ep->qos 구조체를 사용하도록 업데이트된 최신 버전으로 패치
🔧 검증 코드
현재 사용 중인 Zephyr RTOS의 버전이 취약한 버전(v4.3.0 이하)인지 확인합니다.
git describe --exact-match v4.3.0 v4.4.0 2>/dev/null || echo 'Check Zephyr version via build config'
📊 CVSS Vector String
CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
💻 영향받는 소프트웨어
Windows Bluetooth Service