COLDCARD vulnerability what happened, and what to do
Informational only, and this site never asks for your recovery words. details

Informational only. This is independent analysis and an evidence-backed explainer, not financial, security or legal advice, and not a substitute for professional advice about your own situation. It is not affiliated with, endorsed by, or speaking for Coinkite, Block, or any other party named here. Published estimates are attributed, and differing scenarios are kept separate with their assumptions. Act on your own judgement. Editorial standards and corrections.

Do not disclose recovery material to a website, form, message or support account. This site never asks for it. Deliberate recovery on independently verified offline equipment is a separate operation. Seed-word safety.

COLDCARD firmware PR #690 patch

coldcard-firmware-pr-690-patch

https://github.com/Coldcard/firmware/pull/690.patch

Organisation
Coinkite
Evidence role
Repository patch
Published
not established
Source changes
0
Detected differences
0
Unreviewed
0
Copies held
1

Patch content for the merged Edge hotfix. Kept separately from the pull-request conversation capture.

Every check is recorded, including checks that found no text change. A detected edit is therefore bounded between two checks. The publisher's exact save time is not observable from this record. Last checked 2 Aug 2026, 00:58 UTC.

  1. Earliest copy held Current
    seen 1 Aug 2026, 06:39 UTC · Captured here text sha256 be031495cba58b0c9290eaf9 139,776 chars
    Extracted text as captured
    From c66e095e1efa61ee00d1b537cbd65ced5ddeb34c Mon Sep 17 00:00:00 2001
    From: scgbckbone <[email protected]>
    Date: Fri, 31 Jul 2026 13:23:49 +0200
    Subject: [PATCH 01/23] Use hardware RNG for Mk and Q libngu
    ---
     stm32/COLDCARD_MK4/mpconfigboard.h  |  1 +
     stm32/COLDCARD_MK4/mpconfigboard.mk |  8 +++++++-
     stm32/COLDCARD_MK4/rng.c            |  6 +++++-
     stm32/COLDCARD_MK4/rng.h            |  3 ++-
     stm32/COLDCARD_Q1/mpconfigboard.mk  |  6 ++++++
     stm32/shared.mk                     | 22 ++++++++++++++++++++++
     6 files changed, 43 insertions(+), 3 deletions(-)
    diff --git a/stm32/COLDCARD_MK4/mpconfigboard.h b/stm32/COLDCARD_MK4/mpconfigboard.h
    index 4933d9cb5..b3ccb7c7c 100644
    --- a/stm32/COLDCARD_MK4/mpconfigboard.h
    +++ b/stm32/COLDCARD_MK4/mpconfigboard.h
    @@ -75,6 +75,7 @@
     // We have our own version of this code.
    +// LATER: when zero, this selected some PRNG code we really didnt want.
     #define MICROPY_HW_ENABLE_RNG       (0)
     extern void ckcc_early_init(void);
    diff --git a/stm32/COLDCARD_MK4/mpconfigboard.mk b/stm32/COLDCARD_MK4/mpconfigboard.mk
    index 07d59743d..822a7bac6 100644
    --- a/stm32/COLDCARD_MK4/mpconfigboard.mk
    +++ b/stm32/COLDCARD_MK4/mpconfigboard.mk
    @@ -92,7 +92,13 @@ build-COLDCARD_MK4/flashbdev.o: CFLAGS += -Dled_state=led_state_OMIT
     build-COLDCARD_MK4/spibdev.o: CFLAGS += -Dled_state=led_state_OMIT
     build-COLDCARD_MK4/factoryreset.o: CFLAGS += -Dled_state=led_state_OMIT
     build-COLDCARD_MK4/boardctrl.o: CFLAGS += -Dled_state=led_state_OMIT
    -
    +
    +# Do not compile MicroPython's fallback PRNG. The board-specific rng.c
    +# provides rng_get(), and this empty object satisfies the upstream object list.
    +$(BUILD)/rng.o: CFLAGS += -Dpyb_rng_yasmarang=error-do-not-want-this
    +$(BUILD)/rng.o: $(BOARD_DIR)/mpconfigboard.mk
    +	$(ECHO) "SKIP stm32/rng.c"
    +	$(Q)$(CC) $(CFLAGS) -x c -c /dev/null -o $@
     files:
     	# SRC_C: $(SRC_C)
    diff --git a/stm32/COLDCARD_MK4/rng.c b/stm32/COLDCARD_MK4/rng.c

    Excerpt only. The complete copy is held offline and backs quotations on this site. The original publication remains the canonical public source.

How to check this yourself

Each copy above is identified by the SHA-256 of its extracted text, shown beside it, and the diffs are plain unified diffs. To verify a quotation, compare it against the page itself or against the Internet Archive's copies, which are independent of this project.

Complete captures are held offline rather than mirrored here, so this page shows diffs and excerpts. If a quotation is ever disputed, the full copy can be produced. Ask.