From aaf99d3b6808a755589ee9e0060aa5692fa5d77b Mon Sep 17 00:00:00 2001 From: Aditya Patwardhan Date: Mon, 29 Jun 2026 13:50:14 +0530 Subject: [PATCH] fix(protocomm): zeroize SRP session key before free esp_srp_free() released the 64-byte SHA-512 session_key buffer with a plain free(), leaving the derived session key resident in heap memory that can later be reallocated and read back. Wipe it with mbedtls_platform_zeroize() before freeing. Closes SEC-120 --- components/protocomm/src/crypto/srp6a/esp_srp.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/components/protocomm/src/crypto/srp6a/esp_srp.c b/components/protocomm/src/crypto/srp6a/esp_srp.c index fb1f0d97c2d..3958b9d587d 100644 --- a/components/protocomm/src/crypto/srp6a/esp_srp.c +++ b/components/protocomm/src/crypto/srp6a/esp_srp.c @@ -13,6 +13,7 @@ #include "esp_srp_mpi.h" #include "esp_srp.h" #include "esp_check.h" +#include "mbedtls/platform_util.h" #define SHA512_HASH_SZ 64 @@ -172,6 +173,7 @@ void esp_srp_free(esp_srp_handle_t *hd) free(hd->bytes_A); } if (hd->session_key) { + mbedtls_platform_zeroize(hd->session_key, SHA512_HASH_SZ); free(hd->session_key); } free(hd);