[tor-talk] Tor 0.2.5.5-alpha is released

Nick Mathewson nickm at freehaven.net
Wed Jun 18 19:56:17 UTC 2014


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.


More information about the tor-talk mailing list