build: increment the firmware secure version
What changed, and why it matters
This commit changes the build settings for all production variants of the Blockstream Jade hardware wallet to set a 'secure version' to 1. This is part of the device's anti-rollback protection: once this version is set, the bootloader will refuse to run older firmware that has a lower secure version. On its own, this change does not fix a bug or add a feature users interact with; it is a build-time policy change that affects which firmware versions the device will accept in the future. It could be a routine hardening step, or it could be a response to a known vulnerability that the vendor wants to ensure cannot be exploited by downgrading to an older, vulnerable firmware. The commit message and diff do not say which is the case.
Treat this as a security-relevant build policy change that requires context from the vendor. Users and integrators should check Blockstream's release notes or advisory channel to learn whether this secure-version bump is routine hardening or a response to a disclosed vulnerability. If it is the latter, ensure devices are upgraded to the new firmware before any attacker with physical access can downgrade them to an older, vulnerable version. Do not downgrade across this boundary, as the eFuse change is irreversible.
Security signals we found
Anti-rollback enforcement being activated/pinned for production firmware
One-way eFuse secure-version bump across all supported hardware variants
No accompanying source-code fix or vulnerability description in the commit
Change affects bootloader acceptance policy, not application logic
Evidence from the diff
The patch adds CONFIG_BOOTLOADER_APP_SECURE_VERSION=1 to six ESP32 production sdkconfig default files for Jade (v1, v1.1, v2, with and without radio). The device already had CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK=y and CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y, so anti-rollback was enabled, but no secure version was previously pinned in these production configs. Setting a non-zero secure version causes the bootloader to enforce that any new firmware has a secure version >= 1 and to reject older images with secure version 0. This is a one-way operation on ESP32: once a secure version is written to eFuse it cannot be decreased. The change therefore permanently raises the minimum firmware revision the hardware will boot, preventing downgrade to pre-version-1 firmware. The commit does not include any runtime code changes, vulnerability fixes, or explanation of why the secure version needed to be raised now.
Changed components
Blockstream Jade production firmware build configurationESP32 bootloader anti-rollback policyAll Jade production variants: jade_prod, jade_noradio_prod, jade_v1_1_prod, jade_v1_1_noradio_prod, jade_v2_prod, jade_v2_noradio_prodInspect captured patch +6 / −0
diff --git a/production/sdkconfig_jade_noradio_prod.defaults b/production/sdkconfig_jade_noradio_prod.defaults
index 1ae8983..185ef15 100644
--- a/production/sdkconfig_jade_noradio_prod.defaults
+++ b/production/sdkconfig_jade_noradio_prod.defaults
@@ -8,6 +8,7 @@ CONFIG_BF20A6_SUPPORT=n
CONFIG_BF3005_SUPPORT=n
CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK=y
CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
+CONFIG_BOOTLOADER_APP_SECURE_VERSION=1
CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
CONFIG_BOOTLOADER_WDT_ENABLE=n
CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
diff --git a/production/sdkconfig_jade_prod.defaults b/production/sdkconfig_jade_prod.defaults
index e0f0df5..29eaf13 100644
--- a/production/sdkconfig_jade_prod.defaults
+++ b/production/sdkconfig_jade_prod.defaults
@@ -7,6 +7,7 @@ CONFIG_BF20A6_SUPPORT=n
CONFIG_BF3005_SUPPORT=n
CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK=y
CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
+CONFIG_BOOTLOADER_APP_SECURE_VERSION=1
CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
CONFIG_BOOTLOADER_WDT_ENABLE=n
CONFIG_BTDM_CTRL_BLE_MAX_CONN=1
diff --git a/production/sdkconfig_jade_v1_1_noradio_prod.defaults b/production/sdkconfig_jade_v1_1_noradio_prod.defaults
index bdf6841..1a8e97f 100644
--- a/production/sdkconfig_jade_v1_1_noradio_prod.defaults
+++ b/production/sdkconfig_jade_v1_1_noradio_prod.defaults
@@ -9,6 +9,7 @@ CONFIG_BF3005_SUPPORT=n
CONFIG_BOARD_TYPE_JADE_V1_1=y
CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK=y
CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
+CONFIG_BOOTLOADER_APP_SECURE_VERSION=1
CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
CONFIG_BOOTLOADER_WDT_ENABLE=n
CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
diff --git a/production/sdkconfig_jade_v1_1_prod.defaults b/production/sdkconfig_jade_v1_1_prod.defaults
index 2c24cc4..cad6b1c 100644
--- a/production/sdkconfig_jade_v1_1_prod.defaults
+++ b/production/sdkconfig_jade_v1_1_prod.defaults
@@ -8,6 +8,7 @@ CONFIG_BF3005_SUPPORT=n
CONFIG_BOARD_TYPE_JADE_V1_1=y
CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK=y
CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
+CONFIG_BOOTLOADER_APP_SECURE_VERSION=1
CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
CONFIG_BOOTLOADER_WDT_ENABLE=n
CONFIG_BTDM_CTRL_BLE_MAX_CONN=1
diff --git a/production/sdkconfig_jade_v2_noradio_prod.defaults b/production/sdkconfig_jade_v2_noradio_prod.defaults
index 5bfcd9d..33a53c6 100644
--- a/production/sdkconfig_jade_v2_noradio_prod.defaults
+++ b/production/sdkconfig_jade_v2_noradio_prod.defaults
@@ -5,6 +5,7 @@ CONFIG_BF3005_SUPPORT=n
CONFIG_BOARD_TYPE_JADE_V2=y
CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK=y
CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
+CONFIG_BOOTLOADER_APP_SECURE_VERSION=1
CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
CONFIG_BOOTLOADER_WDT_ENABLE=n
CONFIG_BOOT_ROM_LOG_ALWAYS_OFF=y
diff --git a/production/sdkconfig_jade_v2_prod.defaults b/production/sdkconfig_jade_v2_prod.defaults
index 0e5eb9f..7d331d5 100644
--- a/production/sdkconfig_jade_v2_prod.defaults
+++ b/production/sdkconfig_jade_v2_prod.defaults
@@ -4,6 +4,7 @@ CONFIG_BF3005_SUPPORT=n
CONFIG_BOARD_TYPE_JADE_V2=y
CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK=y
CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
+CONFIG_BOOTLOADER_APP_SECURE_VERSION=1
CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
CONFIG_BOOTLOADER_WDT_ENABLE=n
CONFIG_BOOT_ROM_LOG_ALWAYS_OFF=y
Why this scored 33/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.