|
@@ -2,6 +2,732 @@ This document summarizes new features and bugfixes in each stable
|
|
|
release of Tor. If you want to see more detailed descriptions of the
|
|
|
changes in each development snapshot, see the ChangeLog file.
|
|
|
|
|
|
+Changes in version 0.3.5.7 - 2019-01-07
|
|
|
+ Tor 0.3.5.7 is the first stable release in its series; it includes
|
|
|
+ compilation and portability fixes, and a fix for a severe problem
|
|
|
+ affecting directory caches.
|
|
|
+
|
|
|
+ The Tor 0.3.5 series includes several new features and performance
|
|
|
+ improvements, including client authorization for v3 onion services,
|
|
|
+ cleanups to bootstrap reporting, support for improved bandwidth-
|
|
|
+ measurement tools, experimental support for NSS in place of OpenSSL,
|
|
|
+ and much more. It also begins a full reorganization of Tor's code
|
|
|
+ layout, for improved modularity and maintainability in the future.
|
|
|
+ Finally, there is the usual set of performance improvements and
|
|
|
+ bugfixes that we try to do in every release series.
|
|
|
+
|
|
|
+ There are a couple of changes in the 0.3.5 that may affect
|
|
|
+ compatibility. First, the default version for newly created onion
|
|
|
+ services is now v3. Use the HiddenServiceVersion option if you want to
|
|
|
+ override this. Second, some log messages related to bootstrapping have
|
|
|
+ changed; if you use stem, you may need to update to the latest version
|
|
|
+ so it will recognize them.
|
|
|
+
|
|
|
+ We have designated 0.3.5 as a "long-term support" (LTS) series: we
|
|
|
+ will continue to patch major bugs in typical configurations of 0.3.5
|
|
|
+ until at least 1 Feb 2022. (We do not plan to provide long-term
|
|
|
+ support for embedding, Rust support, NSS support, running a directory
|
|
|
+ authority, or unsupported platforms. For these, you will need to stick
|
|
|
+ with the latest stable release.)
|
|
|
+
|
|
|
+ Below are the changes since 0.3.4.9. For a complete list of changes
|
|
|
+ since 0.3.5.6-rc, see the ChangeLog file.
|
|
|
+
|
|
|
+ o Major features (bootstrap):
|
|
|
+ - Don't report directory progress until after a connection to a
|
|
|
+ relay or bridge has succeeded. Previously, we'd report 80%
|
|
|
+ progress based on cached directory information when we couldn't
|
|
|
+ even connect to the network. Closes ticket 27169.
|
|
|
+
|
|
|
+ o Major features (new code layout):
|
|
|
+ - Nearly all of Tor's source code has been moved around into more
|
|
|
+ logical places. The "common" directory is now divided into a set
|
|
|
+ of libraries in "lib", and files in the "or" directory have been
|
|
|
+ split into "core" (logic absolutely needed for onion routing),
|
|
|
+ "feature" (independent modules in Tor), and "app" (to configure
|
|
|
+ and invoke the rest of Tor). See doc/HACKING/CodeStructure.md for
|
|
|
+ more information. Closes ticket 26481.
|
|
|
+
|
|
|
+ This refactoring is not complete: although the libraries have been
|
|
|
+ refactored to be acyclic, the main body of Tor is still too
|
|
|
+ interconnected. We will attempt to improve this in the future.
|
|
|
+
|
|
|
+ o Major features (onion services v3):
|
|
|
+ - Implement onion service client authorization at the descriptor
|
|
|
+ level: only authorized clients can decrypt a service's descriptor
|
|
|
+ to find out how to contact it. A new torrc option was added to
|
|
|
+ control this client side: ClientOnionAuthDir <path>. On the
|
|
|
+ service side, if the "authorized_clients/" directory exists in the
|
|
|
+ onion service directory path, client configurations are read from
|
|
|
+ the files within. See the manpage for more details. Closes ticket
|
|
|
+ 27547. Patch done by Suphanat Chunhapanya (haxxpop).
|
|
|
+ - Improve revision counter generation in next-gen onion services.
|
|
|
+ Onion services can now scale by hosting multiple instances on
|
|
|
+ different hosts without synchronization between them, which was
|
|
|
+ previously impossible because descriptors would get rejected by
|
|
|
+ HSDirs. Addresses ticket 25552.
|
|
|
+ - Version 3 onion services can now use the per-service
|
|
|
+ HiddenServiceExportCircuitID option to differentiate client
|
|
|
+ circuits. It communicates with the service by using the HAProxy
|
|
|
+ protocol to assign virtual IP addresses to inbound client
|
|
|
+ circuits. Closes ticket 4700. Patch by Mahrud Sayrafi.
|
|
|
+
|
|
|
+ o Major features (onion services, UI change):
|
|
|
+ - For a newly created onion service, the default version is now 3.
|
|
|
+ Tor still supports existing version 2 services, but the operator
|
|
|
+ now needs to set "HiddenServiceVersion 2" in order to create a new
|
|
|
+ version 2 service. For existing services, Tor now learns the
|
|
|
+ version by reading the key file. Closes ticket 27215.
|
|
|
+
|
|
|
+ o Major features (portability, cryptography, experimental, TLS):
|
|
|
+ - Tor now has the option to compile with the NSS library instead of
|
|
|
+ OpenSSL. This feature is experimental, and we expect that bugs may
|
|
|
+ remain. It is mainly intended for environments where Tor's
|
|
|
+ performance is not CPU-bound, and where NSS is already known to be
|
|
|
+ installed. To try it out, configure Tor with the --enable-nss
|
|
|
+ flag. Closes tickets 26631, 26815, and 26816.
|
|
|
+
|
|
|
+ If you are experimenting with this option and using an old cached
|
|
|
+ consensus, Tor may fail to start. To solve this, delete your
|
|
|
+ "cached-consensus" and "cached-microdesc-consensus" files,
|
|
|
+ (if present), and restart Tor.
|
|
|
+
|
|
|
+ o Major features (relay, UI change):
|
|
|
+ - Relays no longer run as exits by default. If the "ExitRelay"
|
|
|
+ option is auto (or unset), and no exit policy is specified with
|
|
|
+ ExitPolicy or ReducedExitPolicy, we now treat ExitRelay as 0.
|
|
|
+ Previously in this case, we allowed exit traffic and logged a
|
|
|
+ warning message. Closes ticket 21530. Patch by Neel Chauhan.
|
|
|
+ - Tor now validates that the ContactInfo config option is valid UTF-
|
|
|
+ 8 when parsing torrc. Closes ticket 27428.
|
|
|
+
|
|
|
+ o Major bugfixes (compilation):
|
|
|
+ - Fix compilation on ARM (and other less-used CPUs) when compiling
|
|
|
+ with OpenSSL before 1.1. Fixes bug 27781; bugfix on 0.3.4.1-alpha.
|
|
|
+
|
|
|
+ o Major bugfixes (compilation, rust):
|
|
|
+ - Rust tests can now build and run successfully with the
|
|
|
+ --enable-fragile-hardening option enabled. Doing this currently
|
|
|
+ requires the rust beta channel; it will be possible with stable
|
|
|
+ rust once Rust version 1.31 is released. Patch from Alex Crichton.
|
|
|
+ Fixes bugs 27272, 27273, and 27274. Bugfix on 0.3.1.1-alpha.
|
|
|
+
|
|
|
+ o Major bugfixes (directory authority):
|
|
|
+ - Actually check that the address we get from DirAuthority
|
|
|
+ configuration line is valid IPv4. Explicitly disallow DirAuthority
|
|
|
+ address to be a DNS hostname. Fixes bug 26488; bugfix
|
|
|
+ on 0.1.2.10-rc.
|
|
|
+
|
|
|
+ o Major bugfixes (embedding, main loop):
|
|
|
+ - When DisableNetwork becomes set, actually disable periodic events
|
|
|
+ that are already enabled. (Previously, we would refrain from
|
|
|
+ enabling new ones, but we would leave the old ones turned on.)
|
|
|
+ Fixes bug 28348; bugfix on 0.3.4.1-alpha.
|
|
|
+
|
|
|
+ o Major bugfixes (main loop, bootstrap):
|
|
|
+ - Make sure Tor bootstraps and works properly if only the
|
|
|
+ ControlPort is set. Prior to this fix, Tor would only bootstrap
|
|
|
+ when a client port was set (Socks, Trans, NATD, DNS or HTTPTunnel
|
|
|
+ port). Fixes bug 27849; bugfix on 0.3.4.1-alpha.
|
|
|
+
|
|
|
+ o Major bugfixes (OpenSSL, portability):
|
|
|
+ - Fix our usage of named groups when running as a TLS 1.3 client in
|
|
|
+ OpenSSL 1.1.1. Previously, we only initialized EC groups when
|
|
|
+ running as a relay, which caused clients to fail to negotiate TLS
|
|
|
+ 1.3 with relays. Fixes bug 28245; bugfix on 0.2.9.15 (when TLS 1.3
|
|
|
+ support was added).
|
|
|
+
|
|
|
+ o Major bugfixes (relay bandwidth statistics):
|
|
|
+ - When we close relayed circuits, report the data in the circuit
|
|
|
+ queues as being written in our relay bandwidth stats. This
|
|
|
+ mitigates guard discovery and other attacks that close circuits
|
|
|
+ for the explicit purpose of noticing this discrepancy in
|
|
|
+ statistics. Fixes bug 23512; bugfix on 0.0.8pre3.
|
|
|
+
|
|
|
+ o Major bugfixes (relay):
|
|
|
+ - When our write bandwidth limit is exhausted, stop writing on the
|
|
|
+ connection. Previously, we had a typo in the code that would make
|
|
|
+ us stop reading instead, leading to relay connections being stuck
|
|
|
+ indefinitely and consuming kernel RAM. Fixes bug 28089; bugfix
|
|
|
+ on 0.3.4.1-alpha.
|
|
|
+ - Always reactivate linked connections in the main loop so long as
|
|
|
+ any linked connection has been active. Previously, connections
|
|
|
+ serving directory information wouldn't get reactivated after the
|
|
|
+ first chunk of data was sent (usually 32KB), which would prevent
|
|
|
+ clients from bootstrapping. Fixes bug 28912; bugfix on
|
|
|
+ 0.3.4.1-alpha. Patch by "cypherpunks3".
|
|
|
+
|
|
|
+ o Major bugfixes (restart-in-process):
|
|
|
+ - Fix a use-after-free error that could be caused by passing Tor an
|
|
|
+ impossible set of options that would fail during options_act().
|
|
|
+ Fixes bug 27708; bugfix on 0.3.3.1-alpha.
|
|
|
+
|
|
|
+ o Minor features (admin tools):
|
|
|
+ - Add a new --key-expiration option to print the expiration date of
|
|
|
+ the signing cert in an ed25519_signing_cert file. Resolves
|
|
|
+ issue 19506.
|
|
|
+
|
|
|
+ o Minor features (build):
|
|
|
+ - If you pass the "--enable-pic" option to configure, Tor will try
|
|
|
+ to tell the compiler to build position-independent code suitable
|
|
|
+ to link into a dynamic library. (The default remains -fPIE, for
|
|
|
+ code suitable for a relocatable executable.) Closes ticket 23846.
|
|
|
+
|
|
|
+ o Minor features (code correctness, testing):
|
|
|
+ - Tor's build process now includes a "check-includes" make target to
|
|
|
+ verify that no module of Tor relies on any headers from a higher-
|
|
|
+ level module. We hope to use this feature over time to help
|
|
|
+ refactor our codebase. Closes ticket 26447.
|
|
|
+
|
|
|
+ o Minor features (code layout):
|
|
|
+ - We have a new "lowest-level" error-handling API for use by code
|
|
|
+ invoked from within the logging module. With this interface, the
|
|
|
+ logging code is no longer at risk of calling into itself if a
|
|
|
+ failure occurs while it is trying to log something. Closes
|
|
|
+ ticket 26427.
|
|
|
+
|
|
|
+ o Minor features (compilation):
|
|
|
+ - When possible, place our warning flags in a separate file, to
|
|
|
+ avoid flooding verbose build logs. Closes ticket 28924.
|
|
|
+ - Tor's configure script now supports a --with-malloc= option to
|
|
|
+ select your malloc implementation. Supported options are
|
|
|
+ "tcmalloc", "jemalloc", "openbsd" (deprecated), and "system" (the
|
|
|
+ default). Addresses part of ticket 20424. Based on a patch from
|
|
|
+ Alex Xu.
|
|
|
+
|
|
|
+ o Minor features (config):
|
|
|
+ - The "auto" keyword in torrc is now case-insensitive. Closes
|
|
|
+ ticket 26663.
|
|
|
+
|
|
|
+ o Minor features (continuous integration):
|
|
|
+ - Add a Travis CI build for --enable-nss on Linux gcc. Closes
|
|
|
+ ticket 27751.
|
|
|
+ - Add new CI job to Travis configuration to run stem-based
|
|
|
+ integration tests. Closes ticket 27913.
|
|
|
+ - Use the Travis Homebrew addon to install packages on macOS during
|
|
|
+ Travis CI. The package list is the same, but the Homebrew addon
|
|
|
+ does not do a `brew update` by default. Implements ticket 27738.
|
|
|
+ - Report what program produced the mysterious core file that we
|
|
|
+ occasionally see on Travis CI during make distcheck. Closes
|
|
|
+ ticket 28024.
|
|
|
+ - Don't do a distcheck with --disable-module-dirauth in Travis.
|
|
|
+ Implements ticket 27252.
|
|
|
+ - Install libcap-dev and libseccomp2-dev so these optional
|
|
|
+ dependencies get tested on Travis CI. Closes ticket 26560.
|
|
|
+ - Only run one online rust build in Travis, to reduce network
|
|
|
+ errors. Skip offline rust builds on Travis for Linux gcc, because
|
|
|
+ they're redundant. Implements ticket 27252.
|
|
|
+ - Skip gcc on OSX in Travis CI, because it's rarely used. Skip a
|
|
|
+ duplicate hardening-off build in Travis on Tor 0.2.9. Skip gcc on
|
|
|
+ Linux with default settings, because all the non-default builds
|
|
|
+ use gcc on Linux. Implements ticket 27252.
|
|
|
+
|
|
|
+ o Minor features (continuous integration, Windows):
|
|
|
+ - Always show the configure and test logs, and upload them as build
|
|
|
+ artifacts, when building for Windows using Appveyor CI.
|
|
|
+ Implements 28459.
|
|
|
+ - Build tor on Windows Server 2012 R2 and Windows Server 2016 using
|
|
|
+ Appveyor's CI. Closes ticket 28318.
|
|
|
+
|
|
|
+ o Minor features (controller):
|
|
|
+ - Emit CIRC_BW events as soon as we detect that we processed an
|
|
|
+ invalid or otherwise dropped cell on a circuit. This allows
|
|
|
+ vanguards and other controllers to react more quickly to dropped
|
|
|
+ cells. Closes ticket 27678.
|
|
|
+ - For purposes of CIRC_BW-based dropped cell detection, track half-
|
|
|
+ closed stream ids, and allow their ENDs, SENDMEs, DATA and path
|
|
|
+ bias check cells to arrive without counting it as dropped until
|
|
|
+ either the END arrives, or the windows are empty. Closes
|
|
|
+ ticket 25573.
|
|
|
+ - Implement a 'GETINFO md/all' controller command to enable getting
|
|
|
+ all known microdescriptors. Closes ticket 8323.
|
|
|
+ - The GETINFO command now support an "uptime" argument, to return
|
|
|
+ Tor's uptime in seconds. Closes ticket 25132.
|
|
|
+
|
|
|
+ o Minor features (denial-of-service avoidance):
|
|
|
+ - Make our OOM handler aware of the DNS cache so that it doesn't
|
|
|
+ fill up the memory. This check is important for our DoS mitigation
|
|
|
+ subsystem. Closes ticket 18642. Patch by Neel Chauhan.
|
|
|
+
|
|
|
+ o Minor features (development):
|
|
|
+ - Tor's makefile now supports running the "clippy" Rust style tool
|
|
|
+ on our Rust code. Closes ticket 22156.
|
|
|
+
|
|
|
+ o Minor features (directory authority):
|
|
|
+ - There is no longer an artificial upper limit on the length of
|
|
|
+ bandwidth lines. Closes ticket 26223.
|
|
|
+ - When a bandwidth file is used to obtain the bandwidth measurements,
|
|
|
+ include this bandwidth file headers in the votes. Closes
|
|
|
+ ticket 3723.
|
|
|
+ - Improved support for networks with only a single authority or a
|
|
|
+ single fallback directory. Patch from Gabriel Somlo. Closes
|
|
|
+ ticket 25928.
|
|
|
+
|
|
|
+ o Minor features (embedding API):
|
|
|
+ - The Tor controller API now supports a function to launch Tor with
|
|
|
+ a preconstructed owning controller FD, so that embedding
|
|
|
+ applications don't need to manage controller ports and
|
|
|
+ authentication. Closes ticket 24204.
|
|
|
+ - The Tor controller API now has a function that returns the name
|
|
|
+ and version of the backend implementing the API. Closes
|
|
|
+ ticket 26947.
|
|
|
+
|
|
|
+ o Minor features (fallback directory list):
|
|
|
+ - Replace the 150 fallbacks originally introduced in Tor
|
|
|
+ 0.3.3.1-alpha in January 2018 (of which ~115 were still
|
|
|
+ functional), with a list of 157 fallbacks (92 new, 65 existing, 85
|
|
|
+ removed) generated in December 2018. Closes ticket 24803.
|
|
|
+
|
|
|
+ o Minor features (geoip):
|
|
|
+ - Update geoip and geoip6 to the January 3 2019 Maxmind GeoLite2
|
|
|
+ Country database. Closes ticket 29012.
|
|
|
+
|
|
|
+ o Minor features (memory management):
|
|
|
+ - Get Libevent to use the same memory allocator as Tor, by calling
|
|
|
+ event_set_mem_functions() during initialization. Resolves
|
|
|
+ ticket 8415.
|
|
|
+
|
|
|
+ o Minor features (memory usage):
|
|
|
+ - When not using them, store legacy TAP public onion keys in DER-
|
|
|
+ encoded format, rather than as expanded public keys. This should
|
|
|
+ save several megabytes on typical clients. Closes ticket 27246.
|
|
|
+
|
|
|
+ o Minor features (OpenSSL bug workaround):
|
|
|
+ - Work around a bug in OpenSSL 1.1.1a, which prevented the TLS 1.3
|
|
|
+ key export function from handling long labels. When this bug is
|
|
|
+ detected, Tor will disable TLS 1.3. We recommend upgrading to a
|
|
|
+ version of OpenSSL without this bug when it becomes available.
|
|
|
+ Closes ticket 28973.
|
|
|
+
|
|
|
+ o Minor features (OpenSSL):
|
|
|
+ - When possible, use RFC5869 HKDF implementation from OpenSSL rather
|
|
|
+ than our own. Resolves ticket 19979.
|
|
|
+
|
|
|
+ o Minor features (performance):
|
|
|
+ - Remove about 96% of the work from the function that we run at
|
|
|
+ startup to test our curve25519_basepoint implementation. Since
|
|
|
+ this function has yet to find an actual failure, we now only run
|
|
|
+ it for 8 iterations instead of 200. Based on our profile
|
|
|
+ information, this change should save around 8% of our startup time
|
|
|
+ on typical desktops, and may have a similar effect on other
|
|
|
+ platforms. Closes ticket 28838.
|
|
|
+ - Stop re-validating our hardcoded Diffie-Hellman parameters on
|
|
|
+ every startup. Doing this wasted time and cycles, especially on
|
|
|
+ low-powered devices. Closes ticket 28851.
|
|
|
+
|
|
|
+ o Minor features (Rust, code quality):
|
|
|
+ - Improve rust code quality in the rust protover implementation by
|
|
|
+ making it more idiomatic. Includes changing an internal API to
|
|
|
+ take &str instead of &String. Closes ticket 26492.
|
|
|
+
|
|
|
+ o Minor features (testing):
|
|
|
+ - Add scripts/test/chutney-git-bisect.sh, for bisecting using
|
|
|
+ chutney. Implements ticket 27211.
|
|
|
+
|
|
|
+ o Minor features (tor-resolve):
|
|
|
+ - The tor-resolve utility can now be used with IPv6 SOCKS proxies.
|
|
|
+ Side-effect of the refactoring for ticket 26526.
|
|
|
+
|
|
|
+ o Minor features (UI):
|
|
|
+ - Log each included configuration file or directory as we read it,
|
|
|
+ to provide more visibility about where Tor is reading from. Patch
|
|
|
+ from Unto Sten; closes ticket 27186.
|
|
|
+ - Lower log level of "Scheduler type KIST has been enabled" to INFO.
|
|
|
+ Closes ticket 26703.
|
|
|
+
|
|
|
+ o Minor bugfixes (32-bit OSX and iOS, timing):
|
|
|
+ - Fix an integer overflow bug in our optimized 32-bit millisecond-
|
|
|
+ difference algorithm for 32-bit Apple platforms. Previously, it
|
|
|
+ would overflow when calculating the difference between two times
|
|
|
+ more than 47 days apart. Fixes part of bug 27139; bugfix
|
|
|
+ on 0.3.4.1-alpha.
|
|
|
+ - Improve the precision of our 32-bit millisecond difference
|
|
|
+ algorithm for 32-bit Apple platforms. Fixes part of bug 27139;
|
|
|
+ bugfix on 0.3.4.1-alpha.
|
|
|
+ - Relax the tolerance on the mainloop/update_time_jumps test when
|
|
|
+ running on 32-bit Apple platforms. Fixes part of bug 27139; bugfix
|
|
|
+ on 0.3.4.1-alpha.
|
|
|
+
|
|
|
+ o Minor bugfixes (bootstrap):
|
|
|
+ - Try harder to get descriptors in non-exit test networks, by using
|
|
|
+ the mid weight for the third hop when there are no exits. Fixes
|
|
|
+ bug 27237; bugfix on 0.2.6.2-alpha.
|
|
|
+
|
|
|
+ o Minor bugfixes (C correctness):
|
|
|
+ - Avoid casting smartlist index to int implicitly, as it may trigger
|
|
|
+ a warning (-Wshorten-64-to-32). Fixes bug 26282; bugfix on
|
|
|
+ 0.2.3.13-alpha, 0.2.7.1-alpha and 0.2.1.1-alpha.
|
|
|
+ - Use time_t for all values in
|
|
|
+ predicted_ports_prediction_time_remaining(). Rework the code that
|
|
|
+ computes difference between durations/timestamps. Fixes bug 27165;
|
|
|
+ bugfix on 0.3.1.1-alpha.
|
|
|
+
|
|
|
+ o Minor bugfixes (client, memory usage):
|
|
|
+ - When not running as a directory cache, there is no need to store
|
|
|
+ the text of the current consensus networkstatus in RAM.
|
|
|
+ Previously, however, clients would store it anyway, at a cost of
|
|
|
+ over 5 MB. Now, they do not. Fixes bug 27247; bugfix
|
|
|
+ on 0.3.0.1-alpha.
|
|
|
+
|
|
|
+ o Minor bugfixes (client, ReachableAddresses):
|
|
|
+ - Instead of adding a "reject *:*" line to ReachableAddresses when
|
|
|
+ loading the configuration, add one to the policy after parsing it
|
|
|
+ in parse_reachable_addresses(). This prevents extra "reject *.*"
|
|
|
+ lines from accumulating on reloads. Fixes bug 20874; bugfix on
|
|
|
+ 0.1.1.5-alpha. Patch by Neel Chauhan.
|
|
|
+
|
|
|
+ o Minor bugfixes (code quality):
|
|
|
+ - Rename sandbox_getaddrinfo() and other functions to no longer
|
|
|
+ misleadingly suggest that they are sandbox-only. Fixes bug 26525;
|
|
|
+ bugfix on 0.2.7.1-alpha.
|
|
|
+
|
|
|
+ o Minor bugfixes (code safety):
|
|
|
+ - Rewrite our assertion macros so that they no longer suppress the
|
|
|
+ compiler's -Wparentheses warnings. Fixes bug 27709; bugfix
|
|
|
+ on 0.0.6.
|
|
|
+
|
|
|
+ o Minor bugfixes (compilation):
|
|
|
+ - Initialize a variable unconditionally in aes_new_cipher(), since
|
|
|
+ some compilers cannot tell that we always initialize it before
|
|
|
+ use. Fixes bug 28413; bugfix on 0.2.9.3-alpha.
|
|
|
+
|
|
|
+ o Minor bugfixes (configuration):
|
|
|
+ - Refuse to start with relative file paths and RunAsDaemon set
|
|
|
+ (regression from the fix for bug 22731). Fixes bug 28298; bugfix
|
|
|
+ on 0.3.3.1-alpha.
|
|
|
+
|
|
|
+ o Minor bugfixes (configuration, Onion Services):
|
|
|
+ - In rend_service_parse_port_config(), disallow any input to remain
|
|
|
+ after address-port pair was parsed. This will catch address and
|
|
|
+ port being whitespace-separated by mistake of the user. Fixes bug
|
|
|
+ 27044; bugfix on 0.2.9.10.
|
|
|
+
|
|
|
+ o Minor bugfixes (connection, relay):
|
|
|
+ - Avoid a logging a BUG() stacktrace when closing connection held
|
|
|
+ open because the write side is rate limited but not the read side.
|
|
|
+ Now, the connection read side is simply shut down until Tor is
|
|
|
+ able to flush the connection and close it. Fixes bug 27750; bugfix
|
|
|
+ on 0.3.4.1-alpha.
|
|
|
+
|
|
|
+ o Minor bugfixes (continuous integration, Windows):
|
|
|
+ - Stop reinstalling identical packages in our Windows CI. Fixes bug
|
|
|
+ 27464; bugfix on 0.3.4.1-alpha.
|
|
|
+ - Install only the necessary mingw packages during our appveyor
|
|
|
+ builds. This change makes the build a little faster, and prevents
|
|
|
+ a conflict with a preinstalled mingw openssl that appveyor now
|
|
|
+ ships. Fixes bugs 27765 and 27943; bugfix on 0.3.4.2-alpha.
|
|
|
+ - Explicitly specify the path to the OpenSSL library and do not
|
|
|
+ download OpenSSL from Pacman, but instead use the library that is
|
|
|
+ already provided by AppVeyor. Fixes bug 28574; bugfix on master.
|
|
|
+ - Manually configure the zstd compiler options, when building using
|
|
|
+ mingw on Appveyor Windows CI. The MSYS2 mingw zstd package does
|
|
|
+ not come with a pkg-config file. Fixes bug 28454; bugfix
|
|
|
+ on 0.3.4.1-alpha.
|
|
|
+ - Stop using an external OpenSSL install, and stop installing MSYS2
|
|
|
+ packages, when building using mingw on Appveyor Windows CI. Fixes
|
|
|
+ bug 28399; bugfix on 0.3.4.1-alpha.
|
|
|
+
|
|
|
+ o Minor bugfixes (controller):
|
|
|
+ - Consider all routerinfo errors other than "not a server" to be
|
|
|
+ transient for the purpose of "GETINFO exit-policy/*" controller
|
|
|
+ request. Print stacktrace in the unlikely case of failing to
|
|
|
+ recompute routerinfo digest. Fixes bug 27034; bugfix
|
|
|
+ on 0.3.4.1-alpha.
|
|
|
+
|
|
|
+ o Minor bugfixes (correctness):
|
|
|
+ - Fix an unreached code path where we checked the value of
|
|
|
+ "hostname" inside send_resolved_hostname_cell(). Previously, we
|
|
|
+ used it before checking it; now we check it first. Fixes bug
|
|
|
+ 28879; bugfix on 0.1.2.7-alpha.
|
|
|
+
|
|
|
+ o Minor bugfixes (directory connection shutdown):
|
|
|
+ - Avoid a double-close when shutting down a stalled directory
|
|
|
+ connection. Fixes bug 26896; bugfix on 0.3.4.1-alpha.
|
|
|
+
|
|
|
+ o Minor bugfixes (directory permissions):
|
|
|
+ - When a user requests a group-readable DataDirectory, give it to
|
|
|
+ them. Previously, when the DataDirectory and the CacheDirectory
|
|
|
+ were the same, the default setting (0) for
|
|
|
+ CacheDirectoryGroupReadable would override the setting for
|
|
|
+ DataDirectoryGroupReadable. Fixes bug 26913; bugfix
|
|
|
+ on 0.3.3.1-alpha.
|
|
|
+
|
|
|
+ o Minor bugfixes (HTTP tunnel):
|
|
|
+ - Fix a bug warning when closing an HTTP tunnel connection due to an
|
|
|
+ HTTP request we couldn't handle. Fixes bug 26470; bugfix
|
|
|
+ on 0.3.2.1-alpha.
|
|
|
+
|
|
|
+ o Minor bugfixes (ipv6):
|
|
|
+ - In addrs_in_same_network_family(), we choose the subnet size based
|
|
|
+ on the IP version (IPv4 or IPv6). Previously, we chose a fixed
|
|
|
+ subnet size of /16 for both IPv4 and IPv6 addresses. Fixes bug
|
|
|
+ 15518; bugfix on 0.2.3.1-alpha. Patch by Neel Chauhan.
|
|
|
+
|
|
|
+ o Minor bugfixes (Linux seccomp2 sandbox):
|
|
|
+ - Permit the "shutdown()" system call, which is apparently used by
|
|
|
+ OpenSSL under some circumstances. Fixes bug 28183; bugfix
|
|
|
+ on 0.2.5.1-alpha.
|
|
|
+
|
|
|
+ o Minor bugfixes (logging):
|
|
|
+ - Stop talking about the Named flag in log messages. Clients have
|
|
|
+ ignored the Named flag since 0.3.2. Fixes bug 28441; bugfix
|
|
|
+ on 0.3.2.1-alpha.
|
|
|
+ - As a precaution, do an early return from log_addr_has_changed() if
|
|
|
+ Tor is running as client. Also, log a stack trace for debugging as
|
|
|
+ this function should only be called when Tor runs as server. Fixes
|
|
|
+ bug 26892; bugfix on 0.1.1.9-alpha.
|
|
|
+ - Refrain from mentioning bug 21018 in the logs, as it is already
|
|
|
+ fixed. Fixes bug 25477; bugfix on 0.2.9.8.
|
|
|
+
|
|
|
+ o Minor bugfixes (logging, documentation):
|
|
|
+ - When SafeLogging is enabled, scrub IP address in
|
|
|
+ channel_tls_process_netinfo_cell(). Also, add a note to manpage
|
|
|
+ that scrubbing is not guaranteed on loglevels below Notice. Fixes
|
|
|
+ bug 26882; bugfix on 0.2.4.10-alpha.
|
|
|
+
|
|
|
+ o Minor bugfixes (memory leaks):
|
|
|
+ - Fix a harmless memory leak in libtorrunner.a. Fixes bug 28419;
|
|
|
+ bugfix on 0.3.3.1-alpha. Patch from Martin Kepplinger.
|
|
|
+ - Fix a small memory leak when calling Tor with --dump-config. Fixes
|
|
|
+ bug 27893; bugfix on 0.3.2.1-alpha.
|
|
|
+
|
|
|
+ o Minor bugfixes (netflow padding):
|
|
|
+ - Ensure circuitmux queues are empty before scheduling or sending
|
|
|
+ padding. Fixes bug 25505; bugfix on 0.3.1.1-alpha.
|
|
|
+
|
|
|
+ o Minor bugfixes (onion service v2):
|
|
|
+ - Log at level "info", not "warning", in the case that we do not
|
|
|
+ have a consensus when a .onion request comes in. This can happen
|
|
|
+ normally while bootstrapping. Fixes bug 27040; bugfix
|
|
|
+ on 0.2.8.2-alpha.
|
|
|
+
|
|
|
+ o Minor bugfixes (onion service v3):
|
|
|
+ - When deleting an ephemeral onion service (DEL_ONION), do not close
|
|
|
+ any rendezvous circuits in order to let the existing client
|
|
|
+ connections finish by themselves or closed by the application. The
|
|
|
+ HS v2 is doing that already so now we have the same behavior for
|
|
|
+ all versions. Fixes bug 28619; bugfix on 0.3.3.1-alpha.
|
|
|
+ - Build the service descriptor's signing key certificate before
|
|
|
+ uploading, so we always have a fresh one: leaving no chances for
|
|
|
+ it to expire service side. Fixes bug 27838; bugfix
|
|
|
+ on 0.3.2.1-alpha.
|
|
|
+ - Stop dumping a stack trace when trying to connect to an intro
|
|
|
+ point without having a descriptor for it. Fixes bug 27774; bugfix
|
|
|
+ on 0.3.2.1-alpha.
|
|
|
+ - When selecting a v3 rendezvous point, don't only look at the
|
|
|
+ protover, but also check whether the curve25519 onion key is
|
|
|
+ present. This way we avoid picking a relay that supports the v3
|
|
|
+ rendezvous but for which we don't have the microdescriptor. Fixes
|
|
|
+ bug 27797; bugfix on 0.3.2.1-alpha.
|
|
|
+ - Close all SOCKS request (for the same .onion) if the newly fetched
|
|
|
+ descriptor is unusable. Before that, we would close only the first
|
|
|
+ one leaving the other hanging and let to time out by themselves.
|
|
|
+ Fixes bug 27410; bugfix on 0.3.2.1-alpha.
|
|
|
+ - When the onion service directory can't be created or has the wrong
|
|
|
+ permissions, do not log a stack trace. Fixes bug 27335; bugfix
|
|
|
+ on 0.3.2.1-alpha.
|
|
|
+ - On an intro point for a version 3 onion service, stop closing
|
|
|
+ introduction circuits on an NACK. This lets the client decide
|
|
|
+ whether to reuse the circuit or discard it. Previously, we closed
|
|
|
+ intro circuits when sending NACKs. Fixes bug 27841; bugfix on
|
|
|
+ 0.3.2.1-alpha. Patch by Neel Chaunan.
|
|
|
+ - When replacing a descriptor in the client cache, make sure to
|
|
|
+ close all client introduction circuits for the old descriptor, so
|
|
|
+ we don't end up with unusable leftover circuits. Fixes bug 27471;
|
|
|
+ bugfix on 0.3.2.1-alpha.
|
|
|
+
|
|
|
+ o Minor bugfixes (OS compatibility):
|
|
|
+ - Properly handle configuration changes that move a listener to/from
|
|
|
+ wildcard IP address. If the first attempt to bind a socket fails,
|
|
|
+ close the old listener and try binding the socket again. Fixes bug
|
|
|
+ 17873; bugfix on 0.0.8pre-1.
|
|
|
+
|
|
|
+ o Minor bugfixes (performance)::
|
|
|
+ - Rework node_is_a_configured_bridge() to no longer call
|
|
|
+ node_get_all_orports(), which was performing too many memory
|
|
|
+ allocations. Fixes bug 27224; bugfix on 0.2.3.9.
|
|
|
+
|
|
|
+ o Minor bugfixes (protover):
|
|
|
+ - Reject protocol names containing bytes other than alphanumeric
|
|
|
+ characters and hyphens ([A-Za-z0-9-]). Fixes bug 27316; bugfix
|
|
|
+ on 0.2.9.4-alpha.
|
|
|
+
|
|
|
+ o Minor bugfixes (protover, rust):
|
|
|
+ - Reject extra commas in version strings. Fixes bug 27197; bugfix
|
|
|
+ on 0.3.3.3-alpha.
|
|
|
+ - protover_all_supported() would attempt to allocate up to 16GB on
|
|
|
+ some inputs, leading to a potential memory DoS. Fixes bug 27206;
|
|
|
+ bugfix on 0.3.3.5-rc.
|
|
|
+ - Compute protover votes correctly in the rust version of the
|
|
|
+ protover code. Previously, the protover rewrite in 24031 allowed
|
|
|
+ repeated votes from the same voter for the same protocol version
|
|
|
+ to be counted multiple times in protover_compute_vote(). Fixes bug
|
|
|
+ 27649; bugfix on 0.3.3.5-rc.
|
|
|
+ - Reject protover names that contain invalid characters. Fixes bug
|
|
|
+ 27687; bugfix on 0.3.3.1-alpha.
|
|
|
+
|
|
|
+ o Minor bugfixes (relay shutdown, systemd):
|
|
|
+ - Notify systemd of ShutdownWaitLength so it can be set to longer
|
|
|
+ than systemd's TimeoutStopSec. In Tor's systemd service file, set
|
|
|
+ TimeoutSec to 60 seconds to allow Tor some time to shut down.
|
|
|
+ Fixes bug 28113; bugfix on 0.2.6.2-alpha.
|
|
|
+
|
|
|
+ o Minor bugfixes (relay statistics):
|
|
|
+ - Update relay descriptor on bandwidth changes only when the uptime
|
|
|
+ is smaller than 24h, in order to reduce the efficiency of guard
|
|
|
+ discovery attacks. Fixes bug 24104; bugfix on 0.1.1.6-alpha.
|
|
|
+
|
|
|
+ o Minor bugfixes (relay):
|
|
|
+ - Consider the fact that we'll be making direct connections to our
|
|
|
+ entry and guard nodes when computing the fraction of nodes that
|
|
|
+ have their descriptors. Also, if we are using bridges and there is
|
|
|
+ at least one bridge with a full descriptor, treat the fraction of
|
|
|
+ guards available as 100%. Fixes bug 25886; bugfix on 0.2.4.10-alpha.
|
|
|
+ Patch by Neel Chauhan.
|
|
|
+ - Update the message logged on relays when DirCache is disabled.
|
|
|
+ Since 0.3.3.5-rc, authorities require DirCache (V2Dir) for the
|
|
|
+ Guard flag. Fixes bug 24312; bugfix on 0.3.3.5-rc.
|
|
|
+
|
|
|
+ o Minor bugfixes (testing):
|
|
|
+ - Stop running stem's unit tests as part of "make test-stem", but
|
|
|
+ continue to run stem's unit and online tests during "make test-
|
|
|
+ stem-full". Fixes bug 28568; bugfix on 0.2.6.3-alpha.
|
|
|
+ - Stop leaking memory in an entry guard unit test. Fixes bug 28554;
|
|
|
+ bugfix on 0.3.0.1-alpha.
|
|
|
+ - Make the hs_service tests use the same time source when creating
|
|
|
+ the introduction point and when testing it. Now tests work better
|
|
|
+ on very slow systems like ARM or Travis. Fixes bug 27810; bugfix
|
|
|
+ on 0.3.2.1-alpha.
|
|
|
+ - Revise the "conditionvar_timeout" test so that it succeeds even on
|
|
|
+ heavily loaded systems where the test threads are not scheduled
|
|
|
+ within 200 msec. Fixes bug 27073; bugfix on 0.2.6.3-alpha.
|
|
|
+ - Fix two unit tests to work when HOME environment variable is not
|
|
|
+ set. Fixes bug 27096; bugfix on 0.2.8.1-alpha.
|
|
|
+ - If a unit test running in a subprocess exits abnormally or with a
|
|
|
+ nonzero status code, treat the test as having failed, even if the
|
|
|
+ test reported success. Without this fix, memory leaks don't cause
|
|
|
+ the tests to fail, even with LeakSanitizer. Fixes bug 27658;
|
|
|
+ bugfix on 0.2.2.4-alpha.
|
|
|
+ - When logging a version mismatch in our openssl_version tests,
|
|
|
+ report the actual offending version strings. Fixes bug 26152;
|
|
|
+ bugfix on 0.2.9.1-alpha.
|
|
|
+ - Fix forking tests on Windows when there is a space somewhere in
|
|
|
+ the path. Fixes bug 26437; bugfix on 0.2.2.4-alpha.
|
|
|
+
|
|
|
+ o Minor bugfixes (Windows):
|
|
|
+ - Correctly identify Windows 8.1, Windows 10, and Windows Server
|
|
|
+ 2008 and later from their NT versions. Fixes bug 28096; bugfix on
|
|
|
+ 0.2.2.34; reported by Keifer Bly.
|
|
|
+ - On recent Windows versions, the GetVersionEx() function may report
|
|
|
+ an earlier Windows version than the running OS. To avoid user
|
|
|
+ confusion, add "[or later]" to Tor's version string on affected
|
|
|
+ versions of Windows. Fixes bug 28096; bugfix on 0.2.2.34; reported
|
|
|
+ by Keifer Bly.
|
|
|
+ - Remove Windows versions that were never supported by the
|
|
|
+ GetVersionEx() function. Stop duplicating the latest Windows
|
|
|
+ version in get_uname(). Fixes bug 28096; bugfix on 0.2.2.34;
|
|
|
+ reported by Keifer Bly.
|
|
|
+
|
|
|
+ o Code simplification and refactoring:
|
|
|
+ - When parsing a port configuration, make it more obvious to static
|
|
|
+ analyzer tools that we always initialize the address. Closes
|
|
|
+ ticket 28881.
|
|
|
+ - Divide more large Tor source files -- especially ones that span
|
|
|
+ multiple areas of functionality -- into smaller parts, including
|
|
|
+ onion.c and main.c. Closes ticket 26747.
|
|
|
+ - Divide the "routerparse.c" module into separate modules for each
|
|
|
+ group of parsed objects. Closes ticket 27924.
|
|
|
+ - Move protover_rust.c to the same place protover.c was moved to.
|
|
|
+ Closes ticket 27814.
|
|
|
+ - Split directory.c into separate pieces for client, server, and
|
|
|
+ common functionality. Closes ticket 26744.
|
|
|
+ - Split the non-statistics-related parts from the rephist.c and
|
|
|
+ geoip.c modules. Closes ticket 27892.
|
|
|
+ - Split the router.c file into relay-only and shared components, to
|
|
|
+ help with future modularization. Closes ticket 27864.
|
|
|
+ - Divide the routerlist.c and dirserv.c modules into smaller parts.
|
|
|
+ Closes ticket 27799.
|
|
|
+ - 'updateFallbackDirs.py' now ignores the blacklist file, as it's not
|
|
|
+ longer needed. Closes ticket 26502.
|
|
|
+ - Include paths to header files within Tor are now qualified by
|
|
|
+ directory within the top-level src directory.
|
|
|
+ - Many structures have been removed from the centralized "or.h"
|
|
|
+ header, and moved into their own headers. This will allow us to
|
|
|
+ reduce the number of places in the code that rely on each
|
|
|
+ structure's contents and layout. Closes ticket 26383.
|
|
|
+ - Remove ATTR_NONNULL macro from codebase. Resolves ticket 26527.
|
|
|
+ - Remove GetAdaptersAddresses_fn_t. The code that used it was
|
|
|
+ removed as part of the 26481 refactor. Closes ticket 27467.
|
|
|
+ - Rework Tor SOCKS server code to use Trunnel and benefit from
|
|
|
+ autogenerated functions for parsing and generating SOCKS wire
|
|
|
+ format. New implementation is cleaner, more maintainable and
|
|
|
+ should be less prone to heartbleed-style vulnerabilities.
|
|
|
+ Implements a significant fraction of ticket 3569.
|
|
|
+ - Split sampled_guards_update_from_consensus() and
|
|
|
+ select_entry_guard_for_circuit() into subfunctions. In
|
|
|
+ entry_guards_update_primary() unite three smartlist enumerations
|
|
|
+ into one and move smartlist comparison code out of the function.
|
|
|
+ Closes ticket 21349.
|
|
|
+ - Tor now assumes that you have standards-conformant stdint.h and
|
|
|
+ inttypes.h headers when compiling. Closes ticket 26626.
|
|
|
+ - Unify our bloom filter logic. Previously we had two copies of this
|
|
|
+ code: one for routerlist filtering, and one for address set
|
|
|
+ calculations. Closes ticket 26510.
|
|
|
+ - Use the simpler strcmpstart() helper in
|
|
|
+ rend_parse_v2_service_descriptor instead of strncmp(). Closes
|
|
|
+ ticket 27630.
|
|
|
+ - Utility functions that can perform a DNS lookup are now wholly
|
|
|
+ separated from those that can't, in separate headers and C
|
|
|
+ modules. Closes ticket 26526.
|
|
|
+
|
|
|
+ o Documentation:
|
|
|
+ - In the tor-resolve(1) manpage, fix the reference to socks-
|
|
|
+ extensions.txt by adding a web URL. Resolves ticket 27853.
|
|
|
+ - Mention that we require Python to be 2.7 or newer for some
|
|
|
+ integration tests that we ship with Tor. Resolves ticket 27677.
|
|
|
+ - Copy paragraph and URL to Tor's code of conduct document from
|
|
|
+ CONTRIBUTING to new CODE_OF_CONDUCT file. Resolves ticket 26638.
|
|
|
+ - Remove old instructions from INSTALL document. Closes ticket 26588.
|
|
|
+ - Warn users that they should not include MyFamily line(s) in their
|
|
|
+ torrc when running Tor bridge. Closes ticket 26908.
|
|
|
+
|
|
|
+ o Removed features:
|
|
|
+ - Tor no longer supports building with the dmalloc library. For
|
|
|
+ debugging memory issues, we suggest using gperftools or msan
|
|
|
+ instead. Closes ticket 26426.
|
|
|
+ - Tor no longer attempts to run on Windows environments without the
|
|
|
+ GetAdaptersAddresses() function. This function has existed since
|
|
|
+ Windows XP, which is itself already older than we support.
|
|
|
+ - Remove Tor2web functionality for version 2 onion services. The
|
|
|
+ Tor2webMode and Tor2webRendezvousPoints options are now obsolete.
|
|
|
+ (This feature was never shipped in vanilla Tor and it was only
|
|
|
+ possible to use this feature by building the support at compile
|
|
|
+ time. Tor2webMode is not implemented for version 3 onion services.)
|
|
|
+ Closes ticket 26367.
|
|
|
+
|
|
|
+ o Testing:
|
|
|
+ - Increase logging and tag all log entries with timestamps in
|
|
|
+ test_rebind.py. Provides diagnostics for issue 28229.
|
|
|
+
|
|
|
+ o Code simplification and refactoring (shared random, dirauth):
|
|
|
+ - Change many tor_assert() to use BUG() instead. The idea is to not
|
|
|
+ crash a dirauth but rather scream loudly with a stacktrace and let
|
|
|
+ it continue run. The shared random subsystem is very resilient and
|
|
|
+ if anything wrong happens with it, at worst a non coherent value
|
|
|
+ will be put in the vote and discarded by the other authorities.
|
|
|
+ Closes ticket 19566.
|
|
|
+
|
|
|
+ o Documentation (onion services):
|
|
|
+ - Improve HSv3 client authorization by making some options more
|
|
|
+ explicit and detailed. Closes ticket 28026. Patch by Mike Tigas.
|
|
|
+ - Document in the man page that changing ClientOnionAuthDir value or
|
|
|
+ adding a new file in the directory will not work at runtime upon
|
|
|
+ sending a HUP if Sandbox 1. Closes ticket 28128.
|
|
|
+ - Note in the man page that the only real way to fully revoke an
|
|
|
+ onion service v3 client authorization is by restarting the tor
|
|
|
+ process. Closes ticket 28275.
|
|
|
+
|
|
|
+
|
|
|
Changes in version 0.3.4.9 - 2018-11-02
|
|
|
Tor 0.3.4.9 is the second stable release in its series; it backports
|
|
|
numerous fixes, including a fix for a bandwidth management bug that
|