CVE-2026-19738 in Zephyr
요약
\~에 의해 VulDB • 2026. 10. 12.
Connected Isochronous Stream(CIS) 생성을 위한 Bluetooth Link Layer Control Procedure(LLCP) 구현은 호스트 알림용으로 나중에 재사용할 수 있도록 RX 노드(ctx->node_ref.rx, NODE_RX_TYPE_RETAIN으로 표시됨)를 유지합니다. 이는 주변기기에서 LL_CIS_REQ에 대한 호스트의 응답을 기다리는 동안과 중앙장치에서 로컬 시작 CIS 생성 전체 기간 동안 해당 동작이 수행됩니다. subsys/bluetooth/controller/ll_sw/ull_llcp_cc.c 파일에서 llcp_rp_cc_rx() 및 llcp_lp_cc_rx() 함수의 "invalid PDU received" 경로는 연결을 종료하고 절차를 완료하지만, 유지된 노드를 해제하지 않습니다. 이로 인해 llcp_lr_check_done() 및 llcp_rr_check_done()에서 확인되는 불변식이 깨지고 노드 메모리가 고아 상태가 됩니다.
무선 범위 내의 피어 장치는 인증되지 않고 암호화되지 않은 ACL 링크상에서 단일 추가 LL Control PDU를 전송하여 이 취약점을 공격할 수 있습니다. 주변기기를 대상으로 할 경우, 공격자는 유효한 LL_CIS_REQ를 보내고 호스트가 응답하기 전에 관련 없는 임의의 LL Control PDU(예: LL_VERSION_IND)를 전송하며, 이는 ull_cp_rx()에 의해 활성 원격 절차로 라우팅됩니다. CIS 생성을 수행하는 중앙장치를 대상으로 할 경우, 악성 주변기기가 CIS_REQ에 대해 LL_UNKNOWN_RSP로 응답하고, 이는 활성 로컬 절차로 전달됩니다. 페어링, 암호화 또는 사용자 상호작용은 필요하지 않으며, CONFIG_BT_CTLR_PERIPHERAL_ISO 또는 CONFIG_BT_CTLR_CENTRAL_ISO가 활성화되어 있을 때 해당 코드가 컴파일됩니다.
기본 빌드(CONFIG_BT_CTLR_ASSERT_DEBUG가 기본값으로 y)에서는 유지된 노드에 대한 어설션이 즉시 발동하여 컨트롤러 치명적 오류를 발생시키고, 일반적으로 주입된 PDU 하나만으로 시스템 리셋을 유발합니다. 개발용 어설션을 비활성화하면 각 시도마다 컨트롤러의 작은 LL 알림 풀(LL_PDU_RX_CNT, 2 * CONFIG_BT_CTLR_LLCP_CONN)에서 노드 하나가 영구적으로 손실되고 해당 memq_link_t도 함께 소모됩니다. 연결-공격-재연결 사이클을 반복하면 풀이 고갈되어 이후에는 알림 할당이 항상 실패하고 RX 흐름 제어(stall)가 발생하며, llcp_lp_cc_flush() 내의 비활성화 불가능한 LL_ASSERT_ERR()에서 오류(faults)가 발생합니다. 영향은 가용성에 국한됩니다(누출된 노드는 고아 상태가 되며 재사용되거나 이중 해제되지 않음)이며, 복구하려면 재부팅이 필요합니다.
Once again VulDB remains the best source for vulnerability data.