Commit aa4f2f73 authored by Nick Mathewson's avatar Nick Mathewson 🦀
Browse files

Initial changelog draft for 0.4.1.1-alpha (mostly automated)

parent b2b77922
Loading
Loading
Loading
Loading
+432 −0
Original line number Diff line number Diff line
Changes in version 0.4.1.1-alpha - 2019-05-??
  This is the first alpha in the 0.4.1.x series. It introduces
  lightweight circuit padding to make some onion-service circuits harder
  to distinguish, includes a new "authenticated SENDME" feature to make
  certain denial-of-service attacks more difficult, and improves
  performance in several areas.
  o Major features (Circuit padding):
    - Onion service clients will now add padding cells to the initial
      portions of their INTRODUCE and RENDEZVOUS circuits, to make those
      circuits' traffic patterns look more like general purpose Exit
      traffic. The overhead for this is 2 extra cells in each direction
      for RENDEZVOUS circuits, and 1 extra upstream cell and 10
      downstream cells for INTRODUCE circuits. This will only be enabled
      if the circuit's middle node supports this feature, too. (Clients
      may specify fixed middle nodes with the MiddleNodes torrc
      directive, and may force-disable this feature with the
      CircuitPadding torrc directive). Closes ticket 28634.
  o Major features (code organization):
    - Tor now includes a generic publish-subscribe message-passing
      subsystem that we can use to organize intermodule dependencies. We
      hope to use this to reduce dependencies between modules that don't
      need to be related, and to generally simplify our codebase. Closes
      ticket 28226.
  o Major features (controller protocol):
    - Controller commands are now parsed using a generalized parsing
      subsystem. Previously, each controller command was responsible for
      parsing its own input. Closes ticket 30091.
  o Major features (flow control):
    - Implement authenticated SENDMEs detailed in proposal 289. A SENDME
      cell now includes the digest of the last cell received so once the
      end point receives the SENDME, it can confirm the other side's
      knowledge of the previous cells that were sent. This behavior is
      controlled by two new consensus parameters, see proposal for more
      details. Fixes ticket 26288.
  o Major features (performance):
    - Update our node selection algorithm to exclude nodes in linear
      time. Previously, the algorithm was quadratic, which could slow
      down heavily used onion services. Closes ticket 30307.
  o Minor feature (circuit padding):
    - We now use a fast RNG when scheduling circuit padding. Part of
      ticket 28636.
  o Minor feature (maintenance scripts):
    - Add to scripts/maint/ helper maintainer scripts used for git
      maintenance. Closes ticket 29391.
  o Minor features (circuit padding):
    - Allow the padding machine designer to pick the edges of their
      histogram instead of trying to compute them automatically using an
      exponential formula. Resolves some undefined behavior in the case
      of small histograms and allows greater flexibility on machine
      design. Closes ticket 29298; bugfix on 0.4.0.1-alpha.
    - Provide the ability for circuit padding machines to hold a circuit
      open until they are done padding it. Closes ticket 28780.
  o Minor features (compile-time modules):
    - Add a --list-modules command to print a list of which compile-time
      modules are enabled. Closes ticket 30452.
  o Minor features (continuous integration):
    - Remove sudo configuration lines from .travis.yml as they are no
      longer needed with current Travis build environment. Resolves
      issue 30213.
  o Minor features (controller):
    - Add onion service version 3 support to HSFETCH. Previously, only
      version 2 onion services were supported. Closes ticket 25417.
      Patch by Neel Chauhan
  o Minor features (debugging):
    - Introduce tor_assertf() and tor_assertf_nonfatal() to enable
      logging of additional information during assert failure. Now we
      can use format strings to include pieces of information that are
      relevant for trouble shooting. Resolves ticket 29662.
  o Minor features (defense in depth):
    - In smartlist_remove_keeporder(), set any pointers that become
      unused to NULL, in case a bug causes them to be used later. Closes
      ticket 30176. Patch from Tobias Stoeckmann.
    - Tor now uses a fast cryptographically strong PRNG even for
      decisions that we do not believe are security-sensitive.
      Previously, for performance reasons, we had used a trivially
      predictable linear congruential generator algorithm for certain
      load-balancing and statistical sampling decisions. Now we use our
      fast RNG in those cases. Closes ticket 29542.
  o Minor features (developer tooling):
    - Call practracker from pre-push and pre-commit git hooks to let a
      developer know if they made any code style violations in their
      last commit. This should help preventing code style violations
      appearing upstream. Closes ticket 30051.
    - Call pre-commit git hook from pre-push hook to make sure we're
      running documentation and code style checks before pushing to
      remote git repository. Implements feature 30033.
    - Modify git pre-push hook script to disallow pushing branches other
      than master, release-* and maint-* to origin remote. Implements
      feature 29532.
  o Minor features (developer tools):
    - Add a script to check that each header has a well-formed and
      unique guard marco. Closes ticket 29756.
    - Introduce a post-merge git hook script to check if we're pulling
      in any changes to our git workspace management scripts from
      upstream. Resolves issue 29588.
  o Minor features (development tools):
    - Tor's test scripts now check for files and functions that seem too
      long and complicated. Existing overlong functions and files are
      accepted for now, but should eventually be refactored. Closes
      ticket 29221.
  o Minor features (geoip):
    - Update geoip and geoip6 to the May 13 2019 Maxmind GeoLite2
      Country database. Closes ticket 30522.
  o Minor features (git scripts):
    - In git-pull-all.sh, also fetch the latest tor-github pull
      requests. Implements ticket 30114.
  o Minor features (HTTP tunnel):
    - Return an informative web page when the HTTPTunnelPort is used as
      an HTTP proxy. Closes ticket 27821, patch by "eighthave".
  o Minor features (IPv6, v3 onion services):
    - Make v3 onion services put IPv6 addresses in service descriptors.
      Before this change, service descriptors only contained IPv4
      addressesd. Implements 26992.
  o Minor features (modularity):
    - The --disable-module-dirauth compile-time option now disables even
      more dirauth-only code. Closes ticket 30345.
  o Minor features (performance):
    - Use OpenSSL's implementations of SHA3 when available (in OpenSSL
      1.1.1 and later), since they tend to be faster than tiny-keccak.
      Closes ticket 28837.
  o Minor features (performance, RNG):
    - Tor now constructs a fast secure pseudorandom number generator for
      each thread, to use for cases where performance is critical. This
      PRNG is based on AES-CTR, using a buffering construction similar
      to libottery and the (newer) OpenBSD arc4random() code. It
      outperforms OpenSSL 1.1.1a's CSPRNG by roughly a factor of 100 for
      small outputs. Although we believe it to be cryptographically
      strong, we are only using it when necessary for reasonable
      performance. Implements tickets 29023 and 29536.
  o Minor features (testing):
    - Tor's unit test code now contains a standard set of functions to
      replace the PRNG with a deterministic or reproducible version for
      testing. Previously, various tests implemented this in various
      ways. Implements ticket 29732.
    - We now have a script, cov-test-determinism.sh, to identify places
      where our unit test coverage has become nondeterministic. Closes
      ticket 29436.
  o Minor bugfixes (bridge authority):
    - We set bridges as running when we dump the bridge status to a
      file. Previously, we set bridges as running in a GETINFO
      controller, but these shouldn't modify vital data structures.
      Fixes bug 24490; bugfix on 0.2.0.13-alpha. Patch by Neel Chauhan
  o Minor bugfixes (Channel padding statistics):
    - Channel padding write totals and padding-enabled totals are now
      counted properly in relay extrainfo descriptors. Fixes bug 29231;
      bugfix on 0.3.1.1-alpha
  o Minor bugfixes (circuit padding):
    - Add a torrc option to disable circuit padding. Fixes bug 28693;
      bugfix on 0.4.0.1-alpha.
    - Allow circuit padding machines to specify that they do not
      contribute much overhead, and provide consensus flags and torrc
      options to force clients to only use low overhead machines. Fixes
      bug 29203; bugfix on 0.4.0.1-alpha.
    - Provide consensus parameter to fully disable circuit padding, to
      be used in emergency network overload situations. Fixes bug 30173;
      bugfix on 0.4.0.1-alpha.
    - The circuit padding subsystem does not schedule padding if dormant
      mode is enabled. Fixes bug 28636; bugfix on 0.4.0.1-alpha.
  o Minor bugfixes (circuitpadding):
    - Inspect circuit-level cell queue before sending padding, to avoid
      sending padding while too much data is queued. Fixes bug 29204;
      bugfix on 0.4.0.1-alpha.
  o Minor bugfixes (compilation, unusual configuration):
    - Avoid failures when building with ALL_BUGS_ARE_FAILED due to
      missing declarations of abort(), and prevent other such failures
      in the future. Fixes bug 30189; bugfix on 0.3.4.1-alpha.
  o Minor bugfixes (controller protocol):
    - Teach the controller parser to correctly distinguish an object
      preceded by an argument list from one without. Previously, it
      couldn't distinguish an argument list from the first line of a
      multiline object. Fixes bug 29984; bugfix on 0.2.3.8-alpha.
  o Minor bugfixes (developer tools):
    - Update our pre-commit.git-hook script to work correctly on older
      Tor branches and release branches without any changes files, and
      to actually exit when something fails. Fixes bug 29553; bugfix
      on 0.4.0.2-alpha.
  o Minor bugfixes (dirauth, ipv6):
    - If we are a durauth with IPv6 and are marking relays as running,
      mark ourselves as reachable on IPv6. Fixes bug 24338; bugfix on
      0.4.0.2-alpha. Patch by Neel Chauhan
  o Minor bugfixes (documentation):
    - Improve the documentation for MapAddress .exit. Fixes bug 30109;
      bugfix on 0.1.0.1-rc.
    - Improve the monotonic time module and function documentation.
      Explain what "monotonic" actually means, and document some results
      that have surprised people. Fixes bug 29640; bugfix
      on 0.2.9.1-alpha.
  o Minor bugfixes (documentation, manpage):
    - Use proper formatting when providing an example on quoting options
      that contain whitespace. Fixes bug 29635; bugfix on 0.2.3.18-rc.
  o Minor bugfixes (lib):
  o Minor bugfixes (logging):
    - Do not log a warning for OpenSSL versions that should be
      compatible. Fixes bug 30190; bugfix on 0.2.4.2-alpha
  o Minor bugfixes (logging, configuration):
    - Warn operators when MyFamily option is set but ContactInfo is
      missing, as the latter should be set too. Fixes bug 25110; bugfix
      on 0.3.3.1-alpha.
  o Minor bugfixes (memory leak):
    - Avoid a minor memory leak that could occur on relays when creating
      a keys directory failed. Fixes bug 30148; bugfix on 0.3.3.1-alpha.
  o Minor bugfixes (onion services):
    - Avoid a GCC 9.1.1 warning (and possible crash depending on libc
      implemenation) when failing to load an onion service client
      authorization file. Fixes bug 30475; bugfix on 0.3.5.1-alpha.
    - If we are launching repeated HSFETCH queries and are rate-limited,
      we introduce a new controller response QUERY_RATE_LIMITED instead
      of QUERY_NO_HSDIR, while keeping the latter for when onion service
      directories are missing a descriptor. Previously, we returned
      QUERY_NO_HSDIR for both cases. Fixes bug 28269; bugfix on
      0.3.1.1-alpha. Patch by Neel Chauhan
    - If we are relaunching a circuit to a rendevous service in
      rend_service_relaunch_rendezvous() and
      hs_service_requires_uptime_circ() is true, the
      CIRCLAUNCH_NEED_UPTIME flag is added to the circuit. Previously,
      we only set this flag when we received a INTRODUCE2 cell in
      rend_service_receive_introduction(). Fixes bug 17357; bugfix on
      0.4.0.2-alpha. Patch by Neel Chauhan
  o Minor bugfixes (onion services, performance):
    - If we are building circuits to onion services, in
      circuit_is_acceptable() we only call tor_addr_parse() in places
      where we use the returned family and address values from this
      function. Previously, we called tor_addr_parse() in
      circuit_is_acceptable() even if it wasn't used. This change will
      improve performance when building circuits. Fixes bug 22210;
      bugfix on 0.2.8.12. Patch by Neel Chauhan
  o Minor bugfixes (performance):
    - When checking a node for bridge status, use a fast check to make
      sure that its identity is set. Previously, we used a constant-time
      check, which is not necessary when verifying a BUG() condition that
      causes a stack trace. Fixes bug 30308; bugfix on 0.3.5.1-alpha.
  o Minor bugfixes (pluggable transports):
    - Tor now sets TOR_PT_EXIT_ON_STDIN_CLOSE=1 for client transports as
      well as servers. Fixes bug 25614; bugfix on 0.2.7.1-alpha.
  o Minor bugfixes (probability distributions):
    - Refactor and improve parts of the probability distribution code
      that made Coverity complain. Fixes bug 29805; bugfix
      on 0.4.0.1-alpha.
  o Minor bugfixes (python):
    - Stop assuming that /usr/bin/python3 exists. For scripts that work
      with python2, use /usr/bin/python. Otherwise, use /usr/bin/env
      python3. Fixes bug 29913; bugfix on 0.2.5.3-alpha.
  o Minor bugfixes (relay):
    - If we are are a relay and have IPv6Exit to 1 while ExitRelay is
      auto, we act as if ExitRelay is 1. Previously, we ignored IPv6Exit
      if ExitRelay was 0 or auto. Fixes bug 29613; bugfix on
      0.3.5.1-alpha. Patch by Neel Chauhan.
  o Minor bugfixes (stats):
    - When ExtraInfoStatistics is 0, stop including bandwidth usage
      statistics, GeoIPFile hashes, ServerTransportPlugin lines, and
      bridge statistics by country in extra-info documents. Fixes bug
      29018; bugfix on 0.2.4.1-alpha.
  o Minor bugfixes (testing):
    - Call setrlimit() to disable core dumps in test_bt_cl.c instead of
      using `ulimit -c` in test_bt.sh, which violates POSIX shell
      compatibility. Fixes bug 29061; bugfix on 0.3.5.1-alpha.
  o Minor bugfixes (testing, v3 onion services):
    - Fix some incorrect code in the v3 onion service unit tests. Fixes
      bug 29243; bugfix on 0.3.2.1-alpha.
  o Minor bugfixes (tor-resolve):
    - Fix a memory leak in tor-resolve that could happen if Tor gave it
      a malformed SOCKS response. (Memory leaks in tor-resolve don't
      actually matter, but it's good to fix them anyway.) Fixes bug
      30151; bugfix on 0.4.0.1-alpha.
  o Minor bugfixes (unit tests):
    - In the "routerkeys/*" tests, check the return values of mkdir()
      for possible failures. Fixes bug 29939; bugfix on 0.2.7.2-alpha.
      Found by Coverity as CID 1444254.
    - Split test_utils_general() to several smaller test functions in
      test_utils_general(). This makes it easier to perform resource
      deallocation on assert failure and fixes Coverity warnings CID
      1444117 and CID 1444118. Fixes bug 29823; bugfix on 0.2.9.1-alpha.
  o Minor bugfixes (v3 onion services):
    - Stop ignoring IPv6 link specifiers sent to v3 onion services. v3
      onion service IPv6 support is still incomplete, see 23493 for
      details. Fixes bug 23588; bugfix on 0.3.2.1-alpha. Patch by
      Neel Chauhan.
  o Code simplification and refactoring:
    - Abstract out the low-level formatting of replies on the control
      port. Implements ticket 30007.
    - Add several assertions in an attempt to fix some Coverity
      warnings. Closes ticket 30149.
    - Introduce a connection_dir_buf_add() helper function that checks
      for compress_state of dir_connection_t and automatically writes a
      string to directory connection with or without compression.
      Resolves issue 28816.
    - Make the base32_decode() API return the number of bytes written,
      for consistency with base64_decode(). Closes ticket 28913.
    - Move most relay-only periodic events out of mainloop.c into the
      relay subsystem. Closes ticket 30414.
    - Refactor and encapsulate parts of the codebase that manipulate
      crypt_path_t objects. Resolves issue 30236.
    - Refactor several places in our code that coverity incorrectly
      believed that we might have memory leaks, so that we can analyze
      our software more easily. Closes ticket 30147.
    - Remove redundant return values in crypto_format, and the
      associated return value checks elsewhere in the code. Make the
      implementations in crypto_format consistent, and remove redundant
      code. Resolves ticket 29660.
    - Rename tor_mem_is_zero() to fast_mem_is_zero(), to emphasize that
      it is not a constant-time function. Closes ticket 30309.
    - Replace hs_desc_link_specifier_t with link_specifier_t, and remove
      all hs_desc_link_specifier_t-specific code. Fixes bug 22781;
      bugfix on 0.3.2.1-alpha.
    - Simplify v3 onion service link specifier handling code. Fixes bug
      23576; bugfix on 0.3.2.1-alpha.
    - Split crypto_digest.c into three parts: 1) general code that does
      not depend on either NSS or OpenSSL (stays in crypto_digest.c); 2)
      code that depends on NSS API (moved to crypto_digest_nss.c); 3)
      code that depends on OpenSSL API (moved to
      crypto_digest_openssl.c). Resolves ticket 29108.
    - Split up the control.c file into several submodules, in
      preparation for distributing its current responsibilities
      throughout the codebase. Closes ticket 29894.
    - Start move responsibility for knowing about periodic events to the
      appropriate subsystems, so that the mainloop doesn't need to know
      all the periodic events in the rest of the codebase. Implements
      tickets 30293 and 30294.
  o Documentation:
    - Document how to find git commits and tags for bug fixes in
      CodingStandards.md. And update some changes file documentation.
      Closes ticket 30261.
  o Removed features:
    - Remove linux-tor-prio.sh script from contrib/operator-tools
      directory. Resolves issue 29434.
    - Remove obsolete OpenSUSE initscript. Resolves issue 30076.
    - Remove the obsolete script at contrib/dist/tor.sh.in. Resolves
      issue 30075.
  o Testing:
    - Check that representative subsets of values of `int` and `unsigned
      int` can be represented by `void *`. Resolves issue 29537.
  o Code simplification and refactoring (circuit padding):
    - Avoid calling monotime_absolute_usec() in circuit padding machines
      that do not use token removal or circuit RTT estimation. Fixes bug
      29085; bugfix on 0.4.0.1-alpha.
  o Code simplification and refactoring (shell scripts):
    - Cleanup autogen.sh to silence shellcheck warnings. Closes
      ticket 26069.
    - Cleanup test_keygen.sh to silence all shellcheck warnings. Closes
      ticket 29062.
    - Cleanup test_switch_id.sh to silence shellcheck warnings. Closes
      ticket 29065.
    - Fix issues shellcheck found in test_rebind.sh. Resolves
      issue 29063.
    - Fix shellcheck warning SC2006 in src/test/fuzz/minimize.sh.
      Resolves issue 30079.
    - Fix shellcheck warning in test_rust.sh. Fixes issue 29064.
    - Fix shellcheck warning in torify script. Resolves issue 29070.
    - Fix shellcheck warnings in asciidoc-helper.sh. Resolves
      issue 29926.
    - Fix shellcheck warnings in fuzz_multi.sh. Resolves issue 30077.
    - Fix shellcheck warnings in fuzz_static_testcases.sh. Resolves
      ticket 29059.
    - Fix shellcheck warnings in nagios-check-tor-authority-cert script.
      Resolves issue 29071.
    - Fix shellcheck warnings in src/test/fuzz/fixup_filenames.sh.
      Resolves issue 30078.
    - Fix shellcheck warnings in test-network.sh. Resolves issue 29060.
    - Fix shellcheck warnings in test_key_expiration.sh. Resolves
      issue 30002.
    - Fix shellcheck warnings in zero_length_keys.sh. Resolves
      issue 29068.
    - Fix test_workqueue_*.sh scripts to silence shellcheck SC2086
      warnings. Fixes issue 29067.
  o Testing (chutney):
    - In "make test-network-all", test IPv6-only v3 single onion
      services, using the chutney network single-onion-v23-ipv6-md. This
      test will not pass until 23588 has been merged. Closes
      ticket 27251.
  o Testing (continuous integration):
    - In Travis, show stem's tor log after failure. Closes ticket 30234.
