summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md310
-rw-r--r--maint/exclude_contributors.txt5
2 files changed, 313 insertions, 2 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 698dc67da..cc3210085 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,313 @@
This file describes changes in Arti through the current release. Once Arti
is more mature, we may switch to using a separate changelog for each crate.
+# Arti 1.2.8 — 1 October 2024
+
+Arti 1.2.8 continues development on onion services,
+the RPC subsystem, key management, and relay infrastructure.
+It also includes fixes for two security issues in
+handling the SOCKS protocol, the most severe of which is rated at
+"medium" according to our [security policy].
+
+Arti 1.2.8 also increases our MSRV (Minimum Supported Rust Version)
+to 1.77, in accordance with our [MSRV policy].
+
+### Breaking changes
+
+- Arti now requires Rust 1.77 or later. ([!2421], [!2451])
+- The `arti hsc` subcommand is now gated behind the experimental `hsc`
+ feature until it is ready for general use. ([ab41a9d330ed1db])
+
+### Security fixes
+
+- Temporarily reject attempts to send optimistic data before
+ the SOCKS handshake is complete.
+ Previously, we would discard data in this case,
+ which has the potential to cause mis-framing bugs that could enable
+ cross-protocol attacks under some circumstances.
+ This is tracked as TROVE-2024-010.
+ We intend to add full support for optimistic data soon;
+ this is a temporary workaround.
+ ([#1627], [!2443])
+- Prevent an infinite loop that could occur in our SOCKS code
+ if a local connection was closed at the wrong time.
+ This is tracked as TROVE-2024-011.
+ ([#1635], [!2447])
+
+### Breaking changes in lower-level crates
+
+- The `tor-bytes` crate now reports `Incomplete` rather than `Truncated`
+ for most reader types. ([#1614], [!2407])
+- Removed some deprecated code in `tor-hsservice`. ([7a838da0ff2359f9])
+- The "ephemeral keystore" feature in `tor-keymgr` is now marked as
+ experimental, and available behind an `ephemeral-keystore` feature.
+ ([!2426])
+- The `tor-rtcompat` crate now supports AF_UNIX sockets,
+ and provides a more generic API
+ for opening and listening for network streams.
+ To this end, several of its APIs have been renamed or refactored,
+ and the `Runtime` trait now depends on more supertraits.
+ ([#1152], [!2437])
+- In `tor-rtcompat`, `TcpListener::accept()` no longer exists.
+ Use `NetStreamListener::incoming()` instead.
+ ([168f55df05f4b56f])
+- In `arti-client`, the type for `StorageConfig::keystore` has changed.
+ ([5e4e7b69b8cd2791])
+- In `tor-circmgr`, the function `CircMgr::new` now returns a `CircMgr` rather than an
+ `Arc<CircMgr>`.
+ ([!2420])
+- In `tor-hsservice`, numerous types related to initialization and status
+ have been renamed or refactored.
+ ([!2397], [!2413])
+- In `tor-keymgr`, several types have been renamed.
+ ([5e4e7b69b8cd279], [80095da1aa47978])
+- In `tor-netdir`, several test-network construction callbacks
+ now take an extra parameter.
+ ([b2b75302ab095bc])
+
+### Onion service development
+
+- Remove the number of cases in which an onion service needs to know
+ its secret identity key `KS_hs_id`.
+ This will help with implementing offline key support.
+ ([#1194], [!2393])
+- Add support for adding externally generated keys;
+ this will also help with offline key support.
+ ([#1613], [!2396])
+- Report onion service status correctly based on upload results.
+ This includes major refactoring to onion service status reporting,
+ and significant tests.
+ ([#1572], [!2397])
+- Remove setting for non-anonymous ("single onion") services.
+ We don't actually support them yet.
+ ([!2413])
+- Defer generating service identity keys (`K_hs_id`)
+ until the service is actually launched.
+ This allows tools like `onion-name` to check whether these keys are present.
+ ([!2417])
+- The `arti hss onion-name` subcommand now has support for generating
+ identity keys on demand. ([#1621], [!2419])
+- Experimental support for launching onion service with user-provided
+ identity keys. ([#1612], [!2402])
+- Allow arti to run with onion services only, and SOCKS/DNS ports disabled.
+ ([#1569], [!2423])
+- Move onion service client key management functionality
+ into a new `arti hsc key` sub-command,
+ which supports key inspection, rotation, and deletion.
+ The old `arti hsc get-key` subcommand is now deprecated.
+ ([#1475], [!2432], [!2435])
+- Support making an `InertTorClient` with an emphemeral key manager.
+ ([#1610], [!2394])
+- The "default" keystore has been renamed to "primary".
+ ([!2438])
+
+### Relay development
+
+- Give `TorRelay` an instance of `ChanMgr` to keep track of open channels.
+ ([!2361])
+- Continued development on memory-quota support,
+ to prevent memory-based denial-of-service attacks
+ against relays and onion services. ([!2374], [!2404])
+- New `tor-key-forge` crate
+ for defining specific key and keypair wrappers,
+ for use with relay keys.
+ ([#1137], [#1619], [!2356], [!2430], [!2433])
+- Define a set of high-level error wrappers for use by the `TorRelay` code.
+ ([!2392])
+- The channel manager now has (partial) support for receiving and handling
+ incoming channels. ([!2389])
+- Initial key generation and management support for relays.
+ ([#1604], [!2411])
+- Move Arti's (in-progress) `relay` subcommand to its own module. ([!2455)
+
+### RPC development
+
+- Add support throughout the RPC stack
+ for opening data streams and registering them with the RPC system,
+ using the protocol developed in [proposal 351].
+ ([#1524], [!2373], [!2401], [!2406], [!2409], [!2434], [!2452])
+- Update RPC specification draft to match current reality and plans.
+ ([!2386], [!2453])
+- Refactor the way that the RPC service handles errors,
+ to ensure that framing errors are never silently tolerated,
+ and other errors are handled uniformly.
+ ([#1591], [!2400])
+- Expose a list of object delegation types,
+ to make it possible to generate full documentation
+ of which objects support which methods.
+ ([#1624], [!2418])
+- Add a (work-in-progress! unstable! experimental!) Python wrapper
+ for our similarly unstable RPC client library.
+ ([!2446])
+
+### Testing
+
+- Partially fix test nondeterminism in the `reload_cfg::watch_single_file` test.
+ ([#1549], [!2375], [!2391])
+- Improve performance for the `reload_cfg::watch_multiple` test.
+ ([#1589], [!2387])
+- [Chutney] network integration tests are now
+ run inside the [Shadow] discrete event simulator.
+ ([!2427])
+
+### Documentation
+
+- Typo fixes in our documentation. ([!2403])
+- Improved documentation for onion service descriptor publication.
+ ([#1216], [b87b9f44ae05d4f0])
+- Clean up documentation for `InertTorClient`. ([!2414])
+- Clarify behavior of `ArtiEphemeralKeystore`. ([!2424])
+- New example: running an axum router as an onion service.
+ ([!2445])
+- Add an example for an onion service's `reject` option to our
+ sample configuration ([!2458])
+
+### Infrastructure
+
+- Clean-ups to CI jobs that generate debian packages.
+ ([!2368])
+- Adjust exceptions for `downgrade-dependencies` script.
+ ([!2398], [!2451], [cf7f25851ac0319f])
+
+### Cleanups, minor features, and bugfixes
+
+- Move Arti's `proxy` subcommand to its own module. ([!2416])
+- Clean up needless abstraction, and add smarter abstraction,
+ to make `tor-circmgr` easier to test.
+ ([!2412], [!2420])
+- When encountering truncated data, the `tor-bytes` crates now
+ gives a lower-bound estimate for how much more data would be needed
+ in order produce a successful parse. ([!2390])
+- The `tor-bytes` crate now tracks whether its inputs are possibly
+ incomplete, and only reports "Truncated" data as a recoverable error
+ on a possibly incomplete data.
+ This helps to prevent a category of bug
+ (which it appears our code doesn't actually have)
+ where we might erroneously
+ keep reading more data without limit.
+ ([#1614], [!2407])
+- Fix a bug in our SOCKS handling
+ that would cause us to exceed the bounds of a buffer,
+ causing the SOCKS task to exit with a panic.
+ ([dceeb82f7d115489])
+- Upgrade to the latest versions of `float-cmp` and `derive-more`.
+ ([!2450])
+- Keystore configuration options have been significantly revised;
+ there is now a `keystore.primary.kind` option
+ to configure the primary keystore.
+ ([!2441])
+
+### Acknowledgments
+
+Thanks to everybody who's contributed to this release, including
+Adam Joseph, Alexander Hansen Færøy, Anonym, Morgan,
+Pier Angelo Vendrame, Steven Engler, tidely, and Wesley Aptekar-Cassels.
+Also, our welcome to Wesley Aptekar-Cassels as they join the team!
+
+Also, our deep thanks to
+[Zcash Community Grants],
+the [Bureau of Democracy, Human Rights and Labor],
+and our [other sponsors]
+for funding the development of Arti!
+
+[!2356]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2356
+[!2361]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2361
+[!2368]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2368
+[!2373]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2373
+[!2374]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2374
+[!2375]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2375
+[!2386]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2386
+[!2387]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2387
+[!2389]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2389
+[!2390]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2390
+[!2391]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2391
+[!2392]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2392
+[!2393]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2393
+[!2394]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2394
+[!2396]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2396
+[!2397]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2397
+[!2398]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2398
+[!2400]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2400
+[!2401]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2401
+[!2402]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2402
+[!2403]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2403
+[!2404]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2404
+[!2406]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2406
+[!2407]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2407
+[!2409]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2409
+[!2411]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2411
+[!2412]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2412
+[!2413]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2413
+[!2414]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2414
+[!2416]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2416
+[!2417]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2417
+[!2418]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2418
+[!2419]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2419
+[!2420]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2420
+[!2421]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2421
+[!2423]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2423
+[!2424]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2424
+[!2426]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2426
+[!2427]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2427
+[!2430]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2430
+[!2432]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2432
+[!2433]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2433
+[!2434]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2434
+[!2435]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2435
+[!2437]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2437
+[!2438]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2438
+[!2441]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2441
+[!2443]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2443
+[!2445]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2445
+[!2446]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2446
+[!2447]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2447
+[!2450]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2450
+[!2451]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2451
+[!2452]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2452
+[!2453]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2453
+[!2458]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2458
+[#1137]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1137
+[#1152]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1152
+[#1194]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1194
+[#1216]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1216
+[#1475]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1475
+[#1524]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1524
+[#1549]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1549
+[#1569]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1569
+[#1572]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1572
+[#1589]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1589
+[#1591]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1591
+[#1604]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1604
+[#1610]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1610
+[#1612]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1612
+[#1613]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1613
+[#1614]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1614
+[#1619]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1619
+[#1621]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1621
+[#1624]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1624
+[#1627]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1627
+[#1635]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1635
+[168f55df05f4b56f]: https://gitlab.torproject.org/tpo/core/arti/-/commit/168f55df05f4b56fd61423c020ce62e93f1d7a9f
+[5e4e7b69b8cd2791]: https://gitlab.torproject.org/tpo/core/arti/-/commit/5e4e7b69b8cd2791763559cb0563dc60c8a66ce2
+[5e4e7b69b8cd279]: https://gitlab.torproject.org/tpo/core/arti/-/commit/5e4e7b69b8cd2791763559cb0563dc60c8a66ce2
+[7a838da0ff2359f9]: https://gitlab.torproject.org/tpo/core/arti/-/commit/7a838da0ff2359f9b1eacbf24d9be9b8b88d5302
+[80095da1aa47978]: https://gitlab.torproject.org/tpo/core/arti/-/commit/80095da1aa47978cdba26c2b3d254a99c075cf53
+[Bureau of Democracy, Human Rights and Labor]: https://www.state.gov/bureaus-offices/under-secretary-for-civilian-security-democracy-and-human-rights/bureau-of-democracy-human-rights-and-labor/
+[Chutney]: https://gitlab.torproject.org/tpo/core/chutney
+[MSRV policy]: https://gitlab.torproject.org/tpo/core/arti/#minimum-supported-rust-version
+[Shadow]: https://shadow.github.io
+[Zcash Community Grants]: https://zcashcommunitygrants.org/
+[ab41a9d330ed1db]: https://gitlab.torproject.org/tpo/core/arti/-/commit/ab41a9d330ed1dbd506c8de8b5e331908ed78b97
+[b2b75302ab095bc]: https://gitlab.torproject.org/tpo/core/arti/-/commit/b2b75302ab095bccdc7ccecb627e4648a3ae9419
+[b87b9f44ae05d4f0]: https://gitlab.torproject.org/tpo/core/arti/-/commit/b87b9f44ae05d4f033e8b5e9a45684543ca2f323
+[cf7f25851ac0319f]: https://gitlab.torproject.org/tpo/core/arti/-/commit/cf7f25851ac0319fbb784a94050a715883989e0a
+[dceeb82f7d115489]: https://gitlab.torproject.org/tpo/core/arti/-/commit/dceeb82f7d1154894ab9c7c607d68f8335bb9615
+[other sponsors]: https://www.torproject.org/about/sponsors/
+[proposal 351]: https://spec.torproject.org/proposals/351-socks-auth-extensions.html
+[security policy]: https://gitlab.torproject.org/tpo/core/team/-/wikis/NetworkTeam/SecurityPolicy
+
+
+
# Arti 1.2.7 — 3 September 2024
Arti 1.2.7 continues development on onion service client authorization,
@@ -1509,7 +1816,7 @@ See [`doc/OnionService.md`] for instructions and caveats.
- Do not output ANSI escape codes when logging to file. ([!1999], [#1298])
- Upgrade our dependency on [curve25519-dalek] from 4.1.1 to 4.1.2 ([!2000])
- Upgrade to the latest versions of [event-listener], [rusqlite],
- [async-broadcast], [signature], [config]. ([!2001], [!2004])
+ [async-broadcast], [signature], [config]. ([!2001], [!2004], [!2451])
- Fix `ArtiPath` creation on Windows. ([!2012])
- Fix compilation and warnings on Windows. ([!2014], [!2009])
- Gate `RpcConfig` behind `rpc` feature. ([6c9e70e39ab279aa]])
@@ -1564,6 +1871,7 @@ for funding the development of Arti!
[!2014]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2014
[!2015]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2015
[!2016]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2016
+[!2451]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2451
[#1083]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1083
[#1100]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1100
[#1115]: https://gitlab.torproject.org/tpo/core/arti/-/issues/1115
diff --git a/maint/exclude_contributors.txt b/maint/exclude_contributors.txt
index 8e4855ac6..db0cc6948 100644
--- a/maint/exclude_contributors.txt
+++ b/maint/exclude_contributors.txt
@@ -2,8 +2,8 @@
#1 Include employees and contractors of the Tor Project here.
#2 WARNING: This file MUST be sorted.
Alexander Færøy
+Alexander Hansen Færøy
David Goulet
-eta
Gaba
gabi-250
Gabi Moldovan
@@ -11,4 +11,7 @@ Gabriela Moldovan
Ian Jackson
Jim Newsome
Nick Mathewson
+opara
+Steven Engler
Tor CI Release
+Wesley Aptekar-Cassels