CVE-2026-87044 in Zephyr
요약
\~에 의해 VulDB • 2026. 11. 04.
drivers/crypto/crypto_mbedtls_shim.c의 Mbed TLS crypto shim 드라이버는 PSA multipart cipher 및 AEAD 작업을 처리합니다. mbedtls_cbc()와 mbedtls_aead()에서 psa_cipher_encrypt_setup() 또는 psa_aead_decrypt_setup() 성공 후 모든 오류 경로는 psa_cipher_abort()/psa_aead_abort()를 호출하지 않고 직접 반환됩니다. abort가 mbedtls_cipher_free()에 도달하는 유일한 경로이므로, 각 실패한 작업은 Mbed TLS의 고정된 정적 힙(_mbedtls_heap[CONFIG_MBEDTLS_HEAP_SIZE], 기본값 512바이트)에서 setup이 할당한 heap-allocated mbedtls_aes_context(약 288바이트)를 영구적으로 누설시킵니다. CONFIG_PSA_CRYPTO_PROVIDER_TFM 사용 시, 누설되는 객체는 대신 유한한 secure-partition multipart-operation 슬롯입니다.
이 결함은 인증되지 않은 공격자가 선택할 수 있습니다. 이 드라이버에 의해 지원되는 CONFIG_NET_L2_IEEE802154_SECURITY 환경에서 subsys/net/l2/ieee802154/ieee802154_security.c의 ieee802154_decrypt_auth()는 수신된 모든 보안 프레임에 대해 MIC 확인 전에 인증 없이 cipher_ccm_op()를 호출합니다. 무선 범위 내 장치는 위조된 MIC를 포함하는 구문적으로 유효한 802.15.4 프레임 스트림을 전송할 수 있으며, 각각의 프레임은 psa_aead_verify()를 실패시켜 블록 하나를 누설시킵니다. CBC 경로는 CONFIG_OSDP_SC_ENABLED가 이 shim을 선택하고 osdp_encrypt()/osdp_decrypt()에서 out_buf_max이 설정되지 않아 모든 작업이 psa_cipher_update() 내부에서 실패하는 OSDP secure 채널을 통해 동일한 방식으로 접근 가능합니다.
Mbed TLS 힙 고갈(기본 구성에서는 몇 번의 실행 후, 실제적인 구성에서는 1초도 채 되지 않는 프레임으로 달성 가능)은 이후 모든 mbedtls_calloc() 호출이 실패하게 만듭니다. 이미지 내의 그後の 모든 암호화 작업(링크 계층 보안 및 동일한 힙을 공유하는 TLS/DTLS 포함)은 영구적으로 실패하며, 장치가 재부팅될 때까지 지속됩니다. 메모리 손상이나 정보 유출은 발생하지 않습니다: MIC가 잘못된 프레임은 여전히 거부되므로 영향력은 가용성(Availability) 제한에 불과합니다.
이 수정은 mbedtls_cbc()와 mbedtls_aead()의 모든 setup 후 실패를 일치하는 PSA abort를 호출한 후 반환하는 공통 오류 라벨로 처리하도록 합니다. 설정(setup) 실패는 PSA 코어가 설정 실행 시 자체적으로 작업을 중단하므로 변경이 필요하지 않습니다.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.