CVE-2026-87044 in Zephyr
Zusammenfassung
von VulDB • 04.11.2026
Der Mbed TLS Crypto-Shim-Treiber in `drivers/crypto/crypto_mbedtls_shim.c` verarbeitet PSA-Multipart-Cipher- und AEAD-Vorgänge (Authenticated Encryption with Associated Data). In `mbedtls_cbc()` und `mbedtls_aead()` wurde jeder Fehlerpfad nach einem erfolgreichen Aufruf von `psa_cipher_encrypt_setup()` bzw. `psa_aead_decrypt_setup()` direkt beendet, ohne dass `psa_cipher_abort()` oder `psa_aead_abort()` aufgerufen wurden. Da der Abort-Vorgang die einzige Funktion ist, die `mbedtls_cipher_free()` erreicht, führte jeder fehlgeschlagene Vorgang zu einem permanenten Leck des heap-allokierten `mbedtls_aes_context` (ca. 288 Bytes), den das Setup aus dem festen statischen Heap von Mbed TLS (`_mbedtls_heap[CONFIG_MBEDTLS_HEAP_SIZE]`, Standardwert: 512 Bytes) alloziert hatte. Bei Verwendung von `CONFIG_PSA_CRYPTO_PROVIDER_TFM` wird stattdessen ein begrenzter Slot für sichere Partitionen mit Multi-Vorgang (secure-partition multipart-operation slot) geleakt.
Der Angriffspunkt kann von einem nicht authentifizierten Angreifer gewählt werden. Wenn der Treiber durch `CONFIG_NET_L2_IEEE802154_SECURITY` unterstützt wird, ruft `ieee802154_decrypt_auth()` in `subsys/net/l2/ieee802154/ieee802154_security.c` bei jedem empfangenen gesicherten Frame `cipher_ccm_op()` auf, ohne eine Authentifizierung vor der MIC-Prüfung (Message Integrity Code) durchzuführen. Ein Gerät im Funkbereich kann einen Strom syntaktisch gültiger 802.15.4-Frames mit einem gefälschten MIC senden; jeder einzelne führt dazu, dass `psa_aead_verify()` fehlschlägt und ein Block geleakt wird. Der CBC-Pfad ist auf die gleiche Weise über den OSDP-Sicherheitskanal erreichbar, wo durch `CONFIG_OSDP_SC_ENABLED` dieser Shim ausgewählt wird und `osdp_encrypt()` bzw. `osdp_decrypt()` das Feld `out_buf_max` nicht setzen, sodass jeder Vorgang innerhalb von `psa_cipher_update()` fehlschlägt.
Die Erschöpfung des Mbed TLS-Heaps – was bei der Standardkonfiguration nach einigen fehlgeschlagenen Operationen eintritt und in jeder realistischen Konfiguration unter einer Sekunde an Frames erreicht wird – führt dazu, dass alle nachfolgenden `mbedtls_calloc()`-Aufrufe fehlschlagen. Jeder spätere kryptografische Vorgang im Image schlägt dann dauerhaft fehl, einschließlich der Link-Layer-Sicherheit sowie aller TLS/DTLS-Vorgänge, die denselben Heap teilen, bis das Gerät neu gestartet wird. Es gibt keine Speicherkorruption oder Informationspreisgabe: Frames mit einem ungültigen MIC werden weiterhin abgelehnt, sodass die Auswirkung auf die Verfügbarkeit beschränkt ist.
Die Korrektur leitet alle Post-Setup-Fehler in `mbedtls_cbc()` und `mbedtls_aead()` über eine gemeinsame Fehlerbezeichner-Routine (error label), die den entsprechenden PSA-Abort aufruft, bevor sie zurückkehrt. Setup-Fehler erfordern keine Änderung, da der PSA-Core den Vorgang selbst abbricht, wenn das Setup fehlschlägt.
If you want to get best quality of vulnerability data, you may have to visit VulDB.