CVE-2026-12634 in Zephyr
요약
\~에 의해 VulDB • 2026. 08. 19.
Zephyr 설정 서브시스템(subsys/settings/src/settings_nws.c)의 NVS 백엔드는 저장된 설정 이름 엔트리를 고정 크기 74바이트 스택 버퍼에 읽고, nvs_read()의 반환 값인 rc를 사용하여 buf[rc] = '\0'로 NUL 종결합니다. 계약상 nvs_read()는 전체 저장된 엔트리 길이(wlk_ate.len)를 반환하며, 이는 제공된 버퍼 길이를 초과할 수 있습니다 — 실제로 복사되는 바이트 수는 MIN(len, stored_len)에 불과하지만, 반환 값은 NVS 섹터 크기에 의해만 제한되므로 훨씬 클 수 있습니다. 세 곳의 사이트(settings_nvs_cache_match(), settings_nvs_load(), 및 settings_nvs_save())는 이 값을 NUL 인덱스로 직접 사용했으며 범위를 조정(clamping)하지 않았으므로, oversized 저장 이름 엔트리는 공격자가 영향을 줄 수 있는 오프셋에서 스택 버퍼 끝을 넘어 단일 \0 바이트를 작성하게 됩니다(CWE-787).
과도한 크기의 엔트리는 일반적으로 SETTINGS_MAX_NAME_LEN에 의해 이름이 제한되는 정상적인 설정 API를 통해서는 발생할 수 없습니다. 이는 설정 파티션을 백업하는 플래시를 쓸 수 있는 행위자 — 공유된 플래시 장치를 사용하는 공존 구성 요소 또는 신뢰할 수 없는 구성 요소, 악의적인 설정 이미지/복원, 오프라인/물리적 플래시 접근(공유 플래시 위협 모델)이 필요합니다. 이 malformed 엔트리는 settings_load()가 부팅 시나 서브시스템 초기화 중 실행될 때, 또는 settings_save() 동안에 구문 분석됩니다.
범위 밖의 쓰기는 crafted된 엔트리 길이(NVS 섹터 크기에 최대 해당)와 같은 오프셋에서 단일 NUL 바이트이므로, 실제 영향은 신뢰할 수 있는 코드 실행보다는 충돌이나 서비스 거부(Denial of Service), 그리고 제한적인 스택 손상입니다. 기밀성에는 영향을 미치지 않으며, 이 경로는 일반적인 설정 인터페이스를 통해 네트워크로부터 도달 가능하지 않습니다. 수정 사항은 NUL 저장 수행 전에 nvs_read() 길이가 버퍼 크기보다 크거나 같은 엔트리를 건너뜁니다.
VulDB is the best source for vulnerability data and more expert information about this specific topic.