|  | @@ -3,6 +3,127 @@ 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.2.0.33 - 2009-01-21
 | 
	
		
			
				|  |  | +  Tor 0.2.0.33 fixes a variety of bugs that were making relays less
 | 
	
		
			
				|  |  | +  useful to users. It also finally fixes a bug where a relay or client
 | 
	
		
			
				|  |  | +  that's been off for many days would take a long time to bootstrap.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  This update also fixes an important security-related bug reported by
 | 
	
		
			
				|  |  | +  Ilja van Sprundel. You should upgrade. (We'll send out more details
 | 
	
		
			
				|  |  | +  about the bug once people have had some time to upgrade.)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  o Security fixes:
 | 
	
		
			
				|  |  | +    - Fix a heap-corruption bug that may be remotely triggerable on
 | 
	
		
			
				|  |  | +      some platforms. Reported by Ilja van Sprundel.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  o Major bugfixes:
 | 
	
		
			
				|  |  | +    - When a stream at an exit relay is in state "resolving" or
 | 
	
		
			
				|  |  | +      "connecting" and it receives an "end" relay cell, the exit relay
 | 
	
		
			
				|  |  | +      would silently ignore the end cell and not close the stream. If
 | 
	
		
			
				|  |  | +      the client never closes the circuit, then the exit relay never
 | 
	
		
			
				|  |  | +      closes the TCP connection. Bug introduced in Tor 0.1.2.1-alpha;
 | 
	
		
			
				|  |  | +      reported by "wood".
 | 
	
		
			
				|  |  | +    - When sending CREATED cells back for a given circuit, use a 64-bit
 | 
	
		
			
				|  |  | +      connection ID to find the right connection, rather than an addr:port
 | 
	
		
			
				|  |  | +      combination. Now that we can have multiple OR connections between
 | 
	
		
			
				|  |  | +      the same ORs, it is no longer possible to use addr:port to uniquely
 | 
	
		
			
				|  |  | +      identify a connection.
 | 
	
		
			
				|  |  | +    - Bridge relays that had DirPort set to 0 would stop fetching
 | 
	
		
			
				|  |  | +      descriptors shortly after startup, and then briefly resume
 | 
	
		
			
				|  |  | +      after a new bandwidth test and/or after publishing a new bridge
 | 
	
		
			
				|  |  | +      descriptor. Bridge users that try to bootstrap from them would
 | 
	
		
			
				|  |  | +      get a recent networkstatus but would get descriptors from up to
 | 
	
		
			
				|  |  | +      18 hours earlier, meaning most of the descriptors were obsolete
 | 
	
		
			
				|  |  | +      already. Reported by Tas; bugfix on 0.2.0.13-alpha.
 | 
	
		
			
				|  |  | +    - Prevent bridge relays from serving their 'extrainfo' document
 | 
	
		
			
				|  |  | +      to anybody who asks, now that extrainfo docs include potentially
 | 
	
		
			
				|  |  | +      sensitive aggregated client geoip summaries. Bugfix on
 | 
	
		
			
				|  |  | +      0.2.0.13-alpha.
 | 
	
		
			
				|  |  | +    - If the cached networkstatus consensus is more than five days old,
 | 
	
		
			
				|  |  | +      discard it rather than trying to use it. In theory it could be
 | 
	
		
			
				|  |  | +      useful because it lists alternate directory mirrors, but in practice
 | 
	
		
			
				|  |  | +      it just means we spend many minutes trying directory mirrors that
 | 
	
		
			
				|  |  | +      are long gone from the network. Also discard router descriptors as
 | 
	
		
			
				|  |  | +      we load them if they are more than five days old, since the onion
 | 
	
		
			
				|  |  | +      key is probably wrong by now. Bugfix on 0.2.0.x. Fixes bug 887.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  o Minor bugfixes:
 | 
	
		
			
				|  |  | +    - Do not mark smartlist_bsearch_idx() function as ATTR_PURE. This bug
 | 
	
		
			
				|  |  | +      could make gcc generate non-functional binary search code. Bugfix
 | 
	
		
			
				|  |  | +      on 0.2.0.10-alpha.
 | 
	
		
			
				|  |  | +    - Build correctly on platforms without socklen_t.
 | 
	
		
			
				|  |  | +    - Compile without warnings on solaris.
 | 
	
		
			
				|  |  | +    - Avoid potential crash on internal error during signature collection.
 | 
	
		
			
				|  |  | +      Fixes bug 864. Patch from rovv.
 | 
	
		
			
				|  |  | +    - Correct handling of possible malformed authority signing key
 | 
	
		
			
				|  |  | +      certificates with internal signature types. Fixes bug 880.
 | 
	
		
			
				|  |  | +      Bugfix on 0.2.0.3-alpha.
 | 
	
		
			
				|  |  | +    - Fix a hard-to-trigger resource leak when logging credential status.
 | 
	
		
			
				|  |  | +      CID 349.
 | 
	
		
			
				|  |  | +    - When we can't initialize DNS because the network is down, do not
 | 
	
		
			
				|  |  | +      automatically stop Tor from starting. Instead, we retry failed
 | 
	
		
			
				|  |  | +      dns_init() every 10 minutes, and change the exit policy to reject
 | 
	
		
			
				|  |  | +      *:* until one succeeds. Fixes bug 691.
 | 
	
		
			
				|  |  | +    - Use 64 bits instead of 32 bits for connection identifiers used with
 | 
	
		
			
				|  |  | +      the controller protocol, to greatly reduce risk of identifier reuse.
 | 
	
		
			
				|  |  | +    - When we're choosing an exit node for a circuit, and we have
 | 
	
		
			
				|  |  | +      no pending streams, choose a good general exit rather than one that
 | 
	
		
			
				|  |  | +      supports "all the pending streams". Bugfix on 0.1.1.x. Fix by rovv.
 | 
	
		
			
				|  |  | +    - Fix another case of assuming, when a specific exit is requested,
 | 
	
		
			
				|  |  | +      that we know more than the user about what hosts it allows.
 | 
	
		
			
				|  |  | +      Fixes one case of bug 752. Patch from rovv.
 | 
	
		
			
				|  |  | +    - Clip the MaxCircuitDirtiness config option to a minimum of 10
 | 
	
		
			
				|  |  | +      seconds. Warn the user if lower values are given in the
 | 
	
		
			
				|  |  | +      configuration. Bugfix on 0.1.0.1-rc. Patch by Sebastian.
 | 
	
		
			
				|  |  | +    - Clip the CircuitBuildTimeout to a minimum of 30 seconds. Warn the
 | 
	
		
			
				|  |  | +      user if lower values are given in the configuration. Bugfix on
 | 
	
		
			
				|  |  | +      0.1.1.17-rc. Patch by Sebastian.
 | 
	
		
			
				|  |  | +    - Fix a memory leak when we decline to add a v2 rendezvous descriptor to
 | 
	
		
			
				|  |  | +      the cache because we already had a v0 descriptor with the same ID.
 | 
	
		
			
				|  |  | +      Bugfix on 0.2.0.18-alpha.
 | 
	
		
			
				|  |  | +    - Fix a race condition when freeing keys shared between main thread
 | 
	
		
			
				|  |  | +      and CPU workers that could result in a memory leak. Bugfix on
 | 
	
		
			
				|  |  | +      0.1.0.1-rc. Fixes bug 889.
 | 
	
		
			
				|  |  | +    - Send a valid END cell back when a client tries to connect to a
 | 
	
		
			
				|  |  | +      nonexistent hidden service port. Bugfix on 0.1.2.15. Fixes bug
 | 
	
		
			
				|  |  | +      840. Patch from rovv.
 | 
	
		
			
				|  |  | +    - Check which hops rendezvous stream cells are associated with to
 | 
	
		
			
				|  |  | +      prevent possible guess-the-streamid injection attacks from
 | 
	
		
			
				|  |  | +      intermediate hops. Fixes another case of bug 446. Based on patch
 | 
	
		
			
				|  |  | +      from rovv.
 | 
	
		
			
				|  |  | +    - If a broken client asks a non-exit router to connect somewhere,
 | 
	
		
			
				|  |  | +      do not even do the DNS lookup before rejecting the connection.
 | 
	
		
			
				|  |  | +      Fixes another case of bug 619. Patch from rovv.
 | 
	
		
			
				|  |  | +    - When a relay gets a create cell it can't decrypt (e.g. because it's
 | 
	
		
			
				|  |  | +      using the wrong onion key), we were dropping it and letting the
 | 
	
		
			
				|  |  | +      client time out. Now actually answer with a destroy cell. Fixes
 | 
	
		
			
				|  |  | +      bug 904. Bugfix on 0.0.2pre8.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  o Minor bugfixes (hidden services):
 | 
	
		
			
				|  |  | +    - Do not throw away existing introduction points on SIGHUP. Bugfix on
 | 
	
		
			
				|  |  | +      0.0.6pre1. Patch by Karsten. Fixes bug 874.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  o Minor features:
 | 
	
		
			
				|  |  | +    - Report the case where all signatures in a detached set are rejected
 | 
	
		
			
				|  |  | +      differently than the case where there is an error handling the
 | 
	
		
			
				|  |  | +      detached set.
 | 
	
		
			
				|  |  | +    - When we realize that another process has modified our cached
 | 
	
		
			
				|  |  | +      descriptors, print out a more useful error message rather than
 | 
	
		
			
				|  |  | +      triggering an assertion. Fixes bug 885. Patch from Karsten.
 | 
	
		
			
				|  |  | +    - Implement the 0x20 hack to better resist DNS poisoning: set the
 | 
	
		
			
				|  |  | +      case on outgoing DNS requests randomly, and reject responses that do
 | 
	
		
			
				|  |  | +      not match the case correctly. This logic can be disabled with the
 | 
	
		
			
				|  |  | +      ServerDNSRamdomizeCase setting, if you are using one of the 0.3%
 | 
	
		
			
				|  |  | +      of servers that do not reliably preserve case in replies. See
 | 
	
		
			
				|  |  | +      "Increased DNS Forgery Resistance through 0x20-Bit Encoding"
 | 
	
		
			
				|  |  | +      for more info.
 | 
	
		
			
				|  |  | +    - Check DNS replies for more matching fields to better resist DNS
 | 
	
		
			
				|  |  | +      poisoning.
 | 
	
		
			
				|  |  | +    - Never use OpenSSL compression: it wastes RAM and CPU trying to
 | 
	
		
			
				|  |  | +      compress cells, which are basically all encrypted, compressed, or
 | 
	
		
			
				|  |  | +      both.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  Changes in version 0.2.0.32 - 2008-11-20
 | 
	
		
			
				|  |  |    Tor 0.2.0.32 fixes a major security problem in Debian and Ubuntu
 | 
	
		
			
				|  |  |    packages (and maybe other packages) noticed by Theo de Raadt, fixes
 |