Weekly companion to the Mix Networks 2026 Research and Deployment Tracker and Overview - Mix Networks. This week is "Tor 15.0.24 + 16.0a13 ship on the same day with a new gpg subkey + Tails 7.14 catches the wave + Nym sphinx 0.8.0 removes legacy SURBs + NymVPN credential-issuer key rotation pre-announcement + Katzenpost Windows race-detector lands + HOPR StalledSink + return-path WIP + I2P i2psnark request-throttle tuning". Tor Browser 16.0a13 (Sep 30) lands the day before the new gpg subkey rolls out — and the Windows code-signing cert renewal is finally in place (tor-browser-build#41890 + tor-browser-build#41883 + tor-browser-build#41847 signs all releases with the new gpg subkey). It also flips the proxy resolution fast-path off in Gecko (tor-browser#45333), which means Firefox will now actually attempt the SOCKS proxy when no explicit proxy config tells it to do something different — a small but consequential default for Tor Browser, where "no proxy" leaking traffic has been a recurring bug class. Tor Browser 15.0.24 (Sep 29, by morgan) lands the stable counterpart and Tails 7.14 (Sep 30) picks it up the same day plus Tor 0.4.9.13 and Linux 6.12.111. Nym merges the Sphinx 0.8.0 upgrade (PR #7197, Oct 1) that removes support for the legacy SURB format; repliable messages are now V2-only and the V1 data/additional-SURB/heartbeat formats are no longer supported. Incoming V2 data messages are now reconstructed with reply SURBs forwarded. Nym also merges the threat-model transport docs correction (PR #7192, Sep 29) that finally distinguishes what adversaries see over direct connections vs. mixnet-mode (direct destinations see the client's IP; mixnet destinations see only the exit gateway's IP). Nym publishes a pre-announced NymVPN credential-issuer key rotation (Sep 24 blog) requiring v2026.12.4 or newer for a credential-issuance outage-free transition. Katzenpost #1182 (Oct 1) fixes five races in client/thin by reading t.conn under connMu, restores Windows unit tests under -race, and bumps the Go directive to 1.26.8 so make check passes off the CI image. HOPR #8463 + #8464 + #8453 + #8471 (Oct 1) ship a stalled write-pump sink timeout, return-path relayer-diversity blind-spot diagnostics, and a SURB store eviction counter in the flow estimator. I2P i2psnark (Sep 9) adjusts the request throttles.
TL;DR — This Week
- Tor Browser 16.0a13 (Sep 30) — first alpha to ship with the new gpg subkey (tor-browser-build#41847 signs all releases using the new key) + Windows code-signing cert renewal (tor-browser-build#41890 + #41883). tor-browser#45333 disables the fast-path to skip proxy resolution — Firefox will now attempt the SOCKS proxy even when no explicit proxy config tells it to do something different; a small default-flip with large consequences for "no proxy" leakage. Updates Tor to 0.4.9.13, NoScript to 13.6.34.90101984, OpenSSL to 3.5.9, Firefox to 153.4.0esr; backports Firefox 157 security fixes (tor-browser#45366); rebases onto 153.4.0esr (tor-browser#45359); disable harmful addon URL blocking (tor-browser#44815); disable the Reporting API (tor-browser#45080); account for onion aliases in NoScript site parsing (tor-browser#45368); hook CharacterData/Range insertion sinks for content patches propagation (tor-browser#45371); review preference changes between Firefox 141 and 153 (tor-browser#45073); hide verifier + related error for self-signed onion cert case (tor-browser#45343); fix crash when clicking "Learn more…" in onion site error page (tor-browser#45346); port language preference customization to the new settings design (tor-browser#45360); YEC 2026 Takeover for Desktop Stable (tor-browser#45218). Linux: drop Linux 32-bit deprecation notice (carried over from last week's #44887). Android: GeckoView 153.4.0esr, share selected text fix (tor-browser#40627), disable import bookmarks until stable (tor-browser#45363). Build system: update marionette harness to accept multiple tags (tor-browser#45334), mach lint fix for rumdl 0.1.91 (tor-browser#45367). Sign-exe wrapper updates to the new Windows signing cert.
- Tor Browser 15.0.24 (Sep 29, by morgan) — stable counterpart. The blog explains the Tor Project is now on a 2-week stable cadence (paired with Firefox's new schedule), so the week-gap from 14-25 → 14-30-23 → 16-01 was the alpha cadence and 15-09 → 15-22 → 15-23 → 15-24 is the stable side. Stable now picks up the 0.4.9.13 + NoScript 13.6.34.90101984 + OpenSSL 3.5.9 stack, so users get the same Tor + OpenSSL level as the alpha; the gap to Tor Browser 16.x has been compressing rather than widening.
- Tails 7.14 (Sep 30) — second release on the new 2-week cadence. Bundles Tor Browser 15.0.24 + Tor client 0.4.9.13 + Linux kernel 6.12.111; fixes the default keyboard input method when starting a session in Korean (#21779). Per the Sep 16 release-schedule mail, intrigeri was the RM; the Sep 18 → Oct 1 window is the milestone.
- Nym sphinx 0.8.0 lands (PR #7197, merged Oct 1) —
bump sphinx to 0.8.0 / Remove support for legacy SURB format / Config fields are kept as-is to avoid another migration, it will disappear with LP. Repliable messages now use V2 content; V1 data, additional-SURB, and heartbeat formats are no longer supported. Incoming V2 data messages are reconstructed with reply SURBs forwarded. Additional-SURB and heartbeat messages forward associated SURBs according to content type, with heartbeat SURBs handled separately from request-originated batches. Config fields are kept as-is — the change is in the protocol-level format, not in the persisted config schema; the LP replacement will remove the config field entirely. 41 lines added, 532 lines removed across 23 files — large net-removal because the legacy format code paths come out. - Nym threat-model transport docs (PR #7192, merged Sep 29) —
Max/threat model transport corrections. Threat-model references now distinguish what adversaries cannot observe over direct connections versus when the client uses the mixnet. Actor descriptions clarify that direct destinations can see the client's IP, while mixnet destinations see the exit gateway's IP. They also explain how mixing and cover traffic limit network observers' visibility into routes, packet correspondence, and communication activity. The primary adversary is now labeled explicitly. Reviewed by merve64. - Nym sphinx-stack builds (crates 1.22.1, PR #7191) —
crates release: bump version to 1.22.1. Follows the #7139 (1.22.0, Sep 7) SDK-feature-gating release from two weeks ago. - NymVPN credential-issuer key rotation pre-announcement (Sep 24 blog, "Update NymVPN ahead of an upcoming network upgrade") — Nym is rotating the zk-nym signing keys and refreshing the decentralized set of operators that issue the anonymous credentials. Upgrade is invisible if you're on v2026.12.4 or newer. Older versions may be briefly unable to fetch new credentials, which can interrupt new connections or fresh sign-ins. Exact date not yet announced; user-action is to upgrade now and be ready.
- Katzenpost #1182 (Oct 1, by tirewapped) —
client/thin: read conn under connMu, run windows under -race, move to go 1.26.8. Five places readt.connwithout holdingconnMuwhileDialandredialwrite it under the lock — likely the cause of the intermittentfound pointer to free objectcrash in the Windowsclient/thinjob. Reads oft.conninDial(handshake-timeout path),writeMessage, andreadMessage(two sites) now go through aconnMu.RLock()snapshot. Restores Windows unit-test runs under-race(was dropped, like the other platforms). Go directive bumped 1.26.2 → 1.26.8 somake checkpasses off the CI image. - Katzenpost CI hardening sweep (Sep 27, by ioerror) —
ci: include ci.mk by its own path(GNU make resolvesincludeagainst CWD;make -ffrom anywhere but the repo root couldn't find the file),ci: give every remaining job a target and a config on both other forges, plus adeps: move the go directive to 1.26.8follow-up on Sep 30 — the go-version bump was previewed here before theclient/thinrace fixes in #1182 wrapped the go-version + Windows-race work together. - HOPR #8471 (Oct 1, by jeandemeusy) —
chore: bump hopr-* crates. Stack-wide crate version bump after the Sep 23–25 SURB/PIX cluster. - HOPR #8464 (Oct 1) —
feat(transport): surface return-path relayer-diversity blind spots. The companion metric to #8463's egress-side stalled-sink fix: when a return path is missing or thin, the diagnostic surfaces that explicitly. Co-authored by Claude. - HOPR #8463 (Oct 1) —
fix(transport): time out and evict a stalled write-pump sink to stop egress head-of-line blocking. A stalled write-pump sink can now block egress for new packets behind it — the fix timeouts and evicts the stalled sink so head-of-line blocking ends. Co-authored by Claude. - HOPR #8453 (Oct 1) —
fix(session): count SURB store evictions in the flow estimator. The flow estimator previously missed SURB store evictions; the rate now reflects what's actually happening. - HOPR #8468 (Oct 1) —
chore: replace bug.md with the A2 bug-report issue form. Governance: bug reports now route through the issue form rather than a static template. - HOPR #8313 (Sep 29) —
fix: set HOPR packet payload size to 3248 bytes. The packet-payload size was hard-coded at one value and breaks interop with peers running the new code; fixed by setting the constant explicitly to 3248 bytes (the canonical value the protocol expects). Co-authored by Claude + tolbrino. - HOPR #8460 (Sep 29) —
feat(start)!: extend StartInitiation additional_data to 128 bits. Breaking change: theStartInitiationpayload'sadditional_datais extended from the prior bit-width to 128 bits — the field carries session-advertisement information and was undersized. Co-authored by Claude. - I2P (Sep 9 history.txt) —
i2psnark: Request throttle adjustments. The throttling heuristics that govern i2psnark's BitTorrent-like throughput were tuned. Last i2p.i2p commit was Sep 9; the most recent Java release is 2.13.0 (Jul 20); I2P 2.14.0 is targeted for late October per the I2P roadmap (no movement this period). - Tor network at 9,487 running relays on Oct 2 (onionoo
relays_published: 2026-10-02 00:00:00) — +54 from 9,433 on Sep 25 (+0.6 % over 10 days), continuing the post-EOL recovery that started after 0.4.8 EOL drained the network on Sep 1. +557 since the 9,330 low on Sep 19. - Research scan (Sep 25 – Oct 2) — arXiv 2609.01326 (Sep 1) "Hidden Services Protocol for Mixnets" (NymHS: first practical and secure hidden-service protocol for mixnets built on SURBs; identifies two practical attacks on naive SURB use and develops defenses; implements on open-source Nym codebase, evaluates 118 websites × 27 configurations = 9,558 page loads; increasing Sphinx payload from 2 KiB to 10 KiB reduces mean page-load latency 5.2× and decreases communication overhead from 21.7 % to 4.3 % vs current Nym baseline); arXiv 2609.01075 (Sep 1) "Lacan: Making Accountability in Anonymous Networks Real" (reconciles anonymity and accountability via off-path trustee + chain of successor proofs + traceable signatures + key-committing encryption, reducing public-key operations from per-packet to per-session); PoPETs 2026(4) "Breaking and (Partially) Fixing Onion Routing with Fragmentation" (the "Fragging attack": suppressing single fragments lets a malicious receiver confirm the sender; designed and proved Scylla, a Sphinx-derived mix format with all-or-nothing-transform fragmentation, with same performance characteristics as Sphinx).
Freedom-tech takeaway: This is "the boring part matters — third week" but with a protocol-upgrade payload. The week ships two Tor Browser releases on the same day (16.0a13 + 15.0.24, both Sep 30), one Tails release, the Nym sphinx 0.8.0 protocol upgrade (legacy SURB formats removed, V2-only repliable), the NymVPN credential-issuer key rotation pre-announcement, the Katzenpost Windows race-detector + Go 1.26.8 upgrade, and a HOPR cluster that closes return-path visibility gaps and fixes a stalled-sink head-of-line-blocking bug. The banner story is "protocol-level shaping is consolidating": Tor Browser 16.0a13 flips proxy resolution fast-path off in Gecko (a small default-flip with large consequences for "no proxy" leakage), Nym removes V1 SURB formats from sphinx 0.8.0 (a protocol-level break with backward-compatible config), Nym's threat-model docs finally distinguish direct vs. mixnet destination visibility, HOPR extends StartInitiation additional_data to 128 bits (breaking change), and Katzenpost's client/thin reads t.conn under connMu (race fix). Each is a small change to a number the field already used — but together they sharpen the difference between "the protocol did X last year" and "the protocol does X today." For downstream integrators, this is the week to verify that any code that touches Sphinx SURB-format selection handles the V2-only world cleanly; that any NymVPN client below v2026.12.4 upgrades in time for the credential-issuer key rotation; and that any Windows-side Katzenpost thin client deployment runs against the post-#1182 race-fixed build.
The Week in Detail
Tor Browser 15.0.24 + 16.0a13: Same-Day Stable + Alpha on the New Subkey + Windows Cert Renewal + Proxy Fast-Path Off
Tor Browser shipped two releases on the same day: 15.0.24 stable on Sep 29 (by morgan) and 16.0a13 alpha on Sep 30 (also by morgan). Both bundle Tor 0.4.9.13 + NoScript 13.6.34.90101984 + OpenSSL 3.5.9; the alpha additionally rebases onto Firefox 153.4.0esr and backports Firefox 157 security fixes.
The 16.0a13 changelog (from tor-announce and blog.torproject.org):
Tor Browser 16.0a13 - September 30 2026
* All Platforms
+ Updated NoScript to 13.6.34.90101984
+ Updated Tor to 0.4.9.13
+ Updated OpenSSL to 3.5.9
+ Bug 44815: Disable harmful addon URL blocking [tor-browser]
+ Bug 45073: Review preference changes between Firefox 141 and 153 [tor-browser]
+ Bug 45080: Keep the Reporting API disabled. [tor-browser]
+ Bug 45333: Disable the fast-path to skip proxy resolution [tor-browser]
+ Bug 45359: Rebase alpha onto 153.4.0esr [tor-browser]
+ Bug 45366: Backport Security Fixes from Firefox 157 [tor-browser]
+ Bug 45368: Account for onion aliases in NoScript site parsing [tor-browser]
+ Bug 45371: Hook CharacterData/Range insertion sinks for content patches propagation [tor-browser]
* Windows + macOS + Linux
+ Updated Firefox to 153.4.0esr
+ Bug 45218: Implement YEC 2026 Takeover for Desktop Stable [tor-browser]
+ Bug 45343: Hide verifier and the related error for self-signed onion cert case [tor-browser]
+ Bug 45346: Crash when clicking "Learn more…" in onion site error page [tor-browser]
+ Bug 45360: Port our language preference customization to the new settings design [tor-browser]
* Windows
+ Bug 45293: Set widget.windows.tablet_detection_override to -1 [tor-browser]
* Android
+ Updated GeckoView to 153.4.0esr
+ Bug 40627: [Android] "share" selected text only works once [tor-browser]
+ Bug 44913: Review Mozilla 2019009: Enable Download location Settings on Nightly [tor-browser]
+ Bug 45363: Disable import bookmarks in Android until stable [tor-browser]
* Build System
* All Platforms
+ Bug 45334: Update marionette harness to accept multiple tags [tor-browser]
+ Bug 45367: Backport Bugzilla 2075120: mach lint fails to create the lint virtualenv because rumdl 0.1.91 is no longer available on PyPI [tor-browser]
+ Bug 41847: Sign all releases using new gpg subkey [tor-browser-build]
+ Bug 41890: Update sign-exe wrapper to use new Windows signing cert [tor-browser-build]
+ Bug 41883: Fix sha256sum definition in projects/hfsplus-tools/config [tor-browser-build]
The headline is tor-browser#45333: Disable the fast-path to skip proxy resolution — paired with tor-browser#45336 from last week's 16.0a12 (Pass --disable-proxy-direct-failover in mozconfigs). Together they form a two-pronged default change: Gecko's proxy-resolution fast-path (which could skip proxy resolution under specific conditions) is disabled, AND the direct-fallback on proxy failure is disabled. Both are Gecko-level command-line flags; both flip to "always attempt the SOCKS proxy through failures and through fast-paths." For Tor Browser — where a fast-path that bypasses SOCKS and a direct-fallback on proxy failure are both ways traffic could leave the Tor circuit — this is a hardening pass on the proxy resolution layer itself. The Oct 1 Windows cert renewal (tor-browser-build#41890 + #41883) finally closes the "bad signature" workaround story that has been active since the Sep 1 cert expiry: Windows users installing 16.0a13 from scratch will no longer see the "bad signature" warning; auto-update from a previous version has been unaffected the entire time; the blog from last week telling users to install 16.0a10 and let auto-update bring them up is now obsolete.
The Sep 30 gpg subkey rotation (tor-browser-build#41847) signs all releases with the new key — the alpha-only rotation from 16.0a12 (last week) is now applied to every release channel. Downstream verifiers that pinned the old subkey need to update.
Tor Browser 15.0.24 (Sep 29, by morgan) is the stable counterpart, picking up the 0.4.9.13 + NoScript 13.6.34.90101984 + OpenSSL 3.5.9 stack. The 2-week stable cadence is now in steady-state: 15.0.22 (Sep 9) → 15.0.23 (Sep 15) → 15.0.24 (Sep 29). The gap to Tor Browser 16.x stable continues to compress as the alpha cadence (16.0a10 → 16.0a11 → 16.0a12 → 16.0a13) gets the alpha to the same place the stable is at.
Tails 7.14 (Sep 30): Second Release on the New Cadence
Tails 7.14 released Sep 30 by tails (RM was intrigeri; build images started Sep 29; release scheduled Sep 30 per the Sep 16 release-schedule mail). Second release on the new 2-week cadence (7.12 was Sep 3, 7.13 was Sep 16, 7.14 is Sep 30 — the cadence is exactly 13-14 days).
Changes: - Tor Browser 15.0.24 (the same Sep 29 stable that ships to all platforms). - Tor client 0.4.9.13 (the same Tor version in 16.0a13). - Linux kernel 6.12.111. - Fix the default keyboard input method when starting a session in Korean (tails#21779).
Tails 7.14 picks up the entire Sep 29-30 Tor Browser + Tor release stack the day after it ships — the fastest possible propagation. The "Tails every 13-14 days" cadence is now load-bearing: it means every Tails user is on Tor 0.4.9.13 + Tor Browser 15.0.24 within ~14 days of any upstream Tor release.
Nym sphinx 0.8.0 (PR #7197, merged Oct 1): Legacy SURB Formats Removed
Nym merged #7197 (Oct 1 14:08 UTC) bump sphinx to 0.8.0 by simonwicky. The PR description is two lines and a diff of +41/-532 across 23 files — a large net-removal because the legacy format code paths come out entirely.
Bump sphinx to 0.8.0 Remove support for legacy SURB format Config fields are kept as-is to avoid another migration, it will disappear with LP
The CodeRabbit summary:
Protocol Changes - Packet creation and reply SURBs now use the current payload-key format; legacy format selection is no longer available. - Repliable messages now use V2 content. V1 data, additional-SURB, and heartbeat formats are no longer supported. - Incoming V2 data messages are reconstructed with their reply SURBs forwarded. Additional-SURB and heartbeat messages forward associated SURBs according to their content type, with heartbeat SURBs handled separately from request-originated batches.
The headline is "V2-only repliable": the protocol now speaks only the current payload-key format for repliable messages. Config fields are kept as-is to avoid another migration — the persisted config schema is not changed; the LP (likely "legacy payload" or "legacy protocol") replacement will remove the config field entirely later.
Why this is consequential: any Nym client that spoke V1 SURBs (or used additional-SURB / heartbeat formats) cannot interoperate with post-#7197 nodes. The deployable surface is the v2026.17-djibouti (Sep 2) release, which predates the merge — so the first Nym Binaries release with the V2-only world is the next one after v2026.17-djibouti (the v2026.18 or v2026.19 release). The changelog at https://nym.com/blog/nymvpn-roadmap lists v2026.18 as September 2026 and v2026.19 as October 2026 — so the deployable release is imminent.
Co-deployed with #7191 crates release: bump version to 1.22.1 — the public crates.io version bump that mirrors the in-tree 1.22.1 crates release.
Nym Threat-Model Transport Docs Correction (PR #7192, merged Sep 29): Direct vs. Mixnet Visibility, Finally Explicit
Nym merged #7192 (Sep 29 11:10 UTC) Max/threat model transport corrections by mfahampshire (reviewed by merve64). +63/-17 across 5 files.
Documentation - Threat-model references now distinguish what adversaries cannot observe over direct connections versus when the client uses the mixnet. - Actor descriptions clarify that direct destinations can see the client's IP, while mixnet destinations see the exit gateway's IP. They also explain how mixing and cover traffic limit network observers' visibility into routes, packet correspondence, and communication activity. - The primary adversary is now labeled explicitly.
Why this matters: the previous threat-model docs treated the destination's visibility as a single statement that was technically wrong in two cases — it overclaimed the destination's view over direct connections (the destination sees the client's IP) and it overclaimed the destination's view over mixnet-mode (the destination sees the exit gateway's IP, not the client's). The PR corrects both. The primary adversary is now labeled explicitly — readers no longer have to infer it from context.
For builders integrating Nym, the corrected model is: direct connections leak the client's IP to the destination; mixnet connections leak only the exit gateway's IP to the destination; the network observer sees different information in each mode.
NymVPN Network Upgrade Pre-Announcement (Sep 24 blog): Credential-Issuer Key Rotation
Nym published a blog post on Sep 24 titled "Update NymVPN for an upcoming network upgrade". The headline:
Nym will be rotating that system's signing keys and refreshing the operators who run it. The result is a more robust, more decentralized foundation for the credentials that protect your privacy. For most people this upgrade will be invisible. If you're on the latest version, your connection keeps working throughout the upgrade. Older versions may be briefly unable to fetch new credentials while it happens, which can interrupt new connections or fresh sign-ins.
The action item is update to v2026.12.4 or newer. The exact date is not yet announced ("We will announce the exact date soon. There's nothing to wait for: updating now means you're ready whenever it happens.").
Why this matters: NymVPN v2026.12.6 (Sep 21) was an Android-only fix (prefer Wi-Fi over cellular when binding the cover tunnel, PR #6421). The Sep 24 pre-announcement targets the credential-issuer side of the network, not the client-app side. The credential issuer is the decentralized set of operators that issue zk-nyms through the credential proxy — the anonymous-credentials layer that lets a NymVPN user authenticate without revealing their identity to the network. Rotating the signing keys + refreshing the operator set is a credential-network hygiene event: it limits the blast radius of any single operator compromise and re-randomizes the trust set.
Practical impact: any NymVPN user below v2026.12.4 (the Sept 1 release that fixed pinned-gateway bypass-of-blacklist, and the Sep 17 / 18 / 21 .5 / .6 stack) should upgrade before the announced key rotation date.
Katzenpost #1182 (Oct 1, by tirewapped): client/thin Race Fix + Windows -race + Go 1.26.8
Katzenpost merged #1182 (Oct 1) client/thin: read conn under connMu, run windows under -race, move to go 1.26.8 by tirewapped.
I count five places that read
t.connwithout holdingconnMuwhileDialandredialwrite it under the lock. This is likely the cause of the intermittentfound pointer to free objectcrash in the Windowsclient/thinjob. Also we restore runs of the Windows unit tests to be performed under-racelike every other platform. This also moves the go directive to 1.26.8 somake checkpasses off the CI image and we have 1.26.8 rather than an older version with outstanding issues that (likely) caused the CI to fail.
The five sites are in client/thin/thin.go:
- Dial() — the handshake-timeout path reads t.conn to call SetDeadline on it. Snapshot under connMu.RLock().
- writeMessage(request) — reads t.conn for Write. Snapshot under connMu.RLock().
- readMessage() — two reads (the ReadFull of the 4-byte prefix, then the ReadFull of the message body). Both now snapshot under connMu.RLock().
The pattern is: read t.conn under connMu.RLock(), copy the local conn value, release the lock, operate on the local. This eliminates the data race where a concurrent Dial/redial writes a new value to t.conn while another goroutine is reading the old value (which can produce the "found pointer to free object" symptom if the old value was finalized between the read and the use).
Windows unit tests + -race — the CI workflow now runs Windows unit tests under the race detector like every other platform; previously they ran without -race, which means Windows race regressions could ship undetected.
Go 1.26.2 → 1.26.8 — the module go directive moves forward to 1.26.8 so make check passes against the CI image. The Go 1.26.8 bump is paired with the race-detector work to ensure the codebase is race-free under the newer Go.
Katzenpost CI Hardening Sweep (Sep 27, by ioerror)
Katzenpost shipped a CI-hardening sweep on Sep 27 by ioerror (the same maintainer who landed the Sep 17 / Sep 24 dirauth sweep):
- ci: include ci.mk by its own path — GNU make resolves an include against the working directory; make -f from anywhere but the repo root could not find the file, and any sub-make in a dispatch lost the makefile too.
- ci: give every remaining job a target and a config on both other forges — every CI job now has a target and a config on both non-GitHub forges, so the same job can run on either.
- deps: move the go directive to 1.26.8 (Sep 30) — preview of the Go bump that #1182 (Oct 1) would finalize.
The Sep 27 sweep is the runup to the Sep 30 go-version bump and the Oct 1 #1182 race-fix. The Katzenpost maintainer is converging on a stable CI + race-free baseline before the next release cut.
HOPR Oct 1 Cluster: Stalled-Sink Head-of-Line-Blocking Fix + Return-Path Blind-Spot Diagnostics + Crate Bump + SURB Eviction Counting
HOPR shipped 5 merged PRs on Oct 1 plus the Sep 29 StartInitiation additional_data 128-bit extension breaking change.
#8463 (Oct 1) — fix(transport): time out and evict a stalled write-pump sink to stop egress head-of-line blocking. A stalled write-pump sink can block egress for new packets behind it (head-of-line blocking). The fix timeouts and evicts the stalled sink so head-of-line blocking ends. Co-authored by Claude.
#8464 (Oct 1) — feat(transport): surface return-path relayer-diversity blind spots. The companion metric to #8463's egress-side stalled-sink fix: when a return path is missing or thin, the diagnostic surfaces that explicitly. Co-authored by Claude.
#8453 (Oct 1) — fix(session): count SURB store evictions in the flow estimator. The flow estimator previously missed SURB store evictions; the rate now reflects what's actually happening.
#8471 (Oct 1) — chore: bump hopr-* crates. Stack-wide crate version bump after the Sep 23–25 SURB/PIX cluster.
#8468 (Oct 1) — chore: replace bug.md with the A2 bug-report issue form. Governance: bug reports now route through the issue form rather than a static template.
#8313 (Sep 29) — fix: set HOPR packet payload size to 3248 bytes. The packet-payload size was hard-coded at one value and breaks interop with peers running the new code; fixed by setting the constant explicitly to 3248 bytes (the canonical value the protocol expects). Co-authored by Claude + tolbrino.
#8460 (Sep 29) — feat(start)!: extend StartInitiation additional_data to 128 bits. Breaking change: the StartInitiation payload's additional_data is extended from the prior bit-width to 128 bits — the field carries session-advertisement information and was undersized. The bang (!) in the commit subject signals the breaking-change convention. Co-authored by Claude.
The week's HOPR story: transport-side head-of-line-blocking fix + return-path visibility + breaking protocol-level field-width extension + interop hard-coded payload-size fix. HOPR is converging on a clean 4.x release with stable transport + return-path semantics, before continuing toward PIX/Session performance work.
I2P i2psnark Request-Throttle Adjustments (Sep 9 history.txt)
I2P's most recent Java I2P commit was Sep 9: i2psnark: Request throttle adjustments. The throttling heuristics that govern i2psnark's BitTorrent-like throughput were tuned.
Last full I2P Java release is 2.13.0 (Jul 20); I2P 2.14.0 is targeted for late October per the I2P roadmap. The most recent i2pd release is 2.61.0 (Jul 20). The I2P side is quiet in this period: no new releases, no major changes; the next significant event is the late-October 2.14.0 release.
Tor Network at 9,487 Running Relays (Oct 2, +54 over Sep 25, +557 over the post-EOL Low)
Onionoo (relays_published: 2026-10-02 00:00:00) reports 10,640 relays in consensus, 9,487 currently running. This is +54 from 9,433 on Sep 25 (+0.6 % over 10 days), +557 since the 9,330 low on Sep 19, and continues the post-0.4.8-EOL recovery that started after Sep 1. The network is back above 9,400 and rising.
Bridges published 2026-10-01 23:45:27 with the bridge count not visible from the summary endpoint (the bridge entries are hashed fingerprints, not nicknames). Snowflake volunteer bridge count is not in this snapshot.
Research Scan (Sep 25 – Oct 2)
arXiv 2609.01326 (Sep 1) "Hidden Services Protocol for Mixnets" by Constantinides et al. (Brave NewCoin research via Nym):
Mix networks (mixnets) provide network-level privacy by routing each communication packet through a sequence of intermediaries, called mixnodes, that randomly delay and cryptographically transform packets before forwarding them, making it difficult for observers to link mixnet entries to exits. While this mechanism protects sender privacy from both external adversaries and the receiver, existing mixnets lack a secure and practical protocol that simultaneously protects receiver (destination) privacy, particularly from the sender. We close this gap. We introduce the first practical and secure hidden-service protocol for mixnets, providing receiver privacy alongside sender anonymity. Our design builds on Single-Use Reply Blocks (SURBs), which enable anonymous replies without revealing the receiver's address. We show, however, that existing approaches to using SURBs expose two practical attacks that can compromise sender or receiver anonymity when the opposing party controls only a single mixnode. We develop defenses against both vulnerabilities. Building on these defenses, we introduce NymHS, a secure and practical hidden-service protocol for mixnets that supports anonymous service discovery, authenticated bidirectional sessions, and asynchronous SURB replenishment. We implement NymHS on the open-source Nym codebase and evaluate its practicality through web-browsing experiments across 118 websites, measuring each of the 27 configurations three times (9,558 page loads). Our results demonstrate that hidden services can be deployed efficiently over mixnets. In particular, increasing the Sphinx payload from 2 KiB to 10 KiB reduces mean page-load latency by approximately 5.2x and decreases communication overhead from 21.7 % to 4.3 % relative to the current Nym baseline.
The relevance to Nym's sphinx 0.8.0 upgrade: the paper's headline result is that increasing Sphinx payload from 2 KiB to 10 KiB reduces latency 5.2× and overhead from 21.7 % to 4.3 %. Nym's prior payload size was 2 KiB; the paper's proposed 10 KiB payload is closer to Nym's 0.8.0 direction. The Sphinx 0.8.0 upgrade is potentially the deployable path for the larger-payload result — if Nym adopts 10 KiB Sphinx payloads, the hidden-service protocol from the paper becomes deployable on the open-source Nym codebase.
arXiv 2609.01075 (Sep 1) "Lacan: Making Accountability in Anonymous Networks Real" by Takada, Yoshinaka, Kita, Takemasa, Koizumi, Hasegawa:
Anonymity and accountability are essential properties for our everyday activity on the Internet. However, they appear contradictory, and their reconciliation remains far from reality. Existing approaches fall short in this regard, as they either rely on an on-path trustee, per-packet authorization, per-packet public-key cryptography, or per-session intervention by a central authority. We propose Lacan, a protocol that reconciles anonymity and accountability within a realistic design. In Lacan, a sender enjoys anonymity provided by on-path relays, as long as she complies with a contract established with the receiver. Upon a contract violation, the verifier, an off-path trustee on behalf of the receiver, links the malicious message to the sender's identity indirectly via the packet, path, and session, thereby reducing public-key operations from per-packet to per-session.
PoPETs 2026(4) "Breaking and (Partially) Fixing Onion Routing with Fragmentation" — the "Fragging attack":
Mix networks are a cornerstone of anonymous communication, protecting users' relationships by relaying their messages through a series of mix nodes. To accommodate large payloads, deployed systems rely on message fragmentation, but this seemingly benign feature unwittingly opens a subtle door for adversaries. In this paper, we show that fragmentation enables adversaries to tag messages by suppressing single fragments and thereby break sender-recipient unlinkability, striking at the core privacy guarantee of mix networks. We demonstrate the practicality of this attack on Nym, a real-world deployed mix network. To address this threat, we design a lightweight mitigation that incurs only little overhead in both packet size and processing time. We provide a formal model of fragmentation in mix networks and prove that our mitigation restores unlinkability in this model.
The paper's mitigation is Scylla, a Sphinx-derived mix format with all-or-nothing-transform fragmentation that ensures all fragments arrive before revealing the recipient or the message. Same performance characteristics as Sphinx; same-fragment drop losses turn from privacy leakage to DoS. Direct Nym relevance: Nym uses Sphinx fragmentation to handle multi-M messages, and the "Fragging attack" lets a malicious Nym server drop single fragments to confirm sender-receiver pairings.