Changes in version 0.2.5.5-alpha - 2014-06-18 Tor 0.2.5.5-alpha fixes a wide variety of remaining issues in the Tor 0.2.5.x release series, including a couple of DoS issues, some performance regressions, a large number of bugs affecting the Linux seccomp2 sandbox code, and various other bugfixes. It also adds diagnostic bugfixes for a few tricky issues that we're trying to track down.
The source is ready today; packages should be ready in the next several days. (I'm taking some load off of Roger's shoulders by doing releases myself. This means that the signatures on the release are made with my PGP key, not Roger's. Please don't freak out.) https://www.torproject.org/dist/ o Major features (security, traffic analysis resistance): - Several major improvements to the algorithm used to decide when to close TLS connections. Previous versions of Tor closed connections at a fixed interval after the last time a non-padding cell was sent over the connection, regardless of the target of the connection. Now, we randomize the intervals by adding up to 50% of their base value, we measure the length of time since connection last had at least one circuit, and we allow connections to known ORs to remain open a little longer (15 minutes instead of 3 minutes minimum). These changes should improve Tor's resistance against some kinds of traffic analysis, and lower some overhead from needlessly closed connections. Fixes ticket 6799. Incidentally fixes ticket 12023; bugfix on 0.2.5.1-alpha. o Major bugfixes (security, OOM, new since 0.2.5.4-alpha, also in 0.2.4.22): - Fix a memory leak that could occur if a microdescriptor parse fails during the tokenizing step. This bug could enable a memory exhaustion attack by directory servers. Fixes bug 11649; bugfix on 0.2.2.6-alpha. o Major bugfixes (security, directory authorities): - Directory authorities now include a digest of each relay's identity key as a part of its microdescriptor. This is a workaround for bug 11743 (reported by "cypherpunks"), where Tor clients do not support receiving multiple microdescriptors with the same SHA256 digest in the same consensus. When clients receive a consensus like this, they only use one of the relays. Without this fix, a hostile relay could selectively disable some client use of target relays by constructing a router descriptor with a different identity and the same microdescriptor parameters and getting the authorities to list it in a microdescriptor consensus. This fix prevents an attacker from causing a microdescriptor collision, because the router's identity is not forgeable. o Major bugfixes (relay): - Use a direct dirport connection when uploading non-anonymous descriptors to the directory authorities. Previously, relays would incorrectly use tunnel connections under a fairly wide variety of circumstances. Fixes bug 11469; bugfix on 0.2.4.3-alpha. - When a circuit accidentally has the same circuit ID for its forward and reverse direction, correctly detect the direction of cells using that circuit. Previously, this bug made roughly one circuit in a million non-functional. Fixes bug 12195; this is a bugfix on every version of Tor. o Major bugfixes (client, pluggable transports): - When managing pluggable transports, use OS notification facilities to learn if they have crashed, and don't attempt to kill any process that has already exited. Fixes bug 8746; bugfix on 0.2.3.6-alpha. o Minor features (diagnostic): - When logging a warning because of bug 7164, additionally check the hash table for consistency (as proposed on ticket 11737). This may help diagnose bug 7164. - When we log a heartbeat, log how many one-hop circuits we have that are at least 30 minutes old, and log status information about a few of them. This is an attempt to track down bug 8387. - When encountering an unexpected CR while writing text to a file on Windows, log the name of the file. Should help diagnosing bug 11233. - Give more specific warnings when a client notices that an onion handshake has failed. Fixes ticket 9635. - Add significant new logging code to attempt to diagnose bug 12184, where relays seem to run out of available circuit IDs. - Improve the diagnostic log message for bug 8387 even further to try to improve our odds of figuring out why one-hop directory circuits sometimes do not get closed. o Minor features (security, memory management): - Memory allocation tricks (mempools and buffer freelists) are now disabled by default. You can turn them back on with --enable-mempools and --enable-buf-freelists respectively. We're disabling these features because malloc performance is good enough on most platforms, and a similar feature in OpenSSL exacerbated exploitation of the Heartbleed attack. Resolves ticket 11476. o Minor features (security): - Apply the secure SipHash-2-4 function to the hash table mapping circuit IDs and channels to circuits. We missed this one when we were converting all the other hash functions to use SipHash back in 0.2.5.3-alpha. Resolves ticket 11750. o Minor features (build): - The configure script has a --disable-seccomp option to turn off support for libseccomp on systems that have it, in case it (or Tor's use of it) is broken. Resolves ticket 11628. o Minor features (other): - Update geoip and geoip6 to the June 4 2014 Maxmind GeoLite2 Country database. o Minor bugfixes (security, new since 0.2.5.4-alpha, also in 0.2.4.22): - When running a hidden service, do not allow TunneledDirConns 0; this will keep the hidden service from running, and also make it publish its descriptors directly over HTTP. Fixes bug 10849; bugfix on 0.2.1.1-alpha. o Minor bugfixes (performance): - Avoid a bug where every successful connection made us recompute the flag telling us whether we have sufficient information to build circuits. Previously, we would forget our cached value whenever we successfully opened a channel (or marked a router as running or not running for any other reason), regardless of whether we had previously believed the router to be running. This forced us to run an expensive update operation far too often. Fixes bug 12170; bugfix on 0.1.2.1-alpha. - Avoid using tor_memeq() for checking relay cell integrity. This removes a possible performance bottleneck. Fixes part of bug 12169; bugfix on 0.2.1.31. o Minor bugfixes (compilation): - Fix compilation of test_status.c when building with MVSC. Bugfix on 0.2.5.4-alpha. Patch from Gisle Vanem. - Resolve GCC complaints on OpenBSD about discarding constness in TO_{ORIGIN,OR}_CIRCUIT functions. Fixes part of bug 11633; bugfix on 0.1.1.23. Patch from Dana Koch. - Resolve clang complaints on OpenBSD with -Wshorten-64-to-32 due to treatment of long and time_t as comparable types. Fixes part of bug 11633. Patch from Dana Koch. - Make Tor compile correctly with --disable-buf-freelists. Fixes bug 11623; bugfix on 0.2.5.3-alpha. - When deciding whether to build the 64-bit curve25519 implementation, detect platforms where we can compile 128-bit arithmetic but cannot link it. Fixes bug 11729; bugfix on 0.2.4.8-alpha. Patch from "conradev". - Fix compilation when DNS_CACHE_DEBUG is enabled. Fixes bug 11761; bugfix on 0.2.3.13-alpha. Found by "cypherpunks". - Fix compilation with dmalloc. Fixes bug 11605; bugfix on 0.2.4.10-alpha. o Minor bugfixes (Directory server): - When sending a compressed set of descriptors or microdescriptors, make sure to finalize the zlib stream. Previously, we would write all the compressed data, but if the last descriptor we wanted to send was missing or too old, we would not mark the stream as finished. This caused problems for decompression tools. Fixes bug 11648; bugfix on 0.1.1.23. o Minor bugfixes (Linux seccomp sandbox): - Make the seccomp sandbox code compile under ARM Linux. Fixes bug 11622; bugfix on 0.2.5.1-alpha. - Avoid crashing when re-opening listener ports with the seccomp sandbox active. Fixes bug 12115; bugfix on 0.2.5.1-alpha. - Avoid crashing with the seccomp sandbox enabled along with ConstrainedSockets. Fixes bug 12139; bugfix on 0.2.5.1-alpha. - When we receive a SIGHUP with the sandbox enabled, correctly support rotating our log files. Fixes bug 12032; bugfix on 0.2.5.1-alpha. - Avoid crash when running with sandboxing enabled and DirReqStatistics not disabled. Fixes bug 12035; bugfix on 0.2.5.1-alpha. - Fix a "BUG" warning when trying to write bridge-stats files with the Linux syscall sandbox filter enabled. Fixes bug 12041; bugfix on 0.2.5.1-alpha. - Prevent the sandbox from crashing on startup when run with the --enable-expensive-hardening configuration option. Fixes bug 11477; bugfix on 0.2.5.4-alpha. - When running with DirPortFrontPage and sandboxing both enabled, reload the DirPortFrontPage correctly when restarting. Fixes bug 12028; bugfix on 0.2.5.1-alpha. - Don't try to enable the sandbox when using the Tor binary to check its configuration, hash a passphrase, or so on. Doing so was crashing on startup for some users. Fixes bug 11609; bugfix on 0.2.5.1-alpha. - Avoid warnings when running with sandboxing and node statistics enabled at the same time. Fixes part of 12064; bugfix on 0.2.5.1-alpha. Patch from Michael Wolf. - Avoid warnings when running with sandboxing enabled at the same time as cookie authentication, hidden services, or directory authority voting. Fixes part of 12064; bugfix on 0.2.5.1-alpha. - Do not allow options that require calls to exec to be enabled alongside the seccomp2 sandbox: they will inevitably crash. Fixes bug 12043; bugfix on 0.2.5.1-alpha. - Handle failures in getpwnam()/getpwuid() when running with the User option set and the Linux syscall sandbox enabled. Fixes bug 11946; bugfix on 0.2.5.1-alpha. - Refactor the getaddrinfo workaround that the seccomp sandbox uses to avoid calling getaddrinfo() after installing the sandbox filters. Previously, it preloaded a cache with the IPv4 address for our hostname, and nothing else. Now, it loads the cache with every address that it used to initialize the Tor process. Fixes bug 11970; bugfix on 0.2.5.1-alpha. o Minor bugfixes (pluggable transports): - Enable the ExtORPortCookieAuthFile option, to allow changing the default location of the authentication token for the extended OR Port as used by sever-side pluggable transports. We had implemented this option before, but the code to make it settable had been omitted. Fixes bug 11635; bugfix on 0.2.5.1-alpha. - Avoid another 60-second delay when starting Tor in a pluggable- transport-using configuration when we already have cached descriptors for our bridges. Fixes bug 11965; bugfix on 0.2.3.6-alpha. o Minor bugfixes (client): - Avoid "Tried to open a socket with DisableNetwork set" warnings when starting a client with bridges configured and DisableNetwork set. (Tor launcher starts Tor with DisableNetwork set the first time it runs.) Fixes bug 10405; bugfix on 0.2.3.9-alpha. o Minor bugfixes (testing): - The Python parts of the test scripts now work on Python 3 as well as Python 2, so systems where '/usr/bin/python' is Python 3 will no longer have the tests break. Fixes bug 11608; bugfix on 0.2.5.2-alpha. - When looking for versions of python that we could run the tests with, check for "python2.7" and "python3.3"; previously we were only looking for "python", "python2", and "python3". Patch from Dana Koch. Fixes bug 11632; bugfix on 0.2.5.2-alpha. - Fix all valgrind warnings produced by the unit tests. There were over a thousand memory leak warnings previously, mostly produced by forgetting to free things in the unit test code. Fixes bug 11618, bugfixes on many versions of Tor. o Minor bugfixes (tor-fw-helper): - Give a correct log message when tor-fw-helper fails to launch. (Previously, we would say something like "tor-fw-helper sent us a string we could not parse".) Fixes bug 9781; bugfix on 0.2.4.2-alpha. o Minor bugfixes (relay, threading): - Check return code on spawn_func() in cpuworker code, so that we don't think we've spawned a nonworking cpuworker and write junk to it forever. Fix related to bug 4345; bugfix on all released Tor versions. Found by "skruffy". - Use a pthread_attr to make sure that spawn_func() cannot return an error while at the same time launching a thread. Fix related to bug 4345; bugfix on all released Tor versions. Reported by "cypherpunks". o Minor bugfixes (relay, oom prevention): - Correctly detect the total available system memory. We tried to do this in 0.2.5.4-alpha, but the code was set up to always return an error value, even on success. Fixes bug 11805; bugfix on 0.2.5.4-alpha. o Minor bugfixes (relay, other): - We now drop CREATE cells for already-existent circuit IDs and for zero-valued circuit IDs, regardless of other factors that might otherwise have called for DESTROY cells. Fixes bug 12191; bugfix on 0.0.8pre1. - Avoid an illegal read from stack when initializing the TLS module using a version of OpenSSL without all of the ciphers used by the v2 link handshake. Fixes bug 12227; bugfix on 0.2.4.8-alpha. Found by "starlight". - When rejecting DATA cells for stream_id zero, still count them against the circuit's deliver window so that we don't fail to send a SENDME. Fixes bug 11246; bugfix on 0.2.4.10-alpha. o Minor bugfixes (logging): - Fix a misformatted log message about delayed directory fetches. Fixes bug 11654; bugfix on 0.2.5.3-alpha. - Squelch a spurious LD_BUG message "No origin circuit for successful SOCKS stream" in certain hidden service failure cases; fixes bug 10616. o Distribution: - Include a tor.service file in contrib/dist for use with systemd. Some distributions will be able to use this file unmodified; others will need to tweak it, or write their own. Patch from Jamie Nguyen; resolves ticket 8368. o Documentation: - Clean up several option names in the manpage to match their real names, add the missing documentation for a couple of testing and directory authority options, remove the documentation for a V2-directory fetching option that no longer exists. Resolves ticket 11634. - Correct the documenation so that it lists the correct directory for the stats files. (They are in a subdirectory called "stats", not "status".) - In the manpage, move more authority-only options into the directory authority section so that operators of regular directory caches don't get confused. o Package cleanup: - The contrib directory has been sorted and tidied. Before, it was an unsorted dumping ground for useful and not-so-useful things. Now, it is divided based on functionality, and the items which seemed to be nonfunctional or useless have been removed. Resolves ticket 8966; based on patches from "rl1987". o Removed code: - Remove /tor/dbg-stability.txt URL that was meant to help debug WFU and MTBF calculations, but that nobody was using. Fixes #11742. - The TunnelDirConns and PreferTunnelledDirConns options no longer exist; tunneled directory connections have been available since 0.1.2.5-alpha, and turning them off is not a good idea. This is a brute-force fix for 10849, where "TunnelDirConns 0" would break hidden services. -- tor-talk mailing list - [email protected] To unsubscribe or change other settings go to https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-talk
