CVE-2026-10680 in Zephyr
요약
\~에 의해 VulDB • 2026. 07. 22.
Classic(BR/EDR) L2CAP 시그널링 처리기인 subsys/bluetooth/host/classic/l2cap_br.c의 l2cap_br_conf_req() 및 l2cap_br_conf_rsp()는 최소 명령어 크기를 buf->len(전체 수신 PDU에서 남은 바이트 수) 대신 len(L2CAP 시그널링 헤더에서의 명령별 데이터 길이)과 비교하여 검증했습니다. 여러 개의 시그널링 명령어가 하나의 PDU에 패킹될 수 있으므로, buf->len이 특정 명령어의 len보다 클 수 있습니다. 공격자는 구성 요청 구조체(예: 0)보다 작은 헤더 길이를 가진 CONF_REQ 명령어를 전송한 후 다른 명령어를 이어 붙여, buf->len이 여전히 검증을 만족하도록 할 수 있습니다. 그러면 검증이 잘못 통과하고 opt_len = len - sizeof(*req) 계산에서 uint16_t 오버플로우가 발생하여 0xFFFF에 가까운 값으로 떨어집니다. opt_len과 buf->len 간의 경계 체크(guard)가 없는 구성 옵션 루프는 런타임 바운드 검사를 수행하지 않는 net_buf pull 원시 함수를 사용하여 풀링된 ACL 수신 버퍼의 끝을 훨씬 넘어 접근하게 되며, 이로 인해 호스트 메모리에 대한 바깥 영역 읽기(out-of-bounds read)가 발생합니다. 또한 바깥 영역 옵션 바이트들이 MTU 또는 플러시 타임아웃 옵션으로 인코딩되어 있는 경우, 바깥 영역 쓰기(out-of-bounds write)도 발생할 수 있습니다. BR/EDR 시그널링 채널은 페어링/암호화 전에 처리되며, SDP와 같은 L0 서비스로의 L2CAP 채널이 페어링 없이 열릴 수 있으므로, 무선 범위 내에 있어 ACL 연결을 수립할 수 있는 인증되지 않은 피어(peer)가 이 결함을 트리거하여 메모리 손상 및 서비스 거부(호스트/장치 크래시)를 초래할 수 있습니다. 해당 결함은 v4.4.0을 포함한 출시된 버전들에 존재합니다. 수정 패치는 두 처리기 모두에서 buf->len 대신 len에 대해 검증하도록 변경했습니다.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.