configs: enable overall stack smashing protection for production devices
What changed, and why it matters
This commit strengthens a security guardrail on Blockstream Jade hardware wallets by turning on the most thorough stack-smashing protection for production builds. Stack smashing is a common way attackers try to take control of a device by overflowing a memory region; enabling 'ALL' mode tells the compiler to insert checks on every function, rather than only risky-looking ones, making exploitation harder. It is a defensive hardening change, not a fix for a known active bug.
Treat as a routine defensive-hardening improvement. No immediate incident response is warranted because no specific vulnerability is disclosed. Users on production firmware benefit automatically once rebuilt with the new config. Developers should monitor performance and stack-usage regressions due to the broader canary coverage, and continue to audit for stack-overflow sources rather than relying solely on canaries.
Security signals we found
Hardening: stack canary coverage expanded from STRONG to ALL
Target: production hardware-wallet firmware builds
Scope: all three supported production hardware variants (Jade v1.1, v2, v2c)
No specific CVE or vulnerability is mentioned in the commit
Change is purely configuration/compiler mitigation
Evidence from the diff
The patch changes CONFIG_COMPILER_STACK_CHECK_MODE_STRONG to CONFIG_COMPILER_STACK_CHECK_MODE_ALL in three ESP-IDF production sdkconfig defaults for Jade v1.1, v2, and v2c. In ESP-IDF, STRONG inserts stack canaries for functions that the compiler deems to use large or vulnerable stack frames, while ALL inserts canaries for every function. This is a compile-time mitigation that increases the probability of detecting stack-buffer overflows and aborting before control flow is hijacked. It does not patch any specific overflow vulnerability and carries a small performance/code-size cost, which is why it is applied only to production configs.
Changed components
configs/production/sdkconfig_jade_v1_1_prod.defaultsconfigs/production/sdkconfig_jade_v2_prod.defaultsconfigs/production/sdkconfig_jade_v2c_prod.defaultsESP-IDF compiler stack-protection settingsInspect captured patch +3 / −3
diff --git a/configs/production/sdkconfig_jade_v1_1_prod.defaults b/configs/production/sdkconfig_jade_v1_1_prod.defaults
index b3f6caa..91ea5ff 100644
--- a/configs/production/sdkconfig_jade_v1_1_prod.defaults
+++ b/configs/production/sdkconfig_jade_v1_1_prod.defaults
@@ -31,7 +31,7 @@ CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
CONFIG_COMPILER_OPTIMIZATION_SIZE=y
-CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
+CONFIG_COMPILER_STACK_CHECK_MODE_ALL=y
CONFIG_COMPILER_WARN_WRITE_STRINGS=y
CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE=y
CONFIG_ESP32_DISABLE_BASIC_ROM_CONSOLE=y
diff --git a/configs/production/sdkconfig_jade_v2_prod.defaults b/configs/production/sdkconfig_jade_v2_prod.defaults
index b4ec7ee..d667122 100644
--- a/configs/production/sdkconfig_jade_v2_prod.defaults
+++ b/configs/production/sdkconfig_jade_v2_prod.defaults
@@ -27,7 +27,7 @@ CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
CONFIG_COMPILER_OPTIMIZATION_SIZE=y
-CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
+CONFIG_COMPILER_STACK_CHECK_MODE_ALL=y
CONFIG_COMPILER_WARN_WRITE_STRINGS=y
CONFIG_ESPTOOLPY_FLASHMODE_QIO=y
CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y
diff --git a/configs/production/sdkconfig_jade_v2c_prod.defaults b/configs/production/sdkconfig_jade_v2c_prod.defaults
index 094b1a9..b0fe634 100644
--- a/configs/production/sdkconfig_jade_v2c_prod.defaults
+++ b/configs/production/sdkconfig_jade_v2c_prod.defaults
@@ -27,7 +27,7 @@ CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
CONFIG_COMPILER_OPTIMIZATION_SIZE=y
-CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
+CONFIG_COMPILER_STACK_CHECK_MODE_ALL=y
CONFIG_COMPILER_WARN_WRITE_STRINGS=y
CONFIG_ESPTOOLPY_FLASHMODE_QIO=y
CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y
Why this scored 46/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.