🔍 CVE-2026-2411

6.5
CVSS Score
MEDIUM
2026-08-01
2026-10-23 23:10
✅ 완료

🇰🇷 한글 설명

Zephyr의 Bluetooth 호스트에서 GATT 특성 선언과 값 속성 간의 권한 확인 오류로 인해 보안 검증이 우회되는 취약점입니다. 공격자가 암호화나 인증 없이도 보안이 설정된 특성 값을 읽을 수 있어 정보 유출 및 접근 제어 우회가 발생할 수 있습니다.

💡 쉬운 설명

블루투스 기기가 중요한 정보를 보호하기 위해 암호화된 연결을 요구하더라도, 시스템의 실수로 암호화 없이도 정보를 보내주는 보안 구멍이 발견되었습니다. 이를 통해 해커가 인증 없이 기기의 민감한 데이터를 몰래 훔쳐볼 수 있습니다.

🇺🇸 원문 (English)

Zephyr's Bluetooth host declares a GATT characteristic as two consecutive attributes: a Characteristic Declaration whose permission is hard-coded to BT_GATT_PERM_READ, and a Characteristic Value attribute that carries the application-specified security permissions (e.g. BT_GATT_PERM_READ_ENCRYPT / READ_AUTHEN / READ_LESC). The public notify and indicate APIs explicitly accept either attribute, and passing the declaration is the documented, common idiom. Before sending each notification or indication, the host re-checks link security with bt_gatt_check_perm() against params->attr in gatt_notify(), gatt_indicate(), and gatt_notify_multiple_verify_params() (subsys/bluetooth/host/gatt.c). When the application passed the Characteristic Declaration attribute, the host correctly redirected the value handle but left params->attr pointing at the declaration, so the security check evaluated the declaration's permissions (no security required) instead of the value's. As a result the encryption/authentication/LESC requirement configured on the characteristic value was skipped. The Notify-Multiple path additionally used a mask that omitted the LE Secure Connections requirement. A remote peer triggers the disclosure by connecting (optionally without pairing or encryption) and writing the Client Characteristic Configuration descriptor to enable notifications or indications, causing the server to emit the protected value over a link that has not reached the required security level. The impact is information disclosure / access-control bypass for characteristic values the application intended to expose only over a secured link; exposure depends on the application declaring encrypt/authen-required notify/indicate characteristics and on the CCC being writable at a lower security tier. There is no memory-safety or availability impact. The fix adds bt_gatt_attr_resolve_value(), which maps a declaration attribute to the following value attribute before the permission check, and switches the Notify-Multiple path to the full BT_GATT_PERM_READ_ENCRYPT_MASK so the LESC requirement is also enforced.

📍 영향받는 시스템

Zephyr RTOS (Bluetooth Host stack)

⚔️ 공격 벡터

암호화되지 않은 연결 상태에서 CCC(Client Characteristic Configuration)를 작성하여 보호된 알림(Notification) 또는 지시(Indication)를 강제로 활성화함

🛡️ 대응 방법

bt_gatt_attr_resolve_value() 함수를 적용하여 권한 확인 전 속성을 올바르게 매핑하고, Notify-Multiple 경로의 보안 마스크를 업데이트한 최신 패치를 적용하십시오.

🔧 검증 코드

패치 로그에 해당 CVE가 포함되어 있거나 소스 코드 내에 bt_gatt_attr_resolve_value 함수가 구현되어 있는지 확인합니다.

Shell / Script
git log --grep='CVE-2026-2411' || grep -r 'bt_gatt_attr_resolve_va' subsys/bluetooth/host/gatt.c

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N

💻 영향받는 소프트웨어

Storage Protect Client