CVE-2026-11985 in Zephyr정보

요약

\~에 의해 VulDB • 2026. 08. 11.

Zephyr ARM 포트에서 하드웨어 FPU(CONFIG_FPU)를 활성화하면 "Floating point ABI" 옵션이 CONFIG_FP_HARDABI로 기본값으로 설정됩니다. FP_HARDABI와 FP_SOFTABI 모두 컴파일러가 부동소수점 타입을 사용하지 않는 함수를 포함한 모든 함수에서 하드웨어 FP 명령어를 생성할 수 있게 합니다. 그러나 호출자 저장(FP callee-saved) 레지스터(s16-s31 / d8-d15)는 CONFIG_FPU_SHARING이 활성화된 경우에만 컨텍스트 스위치 시 보존 및 복원됩니다(arch/arm/core/cortex_m/swap_helper.S 및 arch/arm/core/cortex_a_r/swap_helper.S 참조). 이 수정 이전에는 ABI 선택이 FPU 레지스터 공유를 활성화하지 않았으며, 이는 기본적으로 비활성화 상태였습니다.

FPU가 기본 ABI로 활성화되었지만 CONFIG_FPU_SHARING은 비활성화된 상태로 빌드된 경우, 커널은 스레드 전환 간 호출자 저장 FP 레지스터 상태를 보존하지 않습니다. 이 "공유되지 않은(unshared)" 모드의 문서화된 전제 조건인 "단 하나의 스레드만 FP 명령어를 실행한다"는 것이 컴파일러가 모든 스레드에서 FP 명령어를 생성할 수 있기 때문에 묵시적으로 위반됩니다.

CONFIG_USERSPACE 하에서는 스레드가 상호 격리되므로, 이는 정보 유출 경계 침범으로 이어집니다: 피해자 스레드는 s16-s31에 비밀 기반 값을 남겨둘 수 있으며, 동일한 환경의 비특권(unprivileged) 스레드는 해당 레지스터를 직접 읽을 수 있습니다(FP 레지스터 접근은 권한 제한이 없음). 이를 통해 다른 스레드가 남긴 데이터를 복구할 수 있습니다. Userspace가 없는 경우에도 동일한 결함으로 인해 교차 스레드 FP 상태 손상(정확성 오류, correctness fault)이 발생합니다. 누출 범위는 16개의 호출자 저장 단정도(single-precision) 레지스터로 제한되며 기회주의적이므로 영향도는 낮습니다.

해결책은 FP_HARDABI와 FP_SOFTABI가 CONFIG_FPU_SHARING을 선택하도록 하고, 생성 시 모든 스레드에 K_FP_REGS 태그를 부여합니다. 이로 인해 컴파일러가 FP 명령어를 생성할 수 있는 경우 컨텍스트 스위치 간 호출자 저장 FP 상태가 항상 보존됩니다.

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

책임이 있는

Zephyr

예약하다

2026. 06. 11.

모더레이션

수락

항목

VDB-387991

EPSS

0.00000

활동

낮음

출처

Do you know our Splunk app?

Download it now for free!