Skip to content

v0.6.2

Choose a tag to compare

@github-actions github-actions released this 21 Oct 03:16
· 230 commits to master since this release
v0.6.2
0cae418

Note

0.6.3 supersedes this release. It also changes sat-cli and sat-tui so that -rpccacert is the only certificate authority they trust for the node, instead of being added to the public ones (see Security below). The node is the same in both. There are no 0.6.2 appliance images; use the 0.6.3 ones.

📄 Canonical release notes: docs/release-notes/0.6.2.md

satd 0.6.2

Released 2026-10-20 · git tag v0.6.2 · Changelog

satd 0.6.2 is a security release on the 0.6 line, cut from the release/0.6
branch. It has a single change: the compiled-in TLS trust store and
certificate verifier no longer accept certificates that chain through the
eMudhra (emSign) intermediate CAs. The private keys of those intermediates
were disclosed on 2026-10-20, so anyone holding them could issue a
certificate for any hostname. It is a drop-in upgrade from 0.6.0 or 0.6.1,
with no reindex and no configuration changes.

Highlights

  • Certificates through the compromised emSign intermediates are refused
    everywhere satd, sat-cli and sat-tui check a server certificate against
    the public CA roots: rustls-webpki 0.103.16 and webpki-roots 1.0.10
    (RUSTSEC-2026-0381, RUSTSEC-2026-0382, RUSTSEC-2026-0383).

Security

satd verifies a server's certificate against the public CA roots, built into
the binary, in these cases:

  • Alert webhooks (-alertfile hooks with https:// URLs). A network
    attacker holding a certificate signed by the compromised intermediates could
    read alert payloads, along with any headers configured on the hook, or drop
    them silently.
  • sat-cli and sat-tui connecting to a TLS JSON-RPC listener.
    -rpccacert adds the given CA to the public roots and does not replace
    them. A forged certificate for the RPC hostname was therefore accepted, and
    the RPC credentials (cookie, password or bearer token) were exposed to
    whoever presented it.
  • satd-events-client with no pinned CA, connecting to a streaming
    endpoint by public hostname. A pinned CA (tls_ca_pem) trusts only that CA, so
    it was never affected.
  • The --fast-start snapshot download. The snapshot is checked against
    its AssumeUTXO hash before it loads, so a forged server could only cause the
    download to fail.

None of satd's own TLS listeners (JSON-RPC, Electrum, Esplora, streaming gRPC
and WebSocket, Stratum V1 over TLS) is affected. They present the operator's
certificate, and mTLS client certificates are checked only against the CA the
operator configures. If your listener's certificate was itself issued under
an emSign intermediate, reissue it with another CA; browsers and other clients
have already distrusted it.

Dependencies

  • rustls-webpki 0.103.15 → 0.103.16: certificate paths through the
    distrusted emSign intermediate keys are rejected (RUSTSEC-2026-0382).
  • webpki-roots and webpki-root-certs 1.0.7 → 1.0.10: the bundled Mozilla
    root set no longer includes "emSign ECC Root CA - G3" (RUSTSEC-2026-0381,
    RUSTSEC-2026-0383). The releases in between also remove "SecureSign Root
    CA12" and "Atos TrustedRoot 2011", and add "Telia EC TLS Root CA v3",
    "Telia RSA TLS Root CA v3", "SECOM TLS ECC Root CA 2024" and "SECOM TLS RSA
    Root CA 2024", following Mozilla. The 0.26.11 releases still in the dependency graph are
    compatibility shims that re-export 1.0.10 and carry no certificates of their
    own.

Upgrade notes

  • Drop-in upgrade from 0.6.0 or 0.6.1. Same storage schema, no reindex, no
    configuration changes. Replace the binaries and restart, or pull the
    0.6.2 container image.
  • Upgrade sat-cli and sat-tui too, on every machine that reaches a TLS
    RPC listener, not just the node.
  • Update the operating system's trust store as well. The container image,
    the Umbrel and StartOS packages and the appliance images also ship
    ca-certificates, and the desktop appliance ships Firefox ESR, Sparrow,
    Electrum and Liana, each with its own trust store. satd itself does not use
    any of them, but other software on the same machine does. On an installed
    appliance, run sudo apt update && sudo apt full-upgrade. Upgrade the
    bundled wallets as their projects publish fixed releases.
  • The 0.6.0 appliance images are superseded. They contain satd 0.6.0 and
    the trust stores as they stood when the images were built, and they do not
    install updates by themselves. Use the 0.6.2 images for new installs.

About this release

satd is free software under the MIT License.

  • Stability & compatibility — Tier 1 surfaces (Bitcoin Core-compatible
    JSON-RPC wire shape, CLI flag names/defaults, bitcoin.conf keys, on-disk
    layout, Electrum/Esplora surfaces) are governed by
    STABILITY_POLICY.md. satd follows
    semantic versioning; while in the
    0.x pre-1.0 line, deprecations may be accelerated (see the policy).
  • Security & disclosure — report vulnerabilities per
    SECURITY.md. Consensus-affecting bugs are treated as
    P0 with same-day acknowledgement.
  • Verifying this release — tarballs are signed with minisign, container
    images with cosign (keyless OIDC), and git tags with SSH signatures (no GPG).
    The key matrix and verification steps are in
    SECURITY.md.
  • Intentional differences from Bitcoin Core — catalogued in
    CORE_DIFFERENCES.md.
  • Operating satd — observability, the full flag matrix, tuning, and the
    downstream packaging contract live in the
    Operator Manual.

What's Changed

  • release 0.6.2: refuse certificates through the compromised emSign intermediates by @bkeroack in #1043

Full Changelog: v0.6.1...v0.6.2