Repository navigation
v0.6.3
📄 Canonical release notes:
docs/release-notes/0.6.3.md
satd 0.6.3
satd 0.6.3 is a security release on the 0.6 line, cut from the release/0.6
branch. It has a single change, to sat-cli and sat-tui: with -rpctls,
the CA named by -rpccacert is now the only authority they trust for the
node's certificate. Until now it was added to the public CA roots compiled
into the binary, so any public CA could vouch for the node. The node itself
is unchanged from 0.6.2. It is a drop-in upgrade from 0.6.0, 0.6.1 or 0.6.2,
with no reindex and no configuration changes.
Highlights
-rpccacertis the only trust anchor forsat-cliandsat-tui.
A certificate for the node's hostname from a public CA, issued by mistake
or with a stolen key, is no longer accepted in place of your own.
Security
0.6.2 refused certificates issued through the compromised eMudhra (emSign)
intermediates, but a sat-cli or sat-tui given -rpccacert still trusted
every other public root as well. A public CA that issued a certificate for
the RPC hostname, by mistake or after a key compromise like emSign's, could
stand in for the node and receive the RPC credentials (cookie, password or
bearer token) the client sends.
From 0.6.3, sat-cli and sat-tui build their TLS configuration
themselves. With -rpccacert, the root store holds that CA alone. Without
it, the store is the public root set, the same webpki-roots 1.0.10 set as
0.6.2, so a node behind a publicly trusted certificate still needs no flag.
A client certificate for an mTLS listener (-rpcclientcert,
-rpcclientkey) is presented exactly as before.
satd's own TLS listeners, alert webhooks and the --fast-start download are
unchanged from 0.6.2.
Streaming SDKs
Neither SDK changes, and neither needs to: given a CA, both already trust
only that CA. Without one, each falls back to a public root set that the
SDK release does not fix:
- Rust (
satd-events-client) uses thewebpki-rootsset through tonic,
and certificate paths are checked byrustls-webpki. Your own project's
Cargo.lockpicks both versions, not the SDK's release. Run
cargo update -p rustls-webpki -p webpki-rootsto reachrustls-webpki
0.103.16 andwebpki-roots1.0.10, which refuse the emSign intermediates. - Go (
clients/go) uses the operating system's trust store. Update the
system'sca-certificates.
The SDKs are released at 0.6.3 to keep their versions in step with the node.
Upgrade notes
- Drop-in upgrade from 0.6.0, 0.6.1 or 0.6.2. Same storage schema, no
reindex, no configuration changes. Replace the binaries and restart, or
pull the0.6.3container image. - Upgrade
sat-cliandsat-tuion every machine that reaches a TLS RPC
listener, not just the node. This release changes nothing else. -rpccacertmust name the CA that issued the node's certificate. If
you pass-rpccacertto reach a node whose certificate comes from a public
CA, the connection is now refused. Drop the flag, since the public roots
apply without it, or name that CA's root.- Everything in the 0.6.2 upgrade notes still
applies, including updating the operating system's trust store. The 0.6.2
appliance images were not built; the 0.6.3 images replace the 0.6.0 ones.
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.confkeys, on-disk
layout, Electrum/Esplora surfaces) are governed by
STABILITY_POLICY.md. satd follows
semantic versioning; while in the
0.xpre-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
Full Changelog: v0.6.2...v0.6.3