site/releases-manifest.json
Local Dev b0569c92d8 Ariadne 0.1.8: pinned-origin reverse proxy for ip+tls names
Before 0.1.8, a BNS name with an on-chain `ip` record made the daemon return
the origin's public IP directly. Browsers then hit the origin's own HTTPS
server -- and if that origin's cert was not browser-trusted (which is the
whole point of the on-chain `tls` fingerprint pin next to the `ip` record),
every browser except Theseus rejected the site with ERR_CERT_AUTHORITY_INVALID
or SEC_ERROR_UNKNOWN_ISSUER. game.x and hephaestus.x both hit this. Theseus
was fine because its in-process resolver validates against the on-chain pin.

0.1.8 answers DNS with 127.0.0.1 whenever the name has BOTH `ip` and `tls`,
terminates the browser's TLS locally with our trusted leaf, and reverse-proxies
to the origin over HTTPS while validating the origin's SHA-256 fingerprint
against the on-chain pin. Same algorithm Theseus uses (main.js:pinnedHttpsGet,
cert.fingerprint256 lower-cased, colons stripped) so a site's `tls` record
means the same thing in-Theseus and system-wide.

Names with just `ip` (no pin) keep direct routing -- unchanged. Only opts in
when the owner has published a fingerprint pin, so nothing regresses for sites
that deliberately wanted direct IP routing.

Two subtle bugs found + fixed while landing this:

1. `agent: false` on the outbound https.request. With Node's default global
   agent (keepAlive on), the second request onwards reuses the TLS socket
   and `res.socket.getPeerCertificate(false)` comes back stripped of
   fingerprint256 -- pin validation then reads "empty" and rejects with 526.
   Fresh socket per request costs a handshake but is cheap next to the
   pin-verify miss.

2. Removed `content-encoding` from the hop-by-hop strip list. Origin sends
   gzip'd bytes; my proxy streams them unchanged. If we strip
   content-encoding while forwarding compressed bytes, the browser treats the
   gzip magic as text and renders garbage. content-encoding is end-to-end
   per RFC 7230 -- keep it.

Verified on this box: game.x, hephaestus.x, theseus.x, sirius.x,
coinspectrum.x, hello.bch all load HTTPS 200 in strict IWR and Chromium; DNS
answers 127.0.0.1 for game.x + hephaestus.x (was their origin IP before),
still their origin IP for names without a tls pin.

Deployed
- dl.silentmode.st/AriadneResolver-Setup-0.1.8.exe
- s3://bns/silentmode/dl/AriadneResolver-Setup-0.1.8.exe
- silentmode.st manifest advertises 0.1.8
- sha256 47450ad4555beb04fe3b90ae5f658dc2932061d011ada9a2fb507471e2f0a0cb
2026-09-28 22:29:44 +02:00

