forward-port 0.2.4.1[12] changelogs

This commit is contained in:
Roger Dingledine
2013-04-18 05:48:25 -04:00
parent bb79373fe8
commit 5f035e2c65
+374
View File
@@ -1,3 +1,377 @@
Changes in version 0.2.4.12-alpha - 2013-04-18
Tor 0.2.4.12-alpha moves Tor forward on several fronts: it starts the
process for lengthening the guard rotation period, makes directory
authority opinions in the consensus a bit less gameable, makes socks5
username/password circuit isolation actually work, and fixes a wide
variety of other issues.
o Major features:
- Raise the default time that a client keeps an entry guard from
"1-2 months" to "2-3 months", as suggested by Tariq Elahi's WPES
2012 paper. (We would make it even longer, but we need better client
load balancing first.) Also, make the guard lifetime controllable
via a new GuardLifetime torrc option and a GuardLifetime consensus
parameter. Start of a fix for bug 8240; bugfix on 0.1.1.11-alpha.
- Directory authorities now prefer using measured bandwidths to
advertised ones when computing flags and thresholds. Resolves
ticket 8273.
- Directory authorities that have more than a threshold number
of relays with measured bandwidths now treat relays with unmeasured
bandwidths as having bandwidth 0. Resolves ticket 8435.
o Major bugfixes (assert / resource use):
- Avoid a bug where our response to TLS renegotiation under certain
network conditions could lead to a busy-loop, with 100% CPU
consumption. Fixes bug 5650; bugfix on 0.2.0.16-alpha.
- Avoid an assertion when we discover that we'd like to write a cell
onto a closing connection: just discard the cell. Fixes another
case of bug 7350; bugfix on 0.2.4.4-alpha.
o Major bugfixes (client-side privacy):
- When we mark a circuit as unusable for new circuits, have it
continue to be unusable for new circuits even if MaxCircuitDirtiness
is increased too much at the wrong time, or the system clock jumps
backwards. Fixes bug 6174; bugfix on 0.0.2pre26.
- If ClientDNSRejectInternalAddresses ("do not believe DNS queries
which have resolved to internal addresses") is set, apply that
rule to IPv6 as well. Fixes bug 8475; bugfix on 0.2.0.7-alpha.
- When an exit relay rejects a stream with reason "exit policy", but
we only know an exit policy summary (e.g. from the microdesc
consensus) for it, do not mark the relay as useless for all exiting.
Instead, mark just the circuit as unsuitable for that particular
address. Fixes part of bug 7582; bugfix on 0.2.3.2-alpha.
- Allow applications to get proper stream isolation with
IsolateSOCKSAuth. Many SOCKS5 clients that want to offer
username/password authentication also offer "no authentication". Tor
had previously preferred "no authentication", so the applications
never actually sent Tor their auth details. Now Tor selects
username/password authentication if it's offered. You can disable
this behavior on a per-SOCKSPort basis via PreferSOCKSNoAuth. Fixes
bug 8117; bugfix on 0.2.3.3-alpha.
o Major bugfixes (other):
- When unable to find any working directory nodes to use as a
directory guard, give up rather than adding the same non-working
nodes to the directory guard list over and over. Fixes bug 8231;
bugfix on 0.2.4.8-alpha.
o Minor features:
- Reject as invalid most directory objects containing a NUL.
Belt-and-suspender fix for bug 8037.
- In our testsuite, create temporary directories with a bit more
entropy in their name to make name collisions less likely. Fixes
bug 8638.
- Add CACHED keyword to ADDRMAP events in the control protocol
to indicate whether a DNS result will be cached or not. Resolves
ticket 8596.
- Update to the April 3 2013 Maxmind GeoLite Country database.
o Minor features (build):
- Detect and reject attempts to build Tor with threading support
when OpenSSL has been compiled without threading support.
Fixes bug 6673.
- Clarify that when autoconf is checking for nacl, it is checking
specifically for nacl with a fast curve25519 implementation.
Fixes bug 8014.
- Warn if building on a platform with an unsigned time_t: there
are too many places where Tor currently assumes that time_t can
hold negative values. We'd like to fix them all, but probably
some will remain.
o Minor bugfixes (build):
- Fix some bugs in tor-fw-helper-natpmp when trying to build and
run it on Windows. More bugs likely remain. Patch from Gisle Vanem.
Fixes bug 7280; bugfix on 0.2.3.1-alpha.
- Add the old src/or/micro-revision.i filename to CLEANFILES.
On the off chance that somebody has one, it will go away as soon
as they run "make clean". Fix for bug 7143; bugfix on 0.2.4.1-alpha.
- Build Tor correctly on 32-bit platforms where the compiler can build
but not run code using the "uint128_t" construction. Fixes bug 8587;
bugfix on 0.2.4.8-alpha.
- Fix compilation warning with some versions of clang that would
prefer the -Wswitch-enum compiler flag to warn about switch
statements with missing enum values, even if those switch
statements have a "default:" statement. Fixes bug 8598; bugfix
on 0.2.4.10-alpha.
o Minor bugfixes (protocol):
- Fix the handling of a TRUNCATE cell when it arrives while the
circuit extension is in progress. Fixes bug 7947; bugfix on 0.0.7.1.
- Fix a misframing issue when reading the version numbers in a
VERSIONS cell. Previously we would recognize [00 01 00 02] as
'version 1, version 2, and version 0x100', when it should have
only included versions 1 and 2. Fixes bug 8059; bugfix on
0.2.0.10-alpha. Reported pseudonymously.
- Make the format and order of STREAM events for DNS lookups
consistent among the various ways to launch DNS lookups. Fixes
bug 8203; bugfix on 0.2.0.24-rc. Patch by "Desoxy."
- Correct our check for which versions of Tor support the EXTEND2
cell. We had been willing to send it to Tor 0.2.4.7-alpha and
later, when support was really added in version 0.2.4.8-alpha.
Fixes bug 8464; bugfix on 0.2.4.8-alpha.
o Minor bugfixes (other):
- Correctly store microdescriptors and extrainfo descriptors with
an internal NUL byte. Fixes bug 8037; bugfix on 0.2.0.1-alpha.
Bug reported by "cypherpunks".
- Increase the width of the field used to remember a connection's
link protocol version to two bytes. Harmless for now, since the
only currently recognized versions are one byte long. Reported
pseudonymously. Fixes bug 8062; bugfix on 0.2.0.10-alpha.
- If the state file's path bias counts are invalid (presumably from a
buggy Tor prior to 0.2.4.10-alpha), make them correct. Also add
additional checks and log messages to the scaling of Path Bias
counts, in case there still are remaining issues with scaling.
Should help resolve bug 8235.
- Eliminate several instances where we use "Nickname=ID" to refer to
nodes in logs. Use "Nickname (ID)" instead. (Elsewhere, we still use
"$ID=Nickname", which is also acceptable.) Fixes bug 7065. Bugfix
on 0.2.3.21-rc, 0.2.4.5-alpha, 0.2.4.8-alpha, and 0.2.4.10-alpha.
o Minor bugfixes (syscalls):
- Always check the return values of functions fcntl() and
setsockopt(). We don't believe these are ever actually failing in
practice, but better safe than sorry. Also, checking these return
values should please analysis tools like Coverity. Patch from
'flupzor'. Fixes bug 8206; bugfix on all versions of Tor.
- Use direct writes rather than stdio when building microdescriptor
caches, in an attempt to mitigate bug 8031, or at least make it
less common.
o Minor bugfixes (config):
- When rejecting a configuration because we were unable to parse a
quoted string, log an actual error message. Fixes bug 7950; bugfix
on 0.2.0.16-alpha.
- Behave correctly when the user disables LearnCircuitBuildTimeout
but doesn't tell us what they would like the timeout to be. Fixes
bug 6304; bugfix on 0.2.2.14-alpha.
- When autodetecting the number of CPUs, use the number of available
CPUs in preference to the number of configured CPUs. Inform the
user if this reduces the number of available CPUs. Fixes bug 8002;
bugfix on 0.2.3.1-alpha.
- Make it an error when you set EntryNodes but disable UseGuardNodes,
since it will (surprisingly to some users) ignore EntryNodes. Fixes
bug 8180; bugfix on 0.2.3.11-alpha.
- Allow TestingTorNetworks to override the 4096-byte minimum for
the Fast threshold. Otherwise they can't bootstrap until they've
observed more traffic. Fixes bug 8508; bugfix on 0.2.4.10-alpha.
- Fix some logic errors when the user manually overrides the
PathsNeededToBuildCircuits option in torrc. Fixes bug 8599; bugfix
on 0.2.4.10-alpha.
o Minor bugfixes (log messages to help diagnose bugs):
- If we fail to free a microdescriptor because of bug 7164, log
the filename and line number from which we tried to free it.
- Add another diagnostic to the heartbeat message: track and log
overhead that TLS is adding to the data we write. If this is
high, we are sending too little data to SSL_write at a time.
Diagnostic for bug 7707.
- Add more detail to a log message about relaxed timeouts, to help
track bug 7799.
- Warn more aggressively when flushing microdescriptors to a
microdescriptor cache fails, in an attempt to mitigate bug 8031,
or at least make it more diagnosable.
- Improve debugging output to help track down bug 8185 ("Bug:
outgoing relay cell has n_chan==NULL. Dropping.")
- Log the purpose of a path-bias testing circuit correctly.
Improves a log message from bug 8477; bugfix on 0.2.4.8-alpha.
o Minor bugfixes (0.2.4.x log messages that were too noisy):
- Don't attempt to relax the timeout of already opened 1-hop circuits.
They might never timeout. This should eliminate some/all cases of
the relaxed timeout log message.
- Use circuit creation time for network liveness evaluation. This
should eliminate warning log messages about liveness caused
by changes in timeout evaluation. Fixes bug 6572; bugfix on
0.2.4.8-alpha.
- Reduce a path bias length check from notice to info. The message
is triggered when creating controller circuits. Fixes bug 8196;
bugfix on 0.2.4.8-alpha.
- Fix a path state issue that triggered a notice during relay startup.
Fixes bug 8320; bugfix on 0.2.4.10-alpha.
- Reduce occurrences of warns about circuit purpose in
connection_ap_expire_building(). Fixes bug 8477; bugfix on
0.2.4.11-alpha.
o Minor bugfixes (pre-0.2.4.x log messages that were too noisy):
- If we encounter a write failure on a SOCKS connection before we
finish our SOCKS handshake, don't warn that we closed the
connection before we could send a SOCKS reply. Fixes bug 8427;
bugfix on 0.1.0.1-rc.
- Correctly recognize that [::1] is a loopback address. Fixes
bug 8377; bugfix on 0.2.1.3-alpha.
- Fix a directory authority warn caused when we have a large amount
of badexit bandwidth. Fixes bug 8419; bugfix on 0.2.2.10-alpha.
- Don't log inappropriate heartbeat messages when hibernating: a
hibernating node is _expected_ to drop out of the consensus,
decide it isn't bootstrapped, and so forth. Fixes bug 7302;
bugfix on 0.2.3.1-alpha.
- Don't complain about bootstrapping problems while hibernating.
These complaints reflect a general code problem, but not one
with any problematic effects (no connections are actually
opened). Fixes part of bug 7302; bugfix on 0.2.3.2-alpha.
o Documentation fixes:
- Update tor-fw-helper.1.txt and tor-fw-helper.c to make option
names match. Fixes bug 7768.
- Make the torify manpage no longer refer to tsocks; torify hasn't
supported tsocks since 0.2.3.14-alpha.
- Make the tor manpage no longer reference tsocks.
- Fix the GeoIPExcludeUnknown documentation to refer to
ExcludeExitNodes rather than the currently nonexistent
ExcludeEntryNodes. Spotted by "hamahangi" on tor-talk.
o Removed files:
- The tor-tsocks.conf is no longer distributed or installed. We
recommend that tsocks users use torsocks instead. Resolves
ticket 8290.
Changes in version 0.2.4.11-alpha - 2013-03-11
Tor 0.2.4.11-alpha makes relay measurement by directory authorities
more robust, makes hidden service authentication work again, and
resolves a DPI fingerprint for Tor's SSL transport.
o Major features (directory authorities):
- Directory authorities now support a new consensus method (17)
where they cap the published bandwidth of servers for which
insufficient bandwidth measurements exist. Fixes part of bug 2286.
- Directory authorities that set "DisableV2DirectoryInfo_ 1" no longer
serve any v2 directory information. Now we can test disabling the
old deprecated v2 directory format, and see whether doing so has
any effect on network load. Begins to fix bug 6783.
- Directory authorities now include inside each vote a statement of
the performance thresholds they used when assigning flags.
Implements ticket 8151.
o Major bugfixes (directory authorities):
- Stop marking every relay as having been down for one hour every
time we restart a directory authority. These artificial downtimes
were messing with our Stable and Guard flag calculations. Fixes
bug 8218 (introduced by the fix for 1035). Bugfix on 0.2.2.23-alpha.
o Major bugfixes (hidden services):
- Allow hidden service authentication to succeed again. When we
refactored the hidden service introduction code back
in 0.2.4.1-alpha, we didn't update the code that checks
whether authentication information is present, causing all
authentication checks to return "false". Fix for bug 8207; bugfix
on 0.2.4.1-alpha. Found by Coverity; this is CID 718615.
o Minor features (relays, bridges):
- Make bridge relays check once a minute for whether their IP
address has changed, rather than only every 15 minutes. Resolves
bugs 1913 and 1992.
- Refactor resolve_my_address() so it returns the method by which we
decided our public IP address (explicitly configured, resolved from
explicit hostname, guessed from interfaces, learned by gethostname).
Now we can provide more helpful log messages when a relay guesses
its IP address incorrectly (e.g. due to unexpected lines in
/etc/hosts). Resolves ticket 2267.
- Teach bridge-using clients to avoid 0.2.2 bridges when making
microdescriptor-related dir requests, and only fall back to normal
descriptors if none of their bridges can handle microdescriptors
(as opposed to the fix in ticket 4013, which caused them to fall
back to normal descriptors if *any* of their bridges preferred
them). Resolves ticket 4994.
- Randomize the lifetime of our SSL link certificate, so censors can't
use the static value for filtering Tor flows. Resolves ticket 8443;
related to ticket 4014 which was included in 0.2.2.33.
o Minor features (portability):
- Tweak the curve25519-donna*.c implementations to tolerate systems
that lack stdint.h. Fixes bug 3894; bugfix on 0.2.4.8-alpha.
- Use Ville Laurikari's implementation of AX_CHECK_SIGN() to determine
the signs of types during autoconf. This is better than our old
approach, which didn't work when cross-compiling.
- Detect the sign of enum values, rather than assuming that MSC is the
only compiler where enum types are all signed. Fixes bug 7727;
bugfix on 0.2.4.10-alpha.
o Minor features (other):
- Say "KBytes" rather than "KB" in the man page (for various values
of K), to further reduce confusion about whether Tor counts in
units of memory or fractions of units of memory. Resolves ticket 7054.
- Clear the high bit on curve25519 public keys before passing them to
our backend, in case we ever wind up using a backend that doesn't do
so itself. If we used such a backend, and *didn't* clear the high bit,
we could wind up in a situation where users with such backends would
be distinguishable from users without. Fixes bug 8121; bugfix on
0.2.4.8-alpha.
- Update to the March 6 2013 Maxmind GeoLite Country database.
o Minor bugfixes (clients):
- When we receive a RELAY_END cell with the reason DONE, or with no
reason, before receiving a RELAY_CONNECTED cell, report the SOCKS
status as "connection refused". Previously we reported these cases
as success but then immediately closed the connection. Fixes bug
7902; bugfix on 0.1.0.1-rc. Reported by "oftc_must_be_destroyed".
- Downgrade an assertion in connection_ap_expire_beginning to an
LD_BUG message. The fix for bug 8024 should prevent this message
from displaying, but just in case, a warn that we can diagnose
is better than more assert crashes. Fixes bug 8065; bugfix on
0.2.4.8-alpha.
- Lower path use bias thresholds to .80 for notice and .60 for warn.
Also make the rate limiting flags for the path use bias log messages
independent from the original path bias flags. Fixes bug 8161;
bugfix on 0.2.4.10-alpha.
o Minor bugfixes (relays):
- Stop trying to resolve our hostname so often (e.g. every time we
think about doing a directory fetch). Now we reuse the cached
answer in some cases. Fixes bugs 1992 (bugfix on 0.2.0.20-rc)
and 2410 (bugfix on 0.1.2.2-alpha).
- Stop sending a stray "(null)" in some cases for the server status
"EXTERNAL_ADDRESS" controller event. Resolves bug 8200; bugfix
on 0.1.2.6-alpha.
- When choosing which stream on a formerly stalled circuit to wake
first, make better use of the platform's weak RNG. Previously,
we had been using the % ("modulo") operator to try to generate a
1/N chance of picking each stream, but this behaves badly with
many platforms' choice of weak RNG. Fixes bug 7801; bugfix on
0.2.2.20-alpha.
- Use our own weak RNG when we need a weak RNG. Windows's rand() and
Irix's random() only return 15 bits; Solaris's random() returns more
bits but its RAND_MAX says it only returns 15, and so on. Motivated
by the fix for bug 7801; bugfix on 0.2.2.20-alpha.
o Minor bugfixes (directory authorities):
- Directory authorities now use less space when formatting identical
microdescriptor lines in directory votes. Fixes bug 8158; bugfix
on 0.2.4.1-alpha.
o Minor bugfixes (memory leaks spotted by Coverity -- bug 7816):
- Avoid leaking memory if we fail to compute a consensus signature
or we generate a consensus we can't parse. Bugfix on 0.2.0.5-alpha.
- Fix a memory leak when receiving headers from an HTTPS proxy. Bugfix
on 0.2.1.1-alpha.
- Fix a memory leak during safe-cookie controller authentication.
Bugfix on 0.2.3.13-alpha.
- Avoid memory leak of IPv6 policy content if we fail to format it into
a router descriptor. Bugfix on 0.2.4.7-alpha.
o Minor bugfixes (other code correctness issues):
- Avoid a crash if we fail to generate an extrainfo descriptor.
Fixes bug 8208; bugfix on 0.2.3.16-alpha. Found by Coverity;
this is CID 718634.
- When detecting the largest possible file descriptor (in order to
close all file descriptors when launching a new program), actually
use _SC_OPEN_MAX. The old code for doing this was very, very broken.
Fixes bug 8209; bugfix on 0.2.3.1-alpha. Found by Coverity; this
is CID 743383.
- Fix a copy-and-paste error when adding a missing A1 to a routerset
because of GeoIPExcludeUnknown. Fix for Coverity CID 980650.
Bugfix on 0.2.4.10-alpha.
- Fix an impossible-to-trigger integer overflow when estimating how
long our onionskin queue would take. (This overflow would require us
to accept 4 million onionskins before processing 100 of them.) Fixes
bug 8210; bugfix on 0.2.4.10-alpha.
o Code simplification and refactoring:
- Add a wrapper function for the common "log a message with a
rate-limit" case.
Changes in version 0.2.4.10-alpha - 2013-02-04
Tor 0.2.4.10-alpha adds defenses at the directory authority level from
certain attacks that flood the network with relays; changes the queue