Changes in version 0.4.0.5 - 2019-05-02
  This is the first stable release in the 0.4.0.x series. It contains
  improvements for power management and bootstrap reporting, as well as

changes/bug17357

deleted100644 → 0
+0 −7
Original line number Diff line number Diff line
  o Minor bugfixes (onion services):
    - If we are relaunching a circuit to a rendevous service in
      rend_service_relaunch_rendezvous() and hs_service_requires_uptime_circ()
      is true, the CIRCLAUNCH_NEED_UPTIME flag is added to the circuit.
      Previously, we only set this flag when we received a INTRODUCE2
      cell in rend_service_receive_introduction(). Fixes bug 17357;
      bugfix on 0.4.0.2-alpha. Patch by Neel Chauhan

changes/bug22210

deleted100644 → 0
+0 −7
Original line number Diff line number Diff line
  o Minor bugfixes (onion services, performance):
    - If we are building circuits to onion services, in circuit_is_acceptable()
      we only call tor_addr_parse() in places where we use the returned
      family and address values from this function. Previously, we called
      tor_addr_parse() in circuit_is_acceptable() even if it wasn't used.
      This change will improve performance when building circuits. Fixes
      bug 22210; bugfix on 0.2.8.12. Patch by Neel Chauhan

changes/bug22781

deleted100644 → 0
+0 −4
Original line number Diff line number Diff line
  o Code simplification and refactoring:
    - Replace hs_desc_link_specifier_t with link_specifier_t,
      and remove all hs_desc_link_specifier_t-specific code.
      Fixes bug 22781; bugfix on 0.3.2.1-alpha.

changes/bug23576

deleted100644 → 0
+0 −7
Original line number Diff line number Diff line
  o Minor features (IPv6, v3 onion services):
    - Make v3 onion services put IPv6 addresses in service
      descriptors. Before this change, service descriptors only
      contained IPv4 addressesd. Implements 26992.
  o Code simplification and refactoring:
    - Simplify v3 onion service link specifier handling code.
      Fixes bug 23576; bugfix on 0.3.2.1-alpha.
Loading