65 lines
6 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"schema": "silentmode-releases/2",
"updated": "2026-09-28",
"mirrors": [
"https://dl.silentmode.st/"
],
"releases": [
{
"id": "theseus-navigator",
"product": "Theseus Navigator",
"version": "0.3.59",
"date": "2026-09-28",
"platform": "win-x64",
"signed": false,
"signingAuthority": null,
"changes": "Privacy, regrouped: Settings › Privacy now opens with a status card and gathers tracking protection (Shield and Cookie Pop-ups with their per-site exceptions), device access, anti-fingerprinting, network and browsing data in one place. New there: DNS over HTTPS (on by default with Quad9; Cloudflare, Mullvad, AdGuard or your own resolver; an increased-protection mode that never falls back to plain DNS) and Global Privacy Control, which tells every site not to sell or share your data (the Sec-GPC header plus navigator.globalPrivacyControl). Every Settings page has an address you can copy and open, theseus://settings/privacy for example, with sub-pages for the longer lists. Search-engine icons ship inside Theseus and a custom engine's icon is cached once, so the toolbar, the picker and Settings look the same offline and opening the picker no longer asks a favicon service which engines you use; the default-engine control in Settings shows the icons too. A video's fullscreen now hides the toolbar and leaving it, switching tabs or closing the tab puts the window back (before, the window could stay fullscreen with no title-bar buttons); F11 toggles fullscreen. A name owner's subdomain rules (a blocked or redirected subdomain) now apply in Theseus for names it reaches directly by IP as well, not only through the gateway.",
"files": {
"TheseusNavigator-0.3.59-portable.exe": "3fd83638c205b2ec42176031b5c775cb519c8ca24bf8acda63bf514a781b6f69",
"TheseusNavigator-Setup-0.3.59.exe": "82506429906f7dca5db4e1cb37f26b806f0217e8db35426a0345c339a8b4ced5"
}
},
{
"id": "ariadne-resolver",
"product": "Ariadne Resolver (Windows)",
"version": "0.1.8",
"date": "2026-09-28",
"platform": "win-x64",
"signed": false,
"signingAuthority": null,
"changes": "BNS names with an `ip` record and an on-chain `tls` fingerprint pin now load cleanly in every browser -- game.x, hephaestus.x and any other site that pins its origin cert. Previously the daemon returned the raw `ip` and browsers hit the site's own server directly; if that server's cert was not browser-trusted (which is the whole point of publishing an on-chain pin), users got ERR_CERT_AUTHORITY_INVALID or SEC_ERROR_UNKNOWN_ISSUER. 0.1.8 answers DNS with 127.0.0.1 whenever `ip`+`tls` are both present, terminates the browser's TLS with a locally-trusted leaf, and reverse-proxies to the origin over HTTPS -- validating the origin cert against the on-chain fingerprint (same algorithm Theseus uses in main.js:pinnedHttpsGet, cert.fingerprint256 lower-case, colons stripped). Names with just `ip` (no pin) keep direct routing unchanged. Also carries 0.1.7 (runtime-switchable collision policy via C:\\ProgramData\\Ariadne\\policy.json) and 0.1.6 (self-syncing routing + CA). Upgrades in place.",
"files": {
"AriadneResolver-Setup-0.1.8.exe": "47450ad4555beb04fe3b90ae5f658dc2932061d011ada9a2fb507471e2f0a0cb"
}
},
{
"id": "ariadne-android",
"product": "Ariadne for Android",
"version": "0.21",
"date": "2026-09-28",
"platform": "android",
"minSdk": 21,
"signed": true,
"signingAuthority": null,
"signingCertSha256": "46ebbbe5dc73148d66410fd0337b1e6683472128c983e8e2578200b9e3ca548c",
"changes": "Fix: names whose only content record is a URL redirect (u) — hermes.x, prometheus.x, helios.x, silentmode.x — now open in the tab instead of crashing with a resolver error. The app was handing WebView a synthetic 302 response, which Androids WebResourceResponse forbids for any status in the [300, 399] range; redirects are now served as an HTML meta-refresh under status 200. As defence in depth, on-device fetches through the public relay also follow relay-side redirects automatically now.",
"files": {
"ariadne-v0.21.apk": "5ed400d8223dbaef3abc013855629d9c9822c4a02e767126547834180c7488ec"
}
},
{
"id": "theseus-navigator",
"product": "Theseus Navigator",
"version": "0.3.49",
"date": "2026-09-20",
"platform": "win-x64",
"signed": false,
"signingAuthority": null,
"changes": "Engine: Electron 44 / Chromium 152 (from 130) — a year-old engine had become a bot signal (DataDome-fronted shops served a block page), and the identity Theseus presents is now consistent on both sides (client-hint brands computed like Chromium, matching navigator.userAgentData, well-formed Accept-Language). Extensions: anyone who holds a BCDN name can publish an extension from theseus.x/extensions; Settings › Extensions › Community lists the catalog and installs with the publisher's signature verified against the name's owner in Theseus's own index. Settings › Plug-ins and › Extensions link to the new theseus.x/plug-ins and /extensions pages. Tabs: the tab strip lives in the title bar (Windows), a tab opened from a link lands next to its opener, the selected tab has an accent, the strip no longer blinks when another tab loads, the address bar follows the page even after you clicked into it, and holding or right-clicking Back/Forward lists the history. Also: HTTP sign-in prompt for sites behind Basic/Digest auth instead of a bare 401; local paths and file:// URLs open from the address bar; owner-signed DNS records (A/AAAA/MX/TXT via /api/dns) are fetched alongside on-chain records; the Ariadne's Thread card finds the installed resolver and answers in about 2 s. Includes everything from 0.3.47 and 0.3.48.",
"files": {
"TheseusNavigator-0.3.49-portable.exe": "1e44162b3dddb79dff7609374e0f02153a38255d5a94847dd95d99d29c7f582a",
"TheseusNavigator-Setup-0.3.49.exe": "0f1c34063963cd72e051662617aea51642a01c3a3c4a2a0a03f831131fa83cc5"
}
}
]
}