CVE-2026-19742 in Zephyr
요약
\~에 의해 VulDB • 2026. 10. 26.
IPv6 스택은 RFC 7217의 안정적 인터페이스 식별자(gen_stable_iid(), subsys/net/ip/ipv6.c 위치)와 RFC 8981의 임시 인터페이스 식별자(gen_temporary_iid(), subsys/net/ip/ipv6_pe.c 위치)를 계산하는 데 사용되는 장기 지속(secret key) 키를 sys_rand_get()을 통해 도출했습니다. 해당 API는 암호학적으로 안전하지 않다고 문서화되어 있지만, 두 RFC 모두 이 키가 최소 128비트의 불확실한(random) 값이어야 한다고 요구합니다. 생성된 모든 IID의 불확실성은 전적으로 이 키에 달려 있습니다.
플랫폼에 따라 sys_rand_get()은 하드웨어 엔트로피 장치로 해결되거나, 엔트로피 드라이버에서 CONFIG_ENTROPY_NEEDS_PRNG를 설정하는 보드에서는 subsys/random/random_xoshiro128.c의 비암호학적 xoshiro128++ 생성기로 해결됩니다. 이 생성기는 모든 다른 sys_rand_get() 소비자들과 공유되는 단일 전역 128비트 상태를 유지합니다. 이러한 소비자의 많은 부분이 그 출력을 직접 네트워크에 전송(임시 소스 포트, DNS 쿼리 ID, CoAP 메시지 ID 및 토큰, DHCPv6 트랜잭션 ID, WebSocket 마스킹 키 등)하며, xoshiro 상태 전이는 역행 가능하므로 장치의 트래픽을 관찰하는 공격자는 생성기 상태를 복원하고 IID 비밀 키를 재구성할 수 있습니다. 또한 엔트로피 장치 백엔드에서 sys_rand_get()은 엔트로피 드라이버가 실패할 때 k_cycle_get_32() 샘플로 조용히(falls back) 대체되며 오류를 반환하지 않으므로, 호출자가 눈치채지 못한 채 키가 사이클 카운터로부터 도출될 수 있습니다.
키가 알려진 경우, 안정적 IID는 모든 프리픽스에 대해 직접 계산 가능해집니다(나머지 HMAC 입력값인 프리픽스, 인터페이스 인덱스, 인터페이스 이름, DAD 카운터는 추측 가능합니다). 또한 임시 IID는 k_uptime_get_32() 값에 대한 저렴한 검색을 통해 연결(linkable)될 수 있습니다. 이는 두 기능이 제공하려는 속성을 무력화합니다: 공격자는 네트워크와 프리픽스를 가로질러 장치를 추적할 수 있으며, 스캔 없이 /64 서브넷 내에서 장치의 주소를 예측할 수 있어 호스트를 직접 표적 삼는 데 있는 일반적인 장벽이 제거됩니다. 메모리 안전성(integrity), 무결성 또는 가용성에 미치는 영향은 없습니다.
해결책은 sys_csrand_get()을 사용하여 키를 생성하고, 암호학적 난수가 사용 불가능한 경우 조용히 예측 가능한 키로부터 주소를 도출하는 대신 -EIO로 IID 생성을 중단합니다. CONFIG_NET_IPV6_IID_STABLE 및 CONFIG_NET_IPV6_PE는 모두 실험적 기능이며 기본적으로 비활성화되어 있습니다; CONFIG_TEST_RANDOM_GENERATOR를 사용하는 빌드는 sys_csrand_get()이 의도적으로 테스트용 생성기로 라우팅되므로 설계상 예측 가능합니다.
If you want to get best quality of vulnerability data, you may have to visit VulDB.