ChangeLog 1.44 MB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
Changes in version 0.3.4.7-rc - 2018-08-24
  Tor 0.3.4.7-rc fixes several small compilation, portability, and
  correctness issues in previous versions of Tor. This version is a
  release candidate: if no serious bugs are found, we expect that the
  stable 0.3.4 release will be (almost) the same as this release.

  o Minor features (bug workaround):
    - Compile correctly on systems that provide the C11 stdatomic.h
      header, but where C11 atomic functions don't actually compile.
      Closes ticket 26779; workaround for Debian issue 903709.

  o Minor features (continuous integration):
    - Backport Travis rust distcheck to 0.3.3. Closes ticket 24629.
    - Enable macOS builds in our Travis CI configuration. Closes
      ticket 24629.
    - Install libcap-dev and libseccomp2-dev so these optional
      dependencies get tested on Travis CI. Closes ticket 26560.
    - Only post Appveyor IRC notifications when the build fails.
      Implements ticket 27275.
    - Run asciidoc during Travis CI. Implements ticket 27087.
    - Use ccache in our Travis CI configuration. Closes ticket 26952.

  o Minor features (continuous integration, rust):
    - Use cargo cache in our Travis CI configuration. Closes
      ticket 26952.

  o Minor features (directory authorities):
    - Authorities no longer vote to make the subprotocol version
      "LinkAuth=1" a requirement: it is unsupportable with NSS, and
      hasn't been needed since Tor 0.3.0.1-alpha. Closes ticket 27286.

  o Minor features (geoip):
    - Update geoip and geoip6 to the August 7 2018 Maxmind GeoLite2
      Country database. Closes ticket 27089.

  o Minor bugfixes (compilation, windows):
    - Don't link or search for pthreads when building for Windows, even
      if we are using build environment (like mingw) that provides a
      pthreads library. Fixes bug 27081; bugfix on 0.1.0.1-rc.

  o Minor bugfixes (continuous integration):
    - Improve Appveyor CI IRC logging. Generate correct branches and
      URLs for pull requests and tags. Use unambiguous short commits.
      Fixes bug 26979; bugfix on master.
    - Build with zstd on macOS. Fixes bug 27090; bugfix on 0.3.1.5-alpha.
    - Pass the module flags to distcheck configure, and log the flags
      before running configure. (Backported to 0.2.9 and later as a
      precaution.) Fixes bug 27088; bugfix on 0.3.4.1-alpha.

  o Minor bugfixes (in-process restart):
    - Always call tor_free_all() when leaving tor_run_main(). When we
      did not, restarting tor in-process would cause an assertion
      failure. Fixes bug 26948; bugfix on 0.3.3.1-alpha.

  o Minor bugfixes (linux seccomp2 sandbox):
    - Fix a bug in out sandboxing rules for the openat() syscall.
      Previously, no openat() call would be permitted, which would break
      filesystem operations on recent glibc versions. Fixes bug 25440;
      bugfix on 0.2.9.15. Diagnosis and patch from Daniel Pinto.

  o Minor bugfixes (onion services):
    - Fix bug that causes services to not ever rotate their descriptors
      if they were getting SIGHUPed often. Fixes bug 26932; bugfix
      on 0.3.2.1-alpha.

  o Minor bugfixes (portability):
    - Fix compilation of the unit tests on GNU/Hurd, which does not
      define PATH_MAX. Fixes bug 26873; bugfix on 0.3.3.1-alpha. Patch
      from "paulusASol".

  o Minor bugfixes (rust):
    - Backport test_rust.sh from master. Fixes bug 26497; bugfix
      on 0.3.1.5-alpha.
    - Consistently use ../../.. as a fallback for $abs_top_srcdir in
      test_rust.sh. Fixes bug 27093; bugfix on 0.3.4.3-alpha.
    - Protover parsing was accepting the presence of whitespace in
      version strings, which the C implementation would choke on, e.g.
      "Desc=1\t,2". Fixes bug 27177; bugfix on 0.3.3.5-rc.
    - Protover parsing was ignoring a 2nd hyphen and everything after
      it, accepting entries like "Link=1-5-foo". Fixes bug 27164; bugfix
      on 0.3.3.1-alpha.
    - Stop setting $CARGO_HOME. cargo will use the user's $CARGO_HOME, or
      $HOME/.cargo by default. Fixes bug 26497; bugfix on 0.3.1.5-alpha.
    - cd to ${abs_top_builddir}/src/rust before running cargo in
      src/test/test_rust.sh. This makes the working directory consistent
      between builds and tests. Fixes bug 26497; bugfix on 0.3.3.2-alpha.

  o Minor bugfixes (testing, bootstrap):
    - When calculating bootstrap progress, check exit policies and the
      exit flag. Previously, Tor would only check the exit flag, which
      caused race conditions in small and fast networks like chutney.
      Fixes bug 27236; bugfix on 0.2.6.3-alpha.

  o Minor bugfixes (testing, openssl compatibility):
    - Our "tortls/cert_matches_key" unit test no longer relies on
      OpenSSL internals. Previously, it relied on unsupported OpenSSL
      behavior in a way that caused it to crash with OpenSSL 1.0.2p.
      Fixes bug 27226; bugfix on 0.2.5.1-alpha.

  o Minor bugfixes (Windows, compilation):
    - Silence a compilation warning on MSVC 2017 and clang-cl. Fixes bug
      27185; bugfix on 0.2.2.2-alpha.


105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
Changes in version 0.3.4.6-rc - 2018-08-06
  Tor 0.3.4.6-rc fixes several small compilation, portability, and
  correctness issues in previous versions of Tor. This version is a
  release candidate: if no serious bugs are found, we expect that the
  stable 0.3.4 release will be (almost) the same as this release.

  o Major bugfixes (event scheduler):
    - When we enable a periodic event, schedule it in the event loop
      rather than running it immediately. Previously, we would re-run
      periodic events immediately in the middle of (for example)
      changing our options, with unpredictable effects. Fixes bug 27003;
      bugfix on 0.3.4.1-alpha.

  o Minor features (compilation):
    - When building Tor, prefer to use Python 3 over Python 2, and more
      recent (contemplated) versions over older ones. Closes
      ticket 26372.
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
    - When compiling with --enable-openbsd-malloc or --enable-tcmalloc,
      tell the compiler not to include the system malloc implementation.
      Fixes bug 20424; bugfix on 0.2.0.20-rc.
    - Don't try to use a pragma to temporarily disable the
      -Wunused-const-variable warning if the compiler doesn't support
      it. Fixes bug 26785; bugfix on 0.3.2.11.

  o Minor bugfixes (continuous integration):
    - Skip a pair of unreliable key generation tests on Windows, until
      the underlying issue in bug 26076 is resolved. Fixes bug 26830 and
      bug 26853; bugfix on 0.2.7.3-rc and 0.3.2.1-alpha respectively.

  o Minor features (controller):
    - The control port now exposes the list of HTTPTunnelPorts and
      ExtOrPorts via GETINFO net/listeners/httptunnel and
      net/listeners/extor respectively. Closes ticket 26647.

  o Minor bugfixes (directory authority):
    - When voting for recommended versions, make sure that all of the
      versions are well-formed and parsable. Fixes bug 26485; bugfix
      on 0.1.1.6-alpha.
143
144
145
146
147
148
149
150
151

  o Minor features (geoip):
    - Update geoip and geoip6 to the July 3 2018 Maxmind GeoLite2
      Country database. Closes ticket 26674.

  o Minor features (Rust, portability):
    - Rust cross-compilation is now supported. Closes ticket 25895.

  o Minor bugfixes (compilation):
152
153
    - Update build system so that tor builds again with --disable-unittests
      after recent refactoring. Fixes bug 26789; bugfix on 0.3.4.3-alpha.
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
    - Fix a compilation warning on some versions of GCC when building
      code that calls routerinfo_get_my_routerinfo() twice, assuming
      that the second call will succeed if the first one did. Fixes bug
      26269; bugfix on 0.2.8.2-alpha.

  o Minor bugfixes (controller):
    - Report the port correctly when a port is configured to bind to
      "auto". Fixes bug 26568; bugfix on 0.3.4.1-alpha.
    - Parse the "HSADDRESS=" parameter in HSPOST commands properly.
      Previously, it was misparsed and ignored. Fixes bug 26523; bugfix
      on 0.3.3.1-alpha. Patch by "akwizgran".

  o Minor bugfixes (correctness, flow control):
    - Upon receiving a stream-level SENDME cell, verify that our window
      has not grown too large. Fixes bug 26214; bugfix on svn
      r54 (pre-0.0.1)

  o Minor bugfixes (memory, correctness):
    - Fix a number of small memory leaks identified by coverity. Fixes
      bug 26467; bugfix on numerous Tor versions.

175
176
177
178
179
  o Minor bugfixes (logging):
    - Improve the log message when connection initiators fail to
      authenticate direct connections to relays. Fixes bug 26927; bugfix
      on 0.3.0.1-alpha.

180
181
182
  o Minor bugfixes (portability):
    - Avoid a compilation error in test_bwmgt.c on Solaris 10. Fixes bug
      26994; bugfix on 0.3.4.1-alpha.
183
184
185
186
187
188
189
190
191
192
193
194
    - Work around two different bugs in the OS X 10.10 and later SDKs
      that would prevent us from successfully targeting earlier versions
      of OS X. Fixes bug 26876; bugfix on 0.3.3.1-alpha.

  o Minor bugfixes (single onion services, Tor2web):
    - Log a protocol warning when single onion services or Tor2web
      clients fail to authenticate direct connections to relays. Fixes
      bug 26924; bugfix on 0.2.9.1-alpha.

  o Minor bugfixes (testing):
    - Disable core dumps in test_bt.sh, to avoid failures in "make
      distcheck". Fixes bug 26787; bugfix on 0.2.5.2-alpha.
195
196
197
198
199
200
201
202

  o Minor bugfixes (testing, compatibility):
    - When running the ntor_ref.py and hs_ntor_ref.py tests, make sure
      only to pass strings (rather than "bytes" objects) to the Python
      subprocess module. Python 3 on Windows seems to require this.
      Fixes bug 26535; bugfix on 0.2.5.5-alpha (for ntor_ref.py) and
      0.3.1.1-alpha (for hs_ntor_ref.py).

203
204
205
206
207
208
  o Minor bugfixes (v3 onion services):
    - Stop sending ed25519 link specifiers in v3 onion service introduce
      cells and descriptors, when the rendezvous or introduction point
      doesn't support ed25519 link authentication. Fixes bug 26627;
      bugfix on 0.3.2.4-alpha.

209

210
211
212
Changes in version 0.3.4.5-rc - 2018-07-13
  Tor 0.3.4.5-rc moves to a new bridge authority, meaning people running
  bridge relays should upgrade.
213

214
215
216
217
  o Directory authority changes:
    - The "Bifroest" bridge authority has been retired; the new bridge
      authority is "Serge", and it is operated by George from the
      TorBSD project. Closes ticket 26771.
218

219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273

Changes in version 0.3.3.9 - 2018-07-13
  Tor 0.3.3.9 moves to a new bridge authority, meaning people running
  bridge relays should upgrade.

  o Directory authority changes:
    - The "Bifroest" bridge authority has been retired; the new bridge
      authority is "Serge", and it is operated by George from the
      TorBSD project. Closes ticket 26771.


Changes in version 0.3.2.11 - 2018-07-13
  Tor 0.3.2.11 moves to a new bridge authority, meaning people running
  bridge relays should upgrade. We also take this opportunity to backport
  other minor fixes.

  o Directory authority changes:
    - The "Bifroest" bridge authority has been retired; the new bridge
      authority is "Serge", and it is operated by George from the
      TorBSD project. Closes ticket 26771.

  o Directory authority changes (backport from 0.3.3.7):
    - Add an IPv6 address for the "dannenberg" directory authority.
      Closes ticket 26343.

  o Major bugfixes (directory authorities, backport from 0.3.4.1-alpha):
    - When directory authorities read a zero-byte bandwidth file, they
      would previously log a warning with the contents of an
      uninitialised buffer. They now log a warning about the empty file
      instead. Fixes bug 26007; bugfix on 0.2.2.1-alpha.

  o Major bugfixes (onion service, backport from 0.3.4.1-alpha):
    - Correctly detect when onion services get disabled after HUP. Fixes
      bug 25761; bugfix on 0.3.2.1.

  o Minor features (sandbox, backport from 0.3.3.4-alpha):
    - Explicitly permit the poll() system call when the Linux
      seccomp2-based sandbox is enabled: apparently, some versions of
      libc use poll() when calling getpwnam(). Closes ticket 25313.

  o Minor feature (continuous integration, backport from 0.3.3.5-rc):
    - Update the Travis CI configuration to use the stable Rust channel,
      now that we have decided to require that. Closes ticket 25714.

  o Minor features (continuous integration, backport from 0.3.4.1-alpha):
    - Our .travis.yml configuration now includes support for testing the
      results of "make distcheck". (It's not uncommon for "make check"
      to pass but "make distcheck" to fail.) Closes ticket 25814.
    - Our Travis CI configuration now integrates with the Coveralls
      coverage analysis tool. Closes ticket 25818.

  o Minor features (relay, diagnostic, backport from 0.3.4.3-alpha):
    - Add several checks to detect whether Tor relays are uploading
      their descriptors without specifying why they regenerated them.
      Diagnostic for ticket 25686.
274
275
276
277
278
279
280
281
282
283

  o Minor features (compilation, backport from 0.3.4.4-rc):
    - When building Tor, prefer to use Python 3 over Python 2, and more
      recent (contemplated) versions over older ones. Closes
      ticket 26372.

  o Minor features (geoip):
    - Update geoip and geoip6 to the July 3 2018 Maxmind GeoLite2
      Country database. Closes ticket 26674.

284
285
286
287
288
  o Minor bugfixes (correctness, client, backport from 0.3.4.1-alpha):
    - Upon receiving a malformed connected cell, stop processing the
      cell immediately. Previously we would mark the connection for
      close, but continue processing the cell as if the connection were
      open. Fixes bug 26072; bugfix on 0.2.4.7-alpha.
289

290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
  o Minor bugfixes (Linux seccomp2 sandbox, backport from 0.3.4.1-alpha):
    - Allow the nanosleep() system call, which glibc uses to implement
      sleep() and usleep(). Fixes bug 24969; bugfix on 0.2.5.1-alpha.

  o Minor bugfixes (testing, compatibility, backport from 0.3.4.4-rc):
    - When running the hs_ntor_ref.py test, make sure only to pass
      strings (rather than "bytes" objects) to the Python subprocess
      module. Python 3 on Windows seems to require this. Fixes bug
      26535; bugfix on 0.3.1.1-alpha.
    - When running the ntor_ref.py test, make sure only to pass strings
      (rather than "bytes" objects) to the Python subprocess module.
      Python 3 on Windows seems to require this. Fixes bug 26535; bugfix
      on 0.2.5.5-alpha.

  o Minor bugfixes (compatibility, openssl, backport from 0.3.4.2-alpha):
    - Work around a change in OpenSSL 1.1.1 where return values that
      would previously indicate "no password" now indicate an empty
      password. Without this workaround, Tor instances running with
      OpenSSL 1.1.1 would accept descriptors that other Tor instances
      would reject. Fixes bug 26116; bugfix on 0.2.5.16.

  o Minor bugfixes (documentation, backport from 0.3.3.5-rc):
    - Document that the PerConnBW{Rate,Burst} options will fall back to
      their corresponding consensus parameters only if those parameters
      are set. Previously we had claimed that these values would always
      be set in the consensus. Fixes bug 25296; bugfix on 0.2.2.7-alpha.
316
317
318
319
320
321
322

  o Minor bugfixes (compilation, backport from 0.3.4.4-rc):
    - Fix a compilation warning on some versions of GCC when building
      code that calls routerinfo_get_my_routerinfo() twice, assuming
      that the second call will succeed if the first one did. Fixes bug
      26269; bugfix on 0.2.8.2-alpha.

323
324
325
326
  o Minor bugfixes (client, backport from 0.3.4.1-alpha):
    - Don't consider Tor running as a client if the ControlPort is open,
      but no actual client ports are open. Fixes bug 26062; bugfix
      on 0.2.9.4-alpha.
327

328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
  o Minor bugfixes (hardening, backport from 0.3.4.2-alpha):
    - Prevent a possible out-of-bounds smartlist read in
      protover_compute_vote(). Fixes bug 26196; bugfix on 0.2.9.4-alpha.

  o Minor bugfixes (C correctness, backport from 0.3.3.4-alpha):
    - Fix a very unlikely (impossible, we believe) null pointer
      dereference. Fixes bug 25629; bugfix on 0.2.9.15. Found by
      Coverity; this is CID 1430932.

  o Minor bugfixes (onion service, backport from 0.3.4.1-alpha):
    - Fix a memory leak when a v3 onion service is configured and gets a
      SIGHUP signal. Fixes bug 25901; bugfix on 0.3.2.1-alpha.
    - When parsing the descriptor signature, look for the token plus an
      extra white-space at the end. This is more correct but also will
      allow us to support new fields that might start with "signature".
      Fixes bug 26069; bugfix on 0.3.0.1-alpha.
344
345
346
347
348
349
350

  o Minor bugfixes (relay, backport from 0.3.4.3-alpha):
    - Relays now correctly block attempts to re-extend to the previous
      relay by Ed25519 identity. Previously they would warn in this
      case, but not actually reject the attempt. Fixes bug 26158; bugfix
      on 0.3.0.1-alpha.

351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
  o Minor bugfixes (relay, crash, backport from 0.3.4.1-alpha):
    - Avoid a crash when running with DirPort set but ORPort turned off.
      Fixes a case of bug 23693; bugfix on 0.3.1.1-alpha.

  o Minor bugfixes (compilation, backport from 0.3.4.2-alpha):
    - Silence unused-const-variable warnings in zstd.h with some GCC
      versions. Fixes bug 26272; bugfix on 0.3.1.1-alpha.

  o Minor bugfixes (testing, backport from 0.3.3.4-alpha):
    - Avoid intermittent test failures due to a test that had relied on
      onion service introduction point creation finishing within 5
      seconds of real clock time. Fixes bug 25450; bugfix
      on 0.3.1.3-alpha.

  o Minor bugfixes (compilation, backport from 0.3.3.4-alpha):
    - Fix a C99 compliance issue in our configuration script that caused
      compilation issues when compiling Tor with certain versions of
      xtools. Fixes bug 25474; bugfix on 0.3.2.5-alpha.

  o Minor bugfixes (memory, correctness, backport from 0.3.4.4-rc):
    - Fix a number of small memory leaks identified by coverity. Fixes
      bug 26467; bugfix on numerous Tor versions.

  o Code simplification and refactoring (backport from 0.3.3.5-rc):
    - Move the list of default directory authorities to its own file.
      Closes ticket 24854. Patch by "beastr0".


Changes in version 0.2.9.16 - 2018-07-13
  Tor 0.2.9.16 moves to a new bridge authority, meaning people running
  bridge relays should upgrade. We also take this opportunity to backport
  other minor fixes.

  o Directory authority changes:
    - The "Bifroest" bridge authority has been retired; the new bridge
      authority is "Serge", and it is operated by George from the
      TorBSD project. Closes ticket 26771.

  o Directory authority changes (backport from 0.3.3.7):
    - Add an IPv6 address for the "dannenberg" directory authority.
      Closes ticket 26343.

  o Major bugfixes (directory authorities, backport from 0.3.4.1-alpha):
    - When directory authorities read a zero-byte bandwidth file, they
      would previously log a warning with the contents of an
      uninitialised buffer. They now log a warning about the empty file
      instead. Fixes bug 26007; bugfix on 0.2.2.1-alpha.

  o Minor features (sandbox, backport from 0.3.3.4-alpha):
    - Explicitly permit the poll() system call when the Linux
      seccomp2-based sandbox is enabled: apparently, some versions of
      libc use poll() when calling getpwnam(). Closes ticket 25313.

  o Minor features (continuous integration, backport from 0.3.4.1-alpha):
    - Our .travis.yml configuration now includes support for testing the
      results of "make distcheck". (It's not uncommon for "make check"
      to pass but "make distcheck" to fail.) Closes ticket 25814.
    - Our Travis CI configuration now integrates with the Coveralls
      coverage analysis tool. Closes ticket 25818.

  o Minor features (compilation, backport from 0.3.4.4-rc):
    - When building Tor, prefer to use Python 3 over Python 2, and more
      recent (contemplated) versions over older ones. Closes
      ticket 26372.

  o Minor features (geoip):
    - Update geoip and geoip6 to the July 3 2018 Maxmind GeoLite2
      Country database. Closes ticket 26674.

  o Minor bugfixes (correctness, client, backport from 0.3.4.1-alpha):
    - Upon receiving a malformed connected cell, stop processing the
      cell immediately. Previously we would mark the connection for
      close, but continue processing the cell as if the connection were
      open. Fixes bug 26072; bugfix on 0.2.4.7-alpha.

  o Minor bugfixes (Linux seccomp2 sandbox, backport from 0.3.4.1-alpha):
    - Allow the nanosleep() system call, which glibc uses to implement
      sleep() and usleep(). Fixes bug 24969; bugfix on 0.2.5.1-alpha.
429
430
431
432
433
434
435

  o Minor bugfixes (testing, compatibility, backport from 0.3.4.4-rc):
    - When running the ntor_ref.py test, make sure only to pass strings
      (rather than "bytes" objects) to the Python subprocess module.
      Python 3 on Windows seems to require this. Fixes bug 26535; bugfix
      on 0.2.5.5-alpha.

436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
  o Minor bugfixes (compatibility, openssl, backport from 0.3.4.2-alpha):
    - Work around a change in OpenSSL 1.1.1 where return values that
      would previously indicate "no password" now indicate an empty
      password. Without this workaround, Tor instances running with
      OpenSSL 1.1.1 would accept descriptors that other Tor instances
      would reject. Fixes bug 26116; bugfix on 0.2.5.16.

  o Minor bugfixes (compilation, backport from 0.3.4.4-rc):
    - Fix a compilation warning on some versions of GCC when building
      code that calls routerinfo_get_my_routerinfo() twice, assuming
      that the second call will succeed if the first one did. Fixes bug
      26269; bugfix on 0.2.8.2-alpha.

  o Minor bugfixes (client, backport from 0.3.4.1-alpha):
    - Don't consider Tor running as a client if the ControlPort is open,
      but no actual client ports are open. Fixes bug 26062; bugfix
      on 0.2.9.4-alpha.

  o Minor bugfixes (hardening, backport from 0.3.4.2-alpha):
    - Prevent a possible out-of-bounds smartlist read in
      protover_compute_vote(). Fixes bug 26196; bugfix on 0.2.9.4-alpha.

  o Minor bugfixes (C correctness, backport from 0.3.3.4-alpha):
    - Fix a very unlikely (impossible, we believe) null pointer
      dereference. Fixes bug 25629; bugfix on 0.2.9.15. Found by
      Coverity; this is CID 1430932.

  o Minor bugfixes (memory, correctness, backport from 0.3.4.4-rc):
    - Fix a number of small memory leaks identified by coverity. Fixes
      bug 26467; bugfix on numerous Tor versions.

  o Code simplification and refactoring (backport from 0.3.3.5-rc):
    - Move the list of default directory authorities to its own file.
      Closes ticket 24854. Patch by "beastr0".

471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522

Changes in version 0.3.4.4-rc - 2018-07-09
  Tor 0.3.4.4-rc fixes several small compilation, portability, and
  correctness issues in previous versions of Tor. This version is a
  release candidate: if no serious bugs are found, we expect that the
  stable 0.3.4 release will be (almost) the same as this release.

  o Minor features (compilation):
    - When building Tor, prefer to use Python 3 over Python 2, and more
      recent (contemplated) versions over older ones. Closes
      ticket 26372.

  o Minor features (geoip):
    - Update geoip and geoip6 to the July 3 2018 Maxmind GeoLite2
      Country database. Closes ticket 26674.

  o Minor features (Rust, portability):
    - Rust cross-compilation is now supported. Closes ticket 25895.

  o Minor bugfixes (compilation):
    - Fix a compilation warning on some versions of GCC when building
      code that calls routerinfo_get_my_routerinfo() twice, assuming
      that the second call will succeed if the first one did. Fixes bug
      26269; bugfix on 0.2.8.2-alpha.

  o Minor bugfixes (control port):
    - Report the port correctly when a port is configured to bind to
      "auto". Fixes bug 26568; bugfix on 0.3.4.1-alpha.
    - Handle the HSADDRESS= argument to the HSPOST command properly.
      (Previously, this argument was misparsed and thus ignored.) Fixes
      bug 26523; bugfix on 0.3.3.1-alpha. Patch by "akwizgran".

  o Minor bugfixes (correctness, flow control):
    - Upon receiving a stream-level SENDME cell, verify that our window
      has not grown too large. Fixes bug 26214; bugfix on svn
      r54 (pre-0.0.1).

  o Minor bugfixes (memory, correctness):
    - Fix a number of small memory leaks identified by coverity. Fixes
      bug 26467; bugfix on numerous Tor versions.

  o Minor bugfixes (testing, compatibility):
    - When running the hs_ntor_ref.py test, make sure only to pass
      strings (rather than "bytes" objects) to the Python subprocess
      module. Python 3 on Windows seems to require this. Fixes bug
      26535; bugfix on 0.3.1.1-alpha.
    - When running the ntor_ref.py test, make sure only to pass strings
      (rather than "bytes" objects) to the Python subprocess module.
      Python 3 on Windows seems to require this. Fixes bug 26535; bugfix
      on 0.2.5.5-alpha.


523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
Changes in version 0.3.3.8 - 2018-07-09
  Tor 0.3.3.8 backports several changes from the 0.3.4.x series, including
  fixes for a memory leak affecting directory authorities.

  o Major bugfixes (directory authority, backport from 0.3.4.3-alpha):
    - Stop leaking memory on directory authorities when planning to
      vote. This bug was crashing authorities by exhausting their
      memory. Fixes bug 26435; bugfix on 0.3.3.6.

  o Major bugfixes (rust, testing, backport from 0.3.4.3-alpha):
    - Make sure that failing tests in Rust will actually cause the build
      to fail: previously, they were ignored. Fixes bug 26258; bugfix
      on 0.3.3.4-alpha.

  o Minor features (compilation, backport from 0.3.4.4-rc):
    - When building Tor, prefer to use Python 3 over Python 2, and more
      recent (contemplated) versions over older ones. Closes
      ticket 26372.

  o Minor features (geoip):
    - Update geoip and geoip6 to the July 3 2018 Maxmind GeoLite2
      Country database. Closes ticket 26674.

  o Minor features (relay, diagnostic, backport from 0.3.4.3-alpha):
    - Add several checks to detect whether Tor relays are uploading
      their descriptors without specifying why they regenerated them.
      Diagnostic for ticket 25686.

  o Minor bugfixes (circuit path selection, backport from 0.3.4.1-alpha):
    - Don't count path selection failures as circuit build failures.
      This change should eliminate cases where Tor blames its guard or
      the network for situations like insufficient microdescriptors
      and/or overly restrictive torrc settings. Fixes bug 25705; bugfix
      on 0.3.3.1-alpha.

  o Minor bugfixes (compilation, backport from 0.3.4.4-rc):
    - Fix a compilation warning on some versions of GCC when building
      code that calls routerinfo_get_my_routerinfo() twice, assuming
      that the second call will succeed if the first one did. Fixes bug
      26269; bugfix on 0.2.8.2-alpha.

  o Minor bugfixes (control port, backport from 0.3.4.4-rc):
    - Handle the HSADDRESS= argument to the HSPOST command properly.
      (Previously, this argument was misparsed and thus ignored.) Fixes
      bug 26523; bugfix on 0.3.3.1-alpha. Patch by "akwizgran".

  o Minor bugfixes (memory, correctness, backport from 0.3.4.4-rc):
    - Fix a number of small memory leaks identified by coverity. Fixes
      bug 26467; bugfix on numerous Tor versions.

  o Minor bugfixes (relay, backport from 0.3.4.3-alpha):
    - Relays now correctly block attempts to re-extend to the previous
      relay by Ed25519 identity. Previously they would warn in this
      case, but not actually reject the attempt. Fixes bug 26158; bugfix
      on 0.3.0.1-alpha.

  o Minor bugfixes (restart-in-process, backport from 0.3.4.1-alpha):
    - When shutting down, Tor now clears all the flags in the control.c
      module. This should prevent a bug where authentication cookies are
      not generated on restart. Fixes bug 25512; bugfix on 0.3.3.1-alpha.

  o Minor bugfixes (testing, compatibility, backport from 0.3.4.4-rc):
    - When running the hs_ntor_ref.py test, make sure only to pass
      strings (rather than "bytes" objects) to the Python subprocess
      module. Python 3 on Windows seems to require this. Fixes bug
      26535; bugfix on 0.3.1.1-alpha.
    - When running the ntor_ref.py test, make sure only to pass strings
      (rather than "bytes" objects) to the Python subprocess module.
      Python 3 on Windows seems to require this. Fixes bug 26535; bugfix
      on 0.2.5.5-alpha.


595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
Changes in version 0.3.4.3-alpha - 2018-06-26
  Tor 0.3.4.3-alpha fixes several bugs in earlier versions, including
  one that was causing stability issues on directory authorities.

  o Major bugfixes (directory authority):
    - Stop leaking memory on directory authorities when planning to
      vote. This bug was crashing authorities by exhausting their
      memory. Fixes bug 26435; bugfix on 0.3.3.6.

  o Major bugfixes (rust, testing):
    - Make sure that failing tests in Rust will actually cause the build
      to fail: previously, they were ignored. Fixes bug 26258; bugfix
      on 0.3.3.4-alpha.

  o Minor feature (directory authorities):
    - Stop warning about incomplete bw lines before the first complete
      bw line has been found, so that additional header lines can be
      ignored. Fixes bug 25960; bugfix on 0.2.2.1-alpha

  o Minor features (relay, diagnostic):
    - Add several checks to detect whether Tor relays are uploading
      their descriptors without specifying why they regenerated them.
      Diagnostic for ticket 25686.

  o Minor features (unit tests):
    - Test complete bandwidth measurements files, and test that
      incomplete bandwidth lines only give warnings when the end of the
      header has not been detected. Fixes bug 25947; bugfix
      on 0.2.2.1-alpha

  o Minor bugfixes (compilation):
    - Refrain from compiling unit testing related object files when
      --disable-unittests is set to configure script. Fixes bug 24891;
      bugfix on 0.2.5.1-alpha.
    - When linking the libtor_testing.a library, only include the
      dirauth object files once. Previously, they were getting added
      twice. Fixes bug 26402; bugfix on 0.3.4.1-alpha.
    - The --enable-fatal-warnings flag now affects Rust code as well.
      Closes ticket 26245.

  o Minor bugfixes (onion services):
    - Recompute some consensus information after detecting a clock jump,
      or after transitioning from a non-live consensus to a live
      consensus. We do this to avoid having an outdated state, and
      miscalculating the index for next-generation onion services. Fixes
      bug 24977; bugfix on 0.3.2.1-alpha.

  o Minor bugfixes (relay):
    - Relays now correctly block attempts to re-extend to the previous
      relay by Ed25519 identity. Previously they would warn in this
      case, but not actually reject the attempt. Fixes bug 26158; bugfix
      on 0.3.0.1-alpha.

  o Minor bugfixes (testing):
    - Fix compilation of the doctests in the Rust crypto crate. Fixes
      bug 26415; bugfix on 0.3.4.1-alpha.
    - Instead of trying to read the geoip configuration files from
      within the unit tests, instead create our own ersatz files with
      just enough geoip data in the format we expect. Trying to read
      from the source directory created problems on Windows with mingw,
      where the build system's paths are not the same as the platform's
      paths. Fixes bug 25787; bugfix on 0.3.4.1-alpha.
    - Refrain from trying to get an item from an empty smartlist in
      test_bridges_clear_bridge_list. Set DEBUG_SMARTLIST in unit tests
      to catch improper smartlist usage. Furthermore, enable
      DEBUG_SMARTLIST globally when build is configured with fragile
      hardening. Fixes bug 26196; bugfix on 0.3.4.1-alpha.


664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
Changes in version 0.3.3.7 - 2018-06-12
  Tor 0.3.3.7 backports several changes from the 0.3.4.x series, including
  fixes for bugs affecting compatibility and stability.

  o Directory authority changes:
    - Add an IPv6 address for the "dannenberg" directory authority.
      Closes ticket 26343.

  o Minor features (geoip):
    - Update geoip and geoip6 to the June 7 2018 Maxmind GeoLite2
      Country database. Closes ticket 26351.

  o Minor bugfixes (compatibility, openssl, backport from 0.3.4.2-alpha):
    - Work around a change in OpenSSL 1.1.1 where return values that
      would previously indicate "no password" now indicate an empty
      password. Without this workaround, Tor instances running with
      OpenSSL 1.1.1 would accept descriptors that other Tor instances
      would reject. Fixes bug 26116; bugfix on 0.2.5.16.

  o Minor bugfixes (compilation, backport from 0.3.4.2-alpha):
    - Silence unused-const-variable warnings in zstd.h with some GCC
      versions. Fixes bug 26272; bugfix on 0.3.1.1-alpha.

  o Minor bugfixes (controller, backport from 0.3.4.2-alpha):
    - Improve accuracy of the BUILDTIMEOUT_SET control port event's
      TIMEOUT_RATE and CLOSE_RATE fields. (We were previously
      miscounting the total number of circuits for these field values.)
      Fixes bug 26121; bugfix on 0.3.3.1-alpha.

  o Minor bugfixes (hardening, backport from 0.3.4.2-alpha):
    - Prevent a possible out-of-bounds smartlist read in
      protover_compute_vote(). Fixes bug 26196; bugfix on 0.2.9.4-alpha.

  o Minor bugfixes (path selection, backport from 0.3.4.1-alpha):
    - Only select relays when they have the descriptors we prefer to use
      for them. This change fixes a bug where we could select a relay
      because it had _some_ descriptor, but reject it later with a
      nonfatal assertion error because it didn't have the exact one we
      wanted. Fixes bugs 25691 and 25692; bugfix on 0.3.3.4-alpha.


705
Changes in version 0.3.4.2-alpha - 2018-06-12
Nick Mathewson's avatar
Nick Mathewson committed
706
707
  Tor 0.3.4.2-alpha fixes several minor bugs in the previous alpha
  release, and forward-ports an authority-only security fix from 0.3.3.6.
708

Nick Mathewson's avatar
Nick Mathewson committed
709
710
711
712
  o Directory authority changes:
    - Add an IPv6 address for the "dannenberg" directory authority.
      Closes ticket 26343.

713
  o Major bugfixes (security, directory authority, denial-of-service, also in 0.3.3.6):
Nick Mathewson's avatar
Nick Mathewson committed
714
715
716
717
    - Fix a bug that could have allowed an attacker to force a directory
      authority to use up all its RAM by passing it a maliciously
      crafted protocol versions string. Fixes bug 25517; bugfix on
      0.2.9.4-alpha. This issue is also tracked as TROVE-2018-005.
718
719
720

  o Minor features (continuous integration):
    - Add the necessary configuration files for continuous integration
Nick Mathewson's avatar
Nick Mathewson committed
721
722
      testing on Windows, via the Appveyor platform. Closes ticket
      25549. Patches from Marcin Cieślak and Isis Lovecruft.
Nick Mathewson's avatar
Nick Mathewson committed
723
724
725
726
727

  o Minor features (geoip):
    - Update geoip and geoip6 to the June 7 2018 Maxmind GeoLite2
      Country database. Closes ticket 26351.

Nick Mathewson's avatar
Nick Mathewson committed
728
729
730
731
732
733
  o Minor bugfixes (compatibility, openssl):
    - Work around a change in OpenSSL 1.1.1 where return values that
      would previously indicate "no password" now indicate an empty
      password. Without this workaround, Tor instances running with
      OpenSSL 1.1.1 would accept descriptors that other Tor instances
      would reject. Fixes bug 26116; bugfix on 0.2.5.16.
Nick Mathewson's avatar
Nick Mathewson committed
734

735
  o Minor bugfixes (compilation):
Nick Mathewson's avatar
Nick Mathewson committed
736
    - Silence unused-const-variable warnings in zstd.h with some GCC
Nick Mathewson's avatar
Nick Mathewson committed
737
      versions. Fixes bug 26272; bugfix on 0.3.1.1-alpha.
Nick Mathewson's avatar
Nick Mathewson committed
738
739
740
741
742
    - Fix compilation when using OpenSSL 1.1.0 with the "no-deprecated"
      flag enabled. Fixes bug 26156; bugfix on 0.3.4.1-alpha.
    - Avoid a compiler warning when casting the return value of
      smartlist_len() to double with DEBUG_SMARTLIST enabled. Fixes bug
      26283; bugfix on 0.2.4.10-alpha.
743
744

  o Minor bugfixes (control port):
Nick Mathewson's avatar
Nick Mathewson committed
745
746
747
748
    - Do not count 0-length RELAY_COMMAND_DATA cells as valid data in
      CIRC_BW events. Previously, such cells were counted entirely in
      the OVERHEAD field. Now they are not. Fixes bug 26259; bugfix
      on 0.3.4.1-alpha.
749
750
751

  o Minor bugfixes (controller):
    - Improve accuracy of the BUILDTIMEOUT_SET control port event's
Nick Mathewson's avatar
Nick Mathewson committed
752
753
754
      TIMEOUT_RATE and CLOSE_RATE fields. (We were previously
      miscounting the total number of circuits for these field values.)
      Fixes bug 26121; bugfix on 0.3.3.1-alpha.
755
756
757

  o Minor bugfixes (hardening):
    - Prevent a possible out-of-bounds smartlist read in
Nick Mathewson's avatar
Nick Mathewson committed
758
      protover_compute_vote(). Fixes bug 26196; bugfix on 0.2.9.4-alpha.
759
760

  o Minor bugfixes (onion services):
Nick Mathewson's avatar
Nick Mathewson committed
761
762
    - Fix a bug that blocked the creation of ephemeral v3 onion
      services. Fixes bug 25939; bugfix on 0.3.4.1-alpha.
763
764
765
766

  o Minor bugfixes (test coverage tools):
    - Update our "cov-diff" script to handle output from the latest
      version of gcov, and to remove extraneous timestamp information
Nick Mathewson's avatar
Nick Mathewson committed
767
768
      from its output. Fixes bugs 26101 and 26102; bugfix
      on 0.2.5.1-alpha.
769
770


771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
Changes in version 0.3.3.6 - 2018-05-22
  Tor 0.3.3.6 is the first stable release in the 0.3.3 series. It
  backports several important fixes from the 0.3.4.1-alpha.

  The Tor 0.3.3 series includes controller support and other
  improvements for v3 onion services, official support for embedding Tor
  within other applications, and our first non-trivial module written in
  the Rust programming language. (Rust is still not enabled by default
  when building Tor.) And as usual, there are numerous other smaller
  bugfixes, features, and improvements.

  Below are the changes since 0.3.3.5-rc. For a list of all changes
  since 0.3.2.10, see the ReleaseNotes file.

  o Major bugfixes (directory authorities, security, backport from 0.3.4.1-alpha):
    - When directory authorities read a zero-byte bandwidth file, they
      would previously log a warning with the contents of an
      uninitialised buffer. They now log a warning about the empty file
      instead. Fixes bug 26007; bugfix on 0.2.2.1-alpha.

  o Major bugfixes (security, directory authority, denial-of-service):
    - Fix a bug that could have allowed an attacker to force a directory
      authority to use up all its RAM by passing it a maliciously
      crafted protocol versions string. Fixes bug 25517; bugfix on
      0.2.9.4-alpha. This issue is also tracked as TROVE-2018-005.

  o Major bugfixes (crash, backport from 0.3.4.1-alpha):
    - Avoid a rare assertion failure in the circuit build timeout code
      if we fail to allow any circuits to actually complete. Fixes bug
      25733; bugfix on 0.2.2.2-alpha.

  o Major bugfixes (directory authorities, backport from 0.3.4.1-alpha):
    - Avoid a crash when testing router reachability on a router that
      could have an ed25519 ID, but which does not. Fixes bug 25415;
      bugfix on 0.3.3.2-alpha.

  o Major bugfixes (onion service, backport from 0.3.4.1-alpha):
    - Correctly detect when onion services get disabled after HUP. Fixes
      bug 25761; bugfix on 0.3.2.1.

  o Major bugfixes (relay, denial of service, backport from 0.3.4.1-alpha):
    - Impose a limit on circuit cell queue size. The limit can be
      controlled by a consensus parameter. Fixes bug 25226; bugfix
      on 0.2.4.14-alpha.

  o Minor features (compatibility, backport from 0.3.4.1-alpha):
    - Avoid some compilation warnings with recent versions of LibreSSL.
      Closes ticket 26006.

  o Minor features (continuous integration, backport from 0.3.4.1-alpha):
    - Our .travis.yml configuration now includes support for testing the
      results of "make distcheck". (It's not uncommon for "make check"
      to pass but "make distcheck" to fail.) Closes ticket 25814.
    - Our Travis CI configuration now integrates with the Coveralls
      coverage analysis tool. Closes ticket 25818.

  o Minor features (geoip):
    - Update geoip and geoip6 to the May 1 2018 Maxmind GeoLite2 Country
      database. Closes ticket 26104.

  o Minor bugfixes (client, backport from 0.3.4.1-alpha):
    - Don't consider Tor running as a client if the ControlPort is open,
      but no actual client ports are open. Fixes bug 26062; bugfix
      on 0.2.9.4-alpha.

  o Minor bugfixes (correctness, client, backport from 0.3.4.1-alpha):
    - Upon receiving a malformed connected cell, stop processing the
      cell immediately. Previously we would mark the connection for
      close, but continue processing the cell as if the connection were
      open. Fixes bug 26072; bugfix on 0.2.4.7-alpha.

  o Minor bugfixes (documentation, backport from 0.3.4.1-alpha):
    - Stop saying in the manual that clients cache ipv4 dns answers from
      exit relays. We haven't used them since 0.2.6.3-alpha, and in
      ticket 24050 we stopped even caching them as of 0.3.2.6-alpha, but
      we forgot to say so in the man page. Fixes bug 26052; bugfix
      on 0.3.2.6-alpha.

  o Minor bugfixes (Linux seccomp2 sandbox, backport from 0.3.4.1-alpha):
    - Allow the nanosleep() system call, which glibc uses to implement
      sleep() and usleep(). Fixes bug 24969; bugfix on 0.2.5.1-alpha.

  o Minor bugfixes (onion service, backport from 0.3.4.1-alpha):
    - Fix a memory leak when a v3 onion service is configured and gets a
      SIGHUP signal. Fixes bug 25901; bugfix on 0.3.2.1-alpha.
    - When parsing the descriptor signature, look for the token plus an
      extra white-space at the end. This is more correct but also will
      allow us to support new fields that might start with "signature".
      Fixes bug 26069; bugfix on 0.3.0.1-alpha.

  o Minor bugfixes (relay, crash, backport from 0.3.4.1-alpha):
862
    - Avoid a crash when running with DirPort set but ORPort turned off.
863
864
865
866
867
868
869
      Fixes a case of bug 23693; bugfix on 0.3.1.1-alpha.

  o Documentation (backport from 0.3.4.1-alpha):
    - Correct an IPv6 error in the documentation for ExitPolicy. Closes
      ticket 25857. Patch from "CTassisF".


Nick Mathewson's avatar
Nick Mathewson committed
870
Changes in version 0.3.4.1-alpha - 2018-05-17
Nick Mathewson's avatar
Nick Mathewson committed
871
872
873
874
875
  Tor 0.3.4.1-alpha is the first release in the 0.3.4.x series. It
  includes refactoring to begin reducing Tor's binary size and idle CPU
  usage on mobile, along with prep work for new bandwidth scanners,
  improvements to the experimental "vanguards" feature, and numerous
  other small features and bugfixes.
876

Nick Mathewson's avatar
Nick Mathewson committed
877
  o New system requirements:
Nick Mathewson's avatar
Nick Mathewson committed
878
879
880
881
    - Tor no longer tries to support old operating systems without
      mmap() or some local equivalent. Apparently, compilation on such
      systems has been broken for some time, without anybody noticing or
      complaining. Closes ticket 25398.
882
883

  o Major feature (directory authority, modularization):
Nick Mathewson's avatar
Nick Mathewson committed
884
    - The directory authority subsystem has been modularized. The code
Nick Mathewson's avatar
Nick Mathewson committed
885
      is now located in src/or/dirauth/, and is compiled in by default.
Nick Mathewson's avatar
Nick Mathewson committed
886
      To disable the module, the configure option
Nick Mathewson's avatar
Nick Mathewson committed
887
888
889
890
      --disable-module-dirauth has been added. This module may be
      disabled by default in some future release. Closes ticket 25610.

  o Major features (main loop, CPU usage):
891
    - When Tor is disabled (via DisableNetwork or via hibernation), it
Nick Mathewson's avatar
Nick Mathewson committed
892
      no longer needs to run any per-second events. This change should
893
      make it easier for mobile applications to disable Tor while the
Nick Mathewson's avatar
Nick Mathewson committed
894
      device is sleeping, or Tor is not running. Closes ticket 26063.
Nick Mathewson's avatar
Nick Mathewson committed
895
896
897
898
899
900
901
    - Tor no longer enables all of its periodic events by default.
      Previously, Tor would enable all possible main loop events,
      regardless of whether it needed them. Furthermore, many of these
      events are now disabled with Tor is hibernating or DisableNetwork
      is set. This is a big step towards reducing client CPU usage by
      reducing the amount of wake-ups the daemon does. Closes ticket
      25376 and 25762.
902
    - The bandwidth-limitation logic has been refactored so that
Nick Mathewson's avatar
Nick Mathewson committed
903
904
905
906
907
      bandwidth calculations are performed on-demand, rather than every
      TokenBucketRefillInterval milliseconds. This change should improve
      the granularity of our bandwidth calculations, and limit the
      number of times that the Tor process needs to wake up when it is
      idle. Closes ticket 25373.
908
909
910
911
912
913
914
915
916
917
918
919
    - Move responsibility for many operations from a once-per-second
      callback to a callback that is only scheduled as needed. Moving
      this functionality has allowed us to disable the callback when
      Tor's network is disabled. Once enough items are removed from our
      once-per-second callback, we can eliminate it entirely to conserve
      CPU when idle. The functionality removed includes: closing
      connections, circuits, and channels (ticket 25932); consensus
      voting (25937); flushing log callbacks (25951); honoring delayed
      SIGNEWNYM requests (25949); rescanning the consensus cache
      (25931); saving the state file to disk (25948); warning relay
      operators about unreachable ports (25952); and keeping track of
      Tor's uptime (26009).
920
921

  o Major bugfixes (directory authorities, security):
Nick Mathewson's avatar
Nick Mathewson committed
922
    - When directory authorities read a zero-byte bandwidth file, they
Nick Mathewson's avatar
Nick Mathewson committed
923
924
925
926
927
      would previously log a warning with the contents of an
      uninitialised buffer. They now log a warning about the empty file
      instead. Fixes bug 26007; bugfix on 0.2.2.1-alpha.

  o Major bugfixes (crash):
928
    - Avoid a rare assertion failure in the circuit build timeout code
Nick Mathewson's avatar
Nick Mathewson committed
929
930
      if we fail to allow any circuits to actually complete. Fixes bug
      25733; bugfix on 0.2.2.2-alpha.
931
932

  o Major bugfixes (directory authority):
Nick Mathewson's avatar
Nick Mathewson committed
933
934
935
    - Avoid a crash when testing router reachability on a router that
      could have an ed25519 ID, but which does not. Fixes bug 25415;
      bugfix on 0.3.3.2-alpha.
936
937

  o Major bugfixes (onion service):
Nick Mathewson's avatar
Nick Mathewson committed
938
939
    - Correctly detect when onion services get disabled after HUP. Fixes
      bug 25761; bugfix on 0.3.2.1.
940
941

  o Major bugfixes (protover, voting):
Nick Mathewson's avatar
Nick Mathewson committed
942
943
944
945
946
947
948
949
950
951
952
    - Revise Rust implementation of protover to use a more memory-
      efficient voting algorithm and corresponding data structures, thus
      avoiding a potential (but small impact) DoS attack where specially
      crafted protocol strings would expand to several potential
      megabytes in memory. In the process, several portions of code were
      revised to be methods on new, custom types, rather than functions
      taking interchangeable types, thus increasing type safety of the
      module. Custom error types and handling were added as well, in
      order to facilitate better error dismissal/handling in outside
      crates and avoid mistakenly passing an internal error string to C
      over the FFI boundary. Many tests were added, and some previous
953
954
955
956
      differences between the C and Rust implementations have been
      remedied. Fixes bug 24031; bugfix on 0.3.3.1-alpha.

  o Major bugfixes (relay, denial of service):
Nick Mathewson's avatar
Nick Mathewson committed
957
958
959
    - Impose a limit on circuit cell queue size. The limit can be
      controlled by a consensus parameter. Fixes bug 25226; bugfix
      on 0.2.4.14-alpha.
960
961

  o Minor features (accounting):
Nick Mathewson's avatar
Nick Mathewson committed
962
963
964
965
    - When Tor becomes dormant, it now uses a scheduled event to wake up
      at the right time. Previously, we would use the per-second timer
      to check whether to wake up, but we no longer have any per-second
      timers enabled when the network is disabled. Closes ticket 26064.
966
967

  o Minor features (code quality):
Nick Mathewson's avatar
Nick Mathewson committed
968
969
    - Add optional spell-checking for the Tor codebase, using the
      "misspell" program. To use this feature, run "make check-typos".
970
971
972
      Closes ticket 25024.

  o Minor features (compatibility):
Nick Mathewson's avatar
Nick Mathewson committed
973
974
    - Tor now detects versions of OpenSSL 1.1.0 and later compiled with
      the no-deprecated option, and builds correctly with them. Closes
975
      tickets 19429, 19981, and 25353.
Nick Mathewson's avatar
Nick Mathewson committed
976
977
    - Avoid some compilation warnings with recent versions of LibreSSL.
      Closes ticket 26006.
978
979

  o Minor features (compression, zstd):
Nick Mathewson's avatar
Nick Mathewson committed
980
981
982
983
    - When running with zstd, Tor now considers using advanced functions
      that the zstd maintainers have labeled as potentially unstable. To
      prevent breakage, Tor will only use this functionality when the
      runtime version of the zstd library matches the version with which
Nick Mathewson's avatar
Nick Mathewson committed
984
      Tor was compiled. Closes ticket 25162.
985
986
987

  o Minor features (configuration):
    - The "DownloadSchedule" options have been renamed to end with
Nick Mathewson's avatar
Nick Mathewson committed
988
      "DownloadInitialDelay". The old names are still allowed, but will
989
      produce a warning. Comma-separated lists are still permitted for
Nick Mathewson's avatar
Nick Mathewson committed
990
991
      these options, but all values after the first are ignored (as they
      have been since 0.2.9). Closes ticket 23354.
992
993

  o Minor features (continuous integration):
Nick Mathewson's avatar
Nick Mathewson committed
994
995
996
997
998
    - Our .travis.yml configuration now includes support for testing the
      results of "make distcheck". (It's not uncommon for "make check"
      to pass but "make distcheck" to fail.) Closes ticket 25814.
    - Our Travis CI configuration now integrates with the Coveralls
      coverage analysis tool. Closes ticket 25818.
999
1000
1001
1002
1003
1004

  o Minor features (control port):
    - Introduce GETINFO "current-time/{local,utc}" to return the local
      and UTC times respectively in ISO format. This helps a controller
      like Tor Browser detect a time-related error. Closes ticket 25511.
      Patch by Neel Chauhan.
Nick Mathewson's avatar
Nick Mathewson committed
1005
1006
1007
1008
1009
1010
    - Introduce new fields to the CIRC_BW event. There are two new
      fields in each of the read and written directions. The DELIVERED
      fields report the total valid data on the circuit, as measured by
      the payload sizes of verified and error-checked relay command
      cells. The OVERHEAD fields report the total unused bytes in each
      of these cells. Closes ticket 25903.
1011
1012
1013

  o Minor features (directory authority):
    - Directory authorities now open their key-pinning files as O_SYNC,
Nick Mathewson's avatar
Nick Mathewson committed
1014
      to limit their chances of accidentally writing partial lines.
1015
1016
1017
      Closes ticket 23909.

  o Minor features (directory authority, forward compatibility):
Nick Mathewson's avatar
Nick Mathewson committed
1018
1019
1020
    - Make the lines of the measured bandwidth file able to contain
      their entries in any order. Previously, the node_id entry needed
      to come first. Closes ticket 26004.
1021

Nick Mathewson's avatar
Nick Mathewson committed
1022
1023
1024
1025
  o Minor features (entry guards):
    - Introduce a new torrc option NumPrimaryGuards for controlling the
      number of primary guards. Closes ticket 25843.

1026
  o Minor features (geoip):
Nick Mathewson's avatar
Nick Mathewson committed
1027
1028
    - Update geoip and geoip6 to the May 1 2018 Maxmind GeoLite2 Country
      database. Closes ticket 26104.
1029
1030
1031

  o Minor features (performance):
    - Avoid a needless call to malloc() when processing an incoming
Nick Mathewson's avatar
Nick Mathewson committed
1032
1033
1034
1035
      relay cell. Closes ticket 24914.
    - Make our timing-wheel code run a tiny bit faster on 32-bit
      platforms, by preferring 32-bit math to 64-bit. Closes
      ticket 24688.
1036
1037
1038
    - Avoid a needless malloc()/free() pair every time we handle an ntor
      handshake. Closes ticket 25150.

Nick Mathewson's avatar
Nick Mathewson committed
1039
  o Minor features (testing):
1040
    - Add a unit test for voting_schedule_get_start_of_next_interval().
Nick Mathewson's avatar
Nick Mathewson committed
1041
1042
1043
1044
1045
      Closes ticket 26014, and helps make unit test coverage
      more deterministic.
    - A new unittests module specifically for testing the functions in
      the (new-ish) bridges.c module has been created with new
      unittests, raising the code coverage percentages. Closes 25425.
1046
    - We now have improved testing for addressmap_get_virtual_address()
Nick Mathewson's avatar
Nick Mathewson committed
1047
      function. This should improve our test coverage, and make our test
1048
1049
1050
1051
      coverage more deterministic. Closes ticket 25993.

  o Minor features (timekeeping, circuit scheduling):
    - When keeping track of how busy each circuit have been recently on
Nick Mathewson's avatar
Nick Mathewson committed
1052
1053
1054
      a given connection, use coarse-grained monotonic timers rather
      than gettimeofday(). This change should marginally increase
      accuracy and performance. Implements part of ticket 25927.
1055
1056

  o Minor bugfixes (bandwidth management):
Nick Mathewson's avatar
Nick Mathewson committed
1057
1058
    - Consider ourselves "low on write bandwidth" if we have exhausted
      our write bandwidth some time in the last second. This was the
1059
      documented behavior before, but the actual behavior was to change
Nick Mathewson's avatar
Nick Mathewson committed
1060
1061
      this value every TokenBucketRefillInterval. Fixes bug 25828;
      bugfix on 0.2.3.5-alpha.
1062
1063

  o Minor bugfixes (C correctness):
Nick Mathewson's avatar
Nick Mathewson committed
1064
1065
1066
    - Add a missing lock acquisition in the shutdown code of the control
      subsystem. Fixes bug 25675; bugfix on 0.2.7.3-rc. Found by
      Coverity; this is CID 1433643.
1067
1068

  o Minor bugfixes (circuit path selection):
Nick Mathewson's avatar
Nick Mathewson committed
1069
    - Don't count path selection failures as circuit build failures.
Nick Mathewson's avatar
Nick Mathewson committed
1070
1071
1072
      This change should eliminate cases where Tor blames its guard or
      the network for situations like insufficient microdescriptors
      and/or overly restrictive torrc settings. Fixes bug 25705; bugfix
Nick Mathewson's avatar
Nick Mathewson committed
1073
      on 0.3.3.1-alpha.
1074
1075

  o Minor bugfixes (client):
Nick Mathewson's avatar
Nick Mathewson committed
1076
1077
1078
1079
1080
    - Don't consider Tor running as a client if the ControlPort is open,
      but no actual client ports are open. Fixes bug 26062; bugfix
      on 0.2.9.4-alpha.

  o Minor bugfixes (code style):
1081
    - Fixed multiple includes of transports.h in src/or/connection.c
Nick Mathewson's avatar
Nick Mathewson committed
1082
1083
1084
      Fixes bug 25261; bugfix on 0.2.5.1-alpha.
    - Remove the unused variable n_possible from the function
      channel_get_for_extend(). Fixes bug 25645; bugfix on 0.2.4.4-alpha
1085
1086

  o Minor bugfixes (control interface):
Nick Mathewson's avatar
Nick Mathewson committed
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
    - Respond with more human-readable error messages to GETINFO exit-
      policy/* requests. Also, let controller know if an error is
      transient (response code 551) or not (response code 552). Fixes
      bug 25852; bugfix on 0.2.8.1-alpha.

  o Minor bugfixes (controller):
    - Make CIRC_BW event reflect the total of all data sent on a
      circuit, including padding and dropped cells. Also fix a mis-
      counting bug when STREAM_BW events were enabled. Fixes bug 25400;
      bugfix on 0.2.5.2-alpha.
1097

1098
1099
1100
1101
1102
1103
  o Minor bugfixes (correctness, client):
    - Upon receiving a malformed connected cell, stop processing the cell
      immediately.  Previously we would mark the connection for close, but
      continue processing the cell as if the connection were open. Fixes bug
      26072; bugfix on 0.2.4.7-alpha.

1104
  o Minor bugfixes (directory client):
Nick Mathewson's avatar
Nick Mathewson committed
1105
1106
    - When unverified-consensus is verified, rename it to cached-
      consenus. Fixes bug 4187; bugfix on 0.2.0.3-alpha.
1107
1108
    - Fixed launching a certificate fetch always during the scheduled
      periodic consensus fetch by fetching only in those cases when
Nick Mathewson's avatar
Nick Mathewson committed
1109
1110
      consensus are waiting for certs. Fixes bug 24740; bugfix
      on 0.2.9.1-alpha.
1111
1112

  o Minor bugfixes (documentation):
Nick Mathewson's avatar
Nick Mathewson committed
1113
1114
1115
1116
    - Stop saying in the manual that clients cache ipv4 dns answers from
      exit relays. We haven't used them since 0.2.6.3-alpha, and in
      ticket 24050 we stopped even caching them as of 0.3.2.6-alpha, but
      we forgot to say so in the man page. Fixes bug 26052; bugfix
1117
1118
1119
1120
1121
1122
      on 0.3.2.6-alpha.

  o Minor bugfixes (error reporting):
    - Improve tolerance for directory authorities with skewed clocks.
      Previously, an authority with a clock more than 60 seconds ahead
      could cause a client with a correct clock to warn that the
Nick Mathewson's avatar
Nick Mathewson committed
1123
      client's clock was behind. Now the clocks of a majority of
1124
      directory authorities have to be ahead of the client before this
Nick Mathewson's avatar
Nick Mathewson committed
1125
      warning will occur. Fixes bug 25756; bugfix on 0.2.2.25-alpha.
1126

Nick Mathewson's avatar
Nick Mathewson committed
1127
1128
1129
  o Minor bugfixes (Linux seccomp2 sandbox):
    - Allow the nanosleep() system call, which glibc uses to implement
      sleep() and usleep(). Fixes bug 24969; bugfix on 0.2.5.1-alpha.
1130

Nick Mathewson's avatar
Nick Mathewson committed
1131
1132
1133
  o Minor bugfixes (onion service):
    - Fix a memory leak when a v3 onion service is configured and gets a
      SIGHUP signal. Fixes bug 25901; bugfix on 0.3.2.1-alpha.
Nick Mathewson's avatar
Nick Mathewson committed
1134
1135
1136
1137
    - When parsing the descriptor signature, look for the token plus an
      extra white-space at the end. This is more correct but also will
      allow us to support new fields that might start with "signature".
      Fixes bug 26069; bugfix on 0.3.0.1-alpha.
1138
1139

  o Minor bugfixes (path selection):
Nick Mathewson's avatar
Nick Mathewson committed
1140
1141
1142
1143
    - Only select relays when they have the descriptors we prefer to use
      for them. This change fixes a bug where we could select a relay
      because it had _some_ descriptor, but reject it later with a
      nonfatal assertion error because it didn't have the exact one we
1144
1145
1146
1147
      wanted. Fixes bugs 25691 and 25692; bugfix on 0.3.3.4-alpha.

  o Minor bugfixes (portability):
    - Do not align mmap length, as it is not required by POSIX, and the
Nick Mathewson's avatar
Nick Mathewson committed
1148
1149
      getpagesize function is deprecated. Fixes bug 25399; bugfix
      on 0.1.1.23.
1150

Nick Mathewson's avatar
Nick Mathewson committed
1151
1152
1153
1154
1155
  o Minor bugfixes (portability, FreeBSD):
    - In have_enough_mem_for_dircache(), the variable DIRCACHE_MIN_MEM_MB
      does not stringify on FreeBSD, so we switch to tor_asprintf().
      Fixes bug 20887; bugfix on 0.2.8.1-alpha. Patch by Neel Chauhan.

1156
1157
  o Minor bugfixes (relay statistics):
    - When a relay is collecting internal statistics about how many
Nick Mathewson's avatar
Nick Mathewson committed
1158
1159
1160
1161
1162
      create cell requests it has seen of each type, accurately count
      the requests from relays that temporarily fall out of the
      consensus. (To be extra conservative, we were already ignoring
      requests from clients in our counts, and we continue ignoring them
      here.) Fixes bug 24910; bugfix on 0.2.4.17-rc.
1163
1164

  o Minor bugfixes (relay, crash):
1165
    - Avoid a crash when running with DirPort set but ORPort turned off.
1166
1167
1168
1169
      Fixes a case of bug 23693; bugfix on 0.3.1.1-alpha.

  o Minor bugfixes (restart-in-process):
    - When shutting down, Tor now clears all the flags in the control.c
Nick Mathewson's avatar
Nick Mathewson committed
1170
1171
      module. This should prevent a bug where authentication cookies are
      not generated on restart. Fixes bug 25512; bugfix on 0.3.3.1-alpha.
1172

Nick Mathewson's avatar
Nick Mathewson committed
1173
  o Minor bugfixes (testing):
Nick Mathewson's avatar
Nick Mathewson committed
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
    - When testing workqueue event-cancellation, make sure that we
      actually cancel an event, and that cancel each event with equal
      probability. (It was previously possible, though extremely
      unlikely, for our event-canceling test not to cancel any events.)
      Fixes bug 26008; bugfix on 0.2.6.3-alpha.
    - Repeat part of the test in test_client_pick_intro() a number of
      times, to give it consistent coverage. Fixes bug 25996; bugfix
      on 0.3.2.1-alpha.
    - Remove randomness from the hs_common/responsible_hsdirs test, so
      that it always takes the same path through the function it tests.
1184
      Fixes bug 25997; bugfix on 0.3.2.1-alpha.
Nick Mathewson's avatar
Nick Mathewson committed
1185
1186
1187
1188
1189
    - Change the behavior of the "channel/outbound" test so that it
      never causes a 10-second rollover for the EWMA circuitmux code.
      Previously, this behavior would happen randomly, and result in
      fluctuating test coverage. Fixes bug 25994; bugfix
      on 0.3.3.1-alpha.
1190
1191
    - Use X509_new() to allocate certificates that will be freed later
      with X509_free(). Previously, some parts of the unit tests had
Nick Mathewson's avatar
Nick Mathewson committed
1192
1193
1194
1195
1196
1197
1198
1199
      used tor_malloc_zero(), which is incorrect, and which caused test
      failures on Windows when they were built with extra hardening.
      Fixes bugs 25943 and 25944; bugfix on 0.2.8.1-alpha. Patch by
      Marcin Cieślak.
    - While running the circuit_timeout test, fix the PRNG to a
      deterministic AES stream, so that the test coverage from this test
      will itself be deterministic. Fixes bug 25995; bugfix
      on 0.2.2.2-alpha.
1200
1201

  o Minor bugfixes (vanguards):
Nick Mathewson's avatar
Nick Mathewson committed
1202
1203
1204
1205
1206
    - Allow the last hop in a vanguard circuit to be the same as our
      first, to prevent the adversary from influencing guard node choice
      by choice of last hop. Also prevent the creation of A - B - A
      paths, or A - A paths, which are forbidden by relays. Fixes bug
      25870; bugfix on 0.3.3.1-alpha.
1207
1208

  o Code simplification and refactoring:
Nick Mathewson's avatar
Nick Mathewson committed
1209
1210
1211
    - Remove duplicate code in parse_{c,s}method_line and bootstrap
      their functionalities into a single function. Fixes bug 6236;
      bugfix on 0.2.3.6-alpha.
Nick Mathewson's avatar
Nick Mathewson committed
1212
1213
1214
1215
1216
    - We remove the PortForwsrding and PortForwardingHelper options,
      related functions, and the port_forwarding tests. These options
      were used by the now-deprecated Vidalia to help ordinary users
      become Tor relays or bridges. Closes ticket 25409. Patch by
      Neel Chauhan.
1217
    - In order to make the OR and dir checking function in router.c less
Nick Mathewson's avatar
Nick Mathewson committed
1218
      confusing we renamed some functions and
1219
      consider_testing_reachability() has been split into
Nick Mathewson's avatar
Nick Mathewson committed
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
      router_should_check_reachability() and
      router_do_reachability_checks(). Also we improved the documentation
      in some functions. Closes ticket 18918.
    - Initial work to isolate Libevent usage to a handful of modules in
      our codebase, to simplify our call structure, and so that we can
      more easily change event loops in the future if needed. Closes
      ticket 23750.
    - Introduce a function to call getsockname() and return tor_addr_t,
      to save a little complexity throughout the codebase. Closes
      ticket 18105.
1230
1231
1232
    - Make hsdir_index in node_t a hsdir_index_t rather than a pointer
      as hsdir_index is always present. Also, we move hsdir_index_t into
      or.h. Closes ticket 23094. Patch by Neel Chauhan.
Nick Mathewson's avatar
Nick Mathewson committed
1233
1234
1235
1236
    - Merge functions used for describing nodes and suppress the
      functions that do not allocate memory for the output buffer
      string. NODE_DESC_BUF_LEN constant and format_node_description()
      function cannot be used externally from router.c module anymore.
1237
1238
1239
1240
1241
      Closes ticket 25432. Patch by valentecaio.
    - Our main loop has been simplified so that all important operations
      happen inside events. Previously, some operations had to happen
      outside the event loop, to prevent infinite sequences of event
      activations. Closes ticket 25374.
Nick Mathewson's avatar
Nick Mathewson committed
1242
1243
1244
1245
    - Put a SHA1 public key digest in hs_service_intro_point_t, and use
      it in register_intro_circ() and service_intro_point_new(). This
      prevents the digest from being re-calculated each time. Closes
      ticket 23107. Patch by Neel Chauhan.
1246
1247
    - Refactor token-bucket implementations to use a common backend.
      Closes ticket 25766.
Nick Mathewson's avatar
Nick Mathewson committed
1248
1249
1250
1251
1252
1253
    - Remove extern declaration of stats_n_seconds_working variable from
      main, protecting its accesses with get_uptime() and reset_uptime()
      functions. Closes ticket 25081, patch by “valentecaio”.
    - Remove our previous logic for "cached gettimeofday()" -- our
      coarse monotonic timers are fast enough for this purpose, and far
      less error-prone. Implements part of ticket 25927.
1254
1255
1256
1257
1258
    - Remove the return value for fascist_firewall_choose_address_base(),
      and sister functions such as fascist_firewall_choose_address_node()
      and fascist_firewall_choose_address_rs(). Also, while we're here,
      initialize the ap argument as leaving it uninitialized can pose a
      security hazard. Closes ticket 24734. Patch by Neel Chauhan.
Nick Mathewson's avatar
Nick Mathewson committed
1259
1260
1261
1262
    - Rename two fields of connection_t struct. timestamp_lastwritten is
      renamed to timestamp_last_write_allowed and timestamp_lastread is
      renamed to timestamp_last_read_allowed. Closes ticket 24714, patch
      by "valentecaio".
1263
1264
    - Since Tor requires C99, remove our old workaround code for libc
      implementations where free(NULL) doesn't work. Closes ticket 24484.
Nick Mathewson's avatar
Nick Mathewson committed
1265
1266
1267
    - Use our standard rate-limiting code to deal with excessive
      libevent failures, rather than the hand-rolled logic we had
      before. Closes ticket 26016.
1268
    - We remove the return value of node_get_prim_orport() and
Nick Mathewson's avatar
Nick Mathewson committed
1269
1270
1271
1272
1273
1274
1275
1276
      node_get_prim_dirport(), and introduce node_get_prim_orport() in
      node_ipv6_or_preferred() and node_ipv6_dir_preferred() in order to
      check for a null address. Closes ticket 23873. Patch by
      Neel Chauhan.
    - We switch to should_record_bridge_info() in
      geoip_note_client_seen() and options_need_geoip_info() instead of
      accessing the configuration values directly. Fixes bug 25290;
      bugfix on 0.2.1.6-alpha. Patch by Neel Chauhan.
1277
1278

  o Deprecated features:
Nick Mathewson's avatar
Nick Mathewson committed
1279
    - As we are not recommending 0.2.5 anymore, we require relays that
Nick Mathewson's avatar
Nick Mathewson committed
1280
      once had an ed25519 key associated with their RSA key to always
Nick Mathewson's avatar
Nick Mathewson committed
1281
      have that key, instead of allowing them to drop back to a version
Nick Mathewson's avatar
Nick Mathewson committed
1282
1283
1284
      that didn't support ed25519. This means they need to use a new RSA
      key if the want to downgrade to an older version of tor without
      ed25519. Closes ticket 20522.
1285
1286

  o Documentation:
Nick Mathewson's avatar
Nick Mathewson committed
1287
1288
    - Correct an IPv6 error in the documentation for ExitPolicy. Closes
      ticket 25857. Patch from "CTassisF".
1289
1290

  o Removed features:
Nick Mathewson's avatar
Nick Mathewson committed
1291
1292
1293
1294
1295
    - Directory authorities will no longer support voting according to
      any consensus method before consensus method 25. This keeps
      authorities compatible with all authorities running 0.2.9.8 and
      later, and does not break any clients or relays. Implements ticket
      24378 and proposal 290.
1296
    - The PortForwarding and PortForwardingHelper features have been
Nick Mathewson's avatar
Nick Mathewson committed
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
      removed. The reasoning is, given that implementations of NAT
      traversal protocols within common consumer grade routers are
      frequently buggy, and that the target audience for a NAT punching
      feature is a perhaps less-technically-inclined relay operator,
      when the helper fails to setup traversal the problems are usually
      deep, ugly, and very router specific, making them horrendously
      impossible for technical support to reliable assist with, and thus
      resulting in frustration all around. Unfortunately, relay
      operators who would like to run relays behind NATs will need to
      become more familiar with the port forwarding configurations on
      their local router. Closes 25409.
    - The TestingEnableTbEmptyEvent option has been removed. It was used
      in testing simulations to measure how often connection buckets
      were emptied, in order to improve our scheduling, but it has not
1311
1312
1313
      been actively used in years. Closes ticket 25760.
    - The old "round-robin" circuit multiplexer (circuitmux)
      implementation has been removed, along with a fairly large set of
Nick Mathewson's avatar
Nick Mathewson committed
1314
      code that existed to support it. It has not been the default
1315
1316
1317
1318
1319
      circuitmux since we introduced the "EWMA" circuitmux in 0.2.4.x,
      but it still required an unreasonable amount of memory and CPU.
      Closes ticket 25268.


1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
Changes in version 0.3.3.5-rc - 2018-04-15
  Tor 0.3.3.5-rc fixes various bugs in earlier versions of Tor,
  including some that could affect reliability or correctness.

  This is the first release candidate in the 0.3.3 series. If we find no
  new bugs or regression here, then the first stable 0.3.3 release will
  be nearly identical to this one.

  o Major bugfixes (security, protover, voting):
    - Revise Rust implementation of protover to use a more memory-
      efficient voting algorithm and corresponding data structures, thus
      avoiding a potential memory-based DoS attack where specially
      crafted protocol strings would expand to fill available memory.
      Fixes bug 24031; bugfix on 0.3.3.1-alpha.

  o Major bugfixes (performance, load balancing):
    - Directory authorities no longer vote in favor of the Guard flag
      for relays without directory support. Starting in Tor
      0.3.0.1-alpha, clients have been avoiding using such relays in the
      Guard position, leading to increasingly broken load balancing for
      the 5%-or-so of Guards that don't advertise directory support.
      Fixes bug 22310; bugfix on 0.3.0.6.

  o Minor feature (continuous integration):
    - Update the Travis CI configuration to use the stable Rust channel,
      now that we have decided to require that. Closes ticket 25714.

  o Minor features (config options):
    - Change the way the default value for MaxMemInQueues is calculated.
      We now use 40% of the hardware RAM if the system has 8 GB RAM or
      more. Otherwise we use the former value of 75%. Closes
      ticket 24782.

  o Minor features (geoip):
    - Update geoip and geoip6 to the April 3 2018 Maxmind GeoLite2
      Country database. Closes ticket 25718.

  o Minor bugfixes (client):
    - When using a listed relay as a bridge, and also using
      microdescriptors, and considering that relay as a non-bridge in a
      circuit, treat its microdescriptor as a valid source of
      information about that relay. This change should prevent a non-
      fatal assertion error. Fixes bug 25691; bugfix on 0.3.3.4-alpha.

  o Minor bugfixes (controller):
    - Restore the correct operation of the RESOLVE command, which had
      been broken since we added the ability to enable/disable DNS on
      specific listener ports. Fixes bug 25617; bugfix on 0.2.9.3-alpha.

  o Minor bugfixes (distribution, compilation, rust):
    - Build correctly when the rust dependencies submodule is loaded,
      but the TOR_RUST_DEPENDENCIES environment variable is not set.
      Fixes bug 25679; bugfix on 0.3.3.1-alpha.
    - Actually include all of our Rust source in our source
      distributions. (Previously, a few of the files were accidentally
      omitted.) Fixes bug 25732; bugfix on 0.3.3.2-alpha.

  o Minor bugfixes (documentation):
    - Document that the PerConnBW{Rate,Burst} options will fall back to
      their corresponding consensus parameters only if those parameters
      are set. Previously we had claimed that these values would always
      be set in the consensus. Fixes bug 25296; bugfix on 0.2.2.7-alpha.
    - Revert a misformatting issue in the ExitPolicy documentation.
      Fixes bug 25582; bugfix on 0.3.3.1-alpha.

1385
  o Minor bugfixes (exit relay DNS retries):
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
    - Re-attempt timed-out DNS queries 3 times before failure, since our
      timeout is 5 seconds for them, but clients wait 10-15. Also allow
      slightly more timeouts per resolver when an exit has multiple
      resolvers configured. Fixes bug 21394; bugfix on 0.3.1.9.

  o Minor bugfixes (onion services):
    - Re-instate counting the client HSDir fetch circuits against the
      MaxClientCircuitsPending rate limit. Fixes bug 24989; bugfix
      on 0.3.3.1-alpha.
    - Remove underscores from the _HSLayer{2,3}Nodes options. This
      expert-user configuration can now be enabled as HSLayer{2,3}Nodes.
      Fixes bug 25581; bugfix on 0.3.3.1-alpha

  o Code simplification and refactoring:
    - Move the list of default directory authorities to its own file.
      Closes ticket 24854. Patch by "beastr0".

  o Documentation (manpage, denial of service):
    - Provide more detail about the denial-of-service options, by
      listing each mitigation and explaining how they relate. Closes
      ticket 25248.


1409
1410
1411
Changes in version 0.3.3.4-alpha - 2018-03-29
  Tor 0.3.3.4-alpha includes various bugfixes for issues found during
  the alpha testing of earlier releases in its series. We are
1412
  approaching a stable 0.3.3.4-alpha release: more testing is welcome!
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456

  o New system requirements:
    - When built with Rust, Tor now depends on version 0.2.39 of the
      libc crate. Closes tickets 25310 and 25664.

  o Major bugfixes (relay, connection):
    - If we have failed to connect to a relay and received a connection
      refused, timeout, or similar error (at the TCP level), do not try
      that same address/port again for 60 seconds after the failure has
      occurred. Fixes bug 24767; bugfix on 0.0.6.

  o Minor features (geoip):
    - Update geoip and geoip6 to the March 8 2018 Maxmind GeoLite2
      Country database. Closes ticket 25469.

  o Minor features (log messages):
    - Improve log message in the out-of-memory handler to include
      information about memory usage from the different compression
      backends. Closes ticket 25372.

  o Minor features (sandbox):
    - Explicitly permit the poll() system call when the Linux
      seccomp2-based sandbox is enabled: apparently, some versions of
      libc use poll() when calling getpwnam(). Closes ticket 25313.

  o Minor bugfixes (C correctness):
    - Fix a very unlikely (impossible, we believe) null pointer
      dereference. Fixes bug 25629; bugfix on 0.2.9.15. Found by
      Coverity; this is CID 1430932.

  o Minor bugfixes (channel, client):
    - Better identify client connection when reporting to the geoip
      client cache. Fixes bug 24904; bugfix on 0.3.1.7.

  o Minor bugfixes (compilation):
    - Fix a C99 compliance issue in our configuration script that caused
      compilation issues when compiling Tor with certain versions of
      xtools. Fixes bug 25474; bugfix on 0.3.2.5-alpha.

  o Minor bugfixes (controller, reliability):
    - Avoid a (nonfatal) assertion failure when extending a one-hop
      circuit from the controller to become a multihop circuit. Fixes
      bug 24903; bugfix on 0.2.5.2-alpha.

1457
1458
  o Major bugfixes (networking):
    - Tor will no longer reject IPv6 address strings from Tor Browser
1459
1460
      when they are passed as hostnames in SOCKS5 requests. Fixes bug
      25036, bugfix on Tor 0.3.1.2.
1461
1462

  o Minor bugfixes (networking):
1463
1464
1465
1466
    - string_is_valid_hostname() will not consider IP strings to be
      valid hostnames. Fixes bug 25055; bugfix on Tor 0.2.5.5.

  o Minor bugfixes (onion service v3):
1467
    - Avoid an assertion failure when the next onion service
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
      descriptor rotation type is out of sync with the consensus's
      valid-after time. Instead, log a warning message with extra
      information, so we can better hunt down the cause of this
      assertion. Fixes bug 25306; bugfix on 0.3.2.1-alpha.

  o Minor bugfixes (testing):
    - Avoid intermittent test failures due to a test that had relied on
      onion service introduction point creation finishing within 5
      seconds of real clock time. Fixes bug 25450; bugfix
      on 0.3.1.3-alpha.
    - Rust crates are now automatically detected and tested. Previously,
      some crates were not tested by `make test-rust` due to a static
      string in the `src/test/test_rust.sh` script specifying which
      crates to test. Fixes bug 25560; bugfix on 0.3.3.3-alpha.

  o Minor bugfixes (testing, benchmarks):
    - Fix a crash when running benchmark tests on win32 systems. The
      crash was due to a mutex that wasn't initialized before logging
      and options were initialized. Fixes bug 25479; bugfix
      on 0.3.3.3-alpha.

  o Minor bugfixes (warnings, ipv6):
    - Avoid a bug warning that could occur when trying to connect to a
      relay over IPv6. This warning would occur on a Tor instance that
      downloads router descriptors, but prefers to use microdescriptors.
      Fixes bug 25213; bugfix on 0.3.3.1-alpha.

  o Code simplification and refactoring:
    - Remove the old (deterministic) directory retry logic entirely:
      We've used exponential backoff exclusively for some time. Closes
      ticket 23814.

  o Documentation:
    - Improved the documentation of AccountingStart parameter. Closes
      ticket 23635.
    - Update the documentation for "Log" to include the current list of
      logging domains. Closes ticket 25378.

1506

1507
1508
1509
Changes in version 0.3.1.10 - 2018-03-03
  Tor 0.3.1.10 backports a number of bugfixes, including important fixes for
  security issues.
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519

  It includes an important security fix for a remote crash attack
  against directory authorities, tracked as TROVE-2018-001.

  This release also backports our new system for improved resistance to
  denial-of-service attacks against relays.

  This release also fixes several minor bugs and annoyances from
  earlier releases.

1520
1521
1522
1523
1524
1525
1526
1527
1528
  All directory authorities should upgrade to one of the versions
  released today. Relays running 0.3.1.x may wish to update to one of
  the versions released today, for the DoS mitigations.

  Please note: according to our release calendar, Tor 0.3.1 will no
  longer be supported after 1 July 2018. If you will be running Tor
  after that date, you should make sure to plan to upgrade to the latest
  stable version, or downgrade to 0.2.9 (which will receive long-term
  support).
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549

  o Major bugfixes (denial-of-service, directory authority, backport from 0.3.3.3-alpha):
    - Fix a protocol-list handling bug that could be used to remotely crash
      directory authorities with a null-pointer exception. Fixes bug 25074;
      bugfix on 0.2.9.4-alpha. Also tracked as TROVE-2018-001 and
      CVE-2018-0490.

  o Major features (denial-of-service mitigation, backport from 0.3.3.2-alpha):
    - Give relays some defenses against the recent network overload. We
      start with three defenses (default parameters in parentheses).
      First: if a single client address makes too many concurrent
      connections (>100), hang up on further connections. Second: if a
      single client address makes circuits too quickly (more than 3 per
      second, with an allowed burst of 90) while also having too many
      connections open (3), refuse new create cells for the next while
      (1-2 hours). Third: if a client asks to establish a rendezvous
      point to you directly, ignore the request. These defenses can be
      manually controlled by new torrc options, but relays will also
      take guidance from consensus parameters, so there's no need to
      configure anything manually. Implements ticket 24902.

1550
1551
1552
1553
  o Minor features (linux seccomp2 sandbox, backport from 0.3.2.5-alpha):
    - Update the sandbox rules so that they should now work correctly
      with Glibc 2.26. Closes ticket 24315.

1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
  o Major bugfixes (onion services, retry behavior, backport from 0.3.3.1-alpha):
    - Fix an "off by 2" error in counting rendezvous failures on the
      onion service side. While we thought we would stop the rendezvous
      attempt after one failed circuit, we were actually making three
      circuit attempts before giving up. Now switch to a default of 2,
      and allow the consensus parameter "hs_service_max_rdv_failures" to
      override. Fixes bug 24895; bugfix on 0.0.6.

  o Major bugfixes (protocol versions, backport from 0.3.3.2-alpha):
    - Add Link protocol version 5 to the supported protocols list. Fixes
      bug 25070; bugfix on 0.3.1.1-alpha.

  o Major bugfixes (relay, backport from 0.3.3.1-alpha):
    - Fix a set of false positives where relays would consider
      connections to other relays as being client-only connections (and
      thus e.g. deserving different link padding schemes) if those
      relays fell out of the consensus briefly. Now we look only at the
      initial handshake and whether the connection authenticated as a
      relay. Fixes bug 24898; bugfix on 0.3.1.1-alpha.

  o Minor features (denial-of-service avoidance, backport from 0.3.3.2-alpha):
    - Make our OOM handler aware of the geoip client history cache so it
      doesn't fill up the memory. This check is important for IPv6 and
      our DoS mitigation subsystem. Closes ticket 25122.

1579
1580
1581
1582
1583
  o Minor feature (relay statistics, backport from 0.3.2.6-alpha):
    - Change relay bandwidth reporting stats interval from 4 hours to 24
      hours in order to reduce the efficiency of guard discovery
      attacks. Fixes ticket 23856.

1584
1585
1586
1587
1588
1589
1590
  o Minor features (compatibility, OpenSSL, backport from 0.3.3.3-alpha):
    - Tor will now support TLS1.3 once OpenSSL 1.1.1 is released.
      Previous versions of Tor would not have worked with OpenSSL 1.1.1,
      since they neither disabled TLS 1.3 nor enabled any of the
      ciphersuites it requires. Now we enable the TLS 1.3 ciphersuites.
      Closes ticket 24978.

1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
  o Minor features (fallback directory mirrors, backport from 0.3.2.9):
    - The fallback directory list has been re-generated based on the
      current status of the network. Tor uses fallback directories to
      bootstrap when it doesn't yet have up-to-date directory
      information. Closes ticket 24801.
    - Make the default DirAuthorityFallbackRate 0.1, so that clients
      prefer to bootstrap from fallback directory mirrors. This is a
      follow-up to 24679, which removed weights from the default
      fallbacks. Implements ticket 24681.

1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
  o Minor features (geoip):
    - Update geoip and geoip6 to the February 7 2018 Maxmind GeoLite2
      Country database.

  o Minor bugfix (channel connection, backport from 0.3.3.2-alpha):
    - Use the actual observed address of an incoming relay connection,
      not the canonical address of the relay from its descriptor, when
      making decisions about how to handle the incoming connection.
      Fixes bug 24952; bugfix on 0.2.4.11-alpha. Patch by "ffmancera".

1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
  o Minor bugfix (directory authority, backport from 0.3.3.2-alpha):
    - Directory authorities, when refusing a descriptor from a rejected
      relay, now explicitly tell the relay (in its logs) to set a valid
      ContactInfo address and contact the bad-relays@ mailing list.
      Fixes bug 25170; bugfix on 0.2.9.1.

  o Minor bugfixes (address selection, backport from 0.3.2.9):
    - When the fascist_firewall_choose_address_ functions don't find a
      reachable address, set the returned address to the null address
      and port. This is a precautionary measure, because some callers do
      not check the return value. Fixes bug 24736; bugfix
      on 0.2.8.2-alpha.

  o Major bugfixes (bootstrapping, backport from 0.3.2.5-alpha):
    - Fetch descriptors aggressively whenever we lack enough to build
      circuits, regardless of how many descriptors we are missing.
      Previously, we would delay launching the fetch when we had fewer
      than 15 missing descriptors, even if some of those descriptors
      were blocking circuits from building. Fixes bug 23985; bugfix on
      0.1.1.11-alpha. The effects of this bug became worse in
      0.3.0.3-alpha, when we began treating missing descriptors from our
      primary guards as a reason to delay circuits.
    - Don't try fetching microdescriptors from relays that have failed
      to deliver them in the past. Fixes bug 23817; bugfix
      on 0.3.0.1-alpha.

  o Minor bugfixes (compilation, backport from 0.3.2.7-rc):
    - Fix a signed/unsigned comparison warning introduced by our fix to
      TROVE-2017-009. Fixes bug 24480; bugfix on 0.2.5.16.

  o Minor bugfixes (control port, linux seccomp2 sandbox, backport from 0.3.2.5-alpha):
    - Avoid a crash when attempting to use the seccomp2 sandbox together
      with the OwningControllerProcess feature. Fixes bug 24198; bugfix
      on 0.2.5.1-alpha.

1646
1647
1648
1649
1650
1651
1652
1653
  o Minor bugfixes (denial-of-service, backport from 0.3.3.3-alpha):
    - Fix a possible crash on malformed consensus. If a consensus had
      contained an unparseable protocol line, it could have made clients
      and relays crash with a null-pointer exception. To exploit this
      issue, however, an attacker would need to be able to subvert the
      directory authority system. Fixes bug 25251; bugfix on
      0.2.9.4-alpha. Also tracked as TROVE-2018-004.

1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
  o Minor bugfixes (directory cache, backport from 0.3.2.5-alpha):
    - Recover better from empty or corrupt files in the consensus cache
      directory. Fixes bug 24099; bugfix on 0.3.1.1-alpha.
    - When a consensus diff calculation is only partially successful,
      only record the successful parts as having succeeded. Partial
      success can happen if (for example) one compression method fails
      but the others succeed. Previously we misrecorded all the
      calculations as having succeeded, which would later cause a
      nonfatal assertion failure. Fixes bug 24086; bugfix
      on 0.3.1.1-alpha.
1664

1665
1666
1667
1668
1669
1670
  o Minor bugfixes (entry guards, backport from 0.3.2.3-alpha):
    - Tor now updates its guard state when it reads a consensus
      regardless of whether it's missing descriptors. That makes tor use
      its primary guards to fetch descriptors in some edge cases where
      it would previously have used fallback directories. Fixes bug
      23862; bugfix on 0.3.0.1-alpha.
1671
1672
1673
1674
1675
1676

  o Minor bugfixes (logging, backport from 0.3.3.2-alpha):
    - Don't treat inability to store a cached consensus object as a bug:
      it can happen normally when we are out of disk space. Fixes bug
      24859; bugfix on 0.3.1.1-alpha.

1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
  o Minor bugfixes (memory usage, backport from 0.3.2.8-rc):
    - When queuing DESTROY cells on a channel, only queue the circuit-id
      and reason fields: not the entire 514-byte cell. This fix should
      help mitigate any bugs or attacks that fill up these queues, and
      free more RAM for other uses. Fixes bug 24666; bugfix
      on 0.2.5.1-alpha.

  o Minor bugfixes (network layer, backport from 0.3.2.5-alpha):
    - When closing a connection via close_connection_immediately(), we
      mark it as "not blocked on bandwidth", to prevent later calls from
      trying to unblock it, and give it permission to read. This fixes a
      backtrace warning that can happen on relays under various
      circumstances. Fixes bug 24167; bugfix on 0.1.0.1-rc.

  o Minor bugfixes (path selection, backport from 0.3.2.4-alpha):
    - When selecting relays by bandwidth, avoid a rounding error that
      could sometimes cause load to be imbalanced incorrectly.
      Previously, we would always round upwards; now, we round towards
      the nearest integer. This had the biggest effect when a relay's
      weight adjustments should have given it weight 0, but it got
      weight 1 instead. Fixes bug 23318; bugfix on 0.2.4.3-alpha.
    - When calculating the fraction of nodes that have descriptors, and
      all nodes in the network have zero bandwidths, count the number of
      nodes instead. Fixes bug 23318; bugfix on 0.2.4.10-alpha.
    - Actually log the total bandwidth in compute_weighted_bandwidths().
      Fixes bug 24170; bugfix on 0.2.4.3-alpha.

1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
  o Minor bugfixes (performance, fragile-hardening, backport from 0.3.3.1-alpha):
    - Improve the performance of our consensus-diff application code
      when Tor is built with the --enable-fragile-hardening option set.
      Fixes bug 24826; bugfix on 0.3.1.1-alpha.

  o Minor bugfixes (OSX, backport from 0.3.3.1-alpha):
    - Don't exit the Tor process if setrlimit() fails to change the file
      limit (which can happen sometimes on some versions of OSX). Fixes
      bug 21074; bugfix on 0.0.9pre5.

1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
  o Minor bugfixes (portability, msvc, backport from 0.3.2.9):
    - Fix a bug in the bit-counting parts of our timing-wheel code on
      MSVC. (Note that MSVC is still not a supported build platform, due
      to cyptographic timing channel risks.) Fixes bug 24633; bugfix
      on 0.2.9.1-alpha.

  o Minor bugfixes (relay, partial backport):
    - Make the internal channel_is_client() function look at what sort
      of connection handshake the other side used, rather than whether
      the other side ever sent a create_fast cell to us. Backports part
      of the fixes from bugs 22805 and 24898.

1726
1727
1728
  o Minor bugfixes (spec conformance, backport from 0.3.3.3-alpha):
    - Forbid "-0" as a protocol version. Fixes part of bug 25249; bugfix on
      0.2.9.4-alpha.
1729
    - Forbid UINT32_MAX as a protocol version. Fixes part of bug 25249;
1730
1731
1732
1733
1734
1735
1736
      bugfix on 0.2.9.4-alpha.

  o Code simplification and refactoring (backport from 0.3.3.3-alpha):
    - Update the "rust dependencies" submodule to be a project-level
      repository, rather than a user repository. Closes ticket 25323.


1737
1738
1739
Changes in version 0.2.9.15 - 2018-03-03
  Tor 0.2.9.15 backports important security and stability bugfixes from
  later Tor releases.
1740

1741
  It includes an important security fix for a remote crash attack
1742
  against directory authorities, tracked as TROVE-2018-001.
1743

1744
1745
  This release also backports our new system for improved resistance to
  denial-of-service attacks against relays.
1746
1747
1748
1749

  This release also fixes several minor bugs and annoyances from
  earlier releases.

1750
1751
1752
  All directory authorities should upgrade to one of the versions
  released today. Relays running 0.2.9.x may wish to update to one of
  the versions released today, for the DoS mitigations.
1753

1754
  o Major bugfixes (denial-of-service, directory authority, backport from 0.3.3.3-alpha):
1755
1756
1757
1758
1759
    - Fix a protocol-list handling bug that could be used to remotely crash
      directory authorities with a null-pointer exception. Fixes bug 25074;
      bugfix on 0.2.9.4-alpha. Also tracked as TROVE-2018-001 and
      CVE-2018-0490.

1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
  o Major features (denial-of-service mitigation):
    - Give relays some defenses against the recent network overload. We
      start with three defenses (default parameters in parentheses).
      First: if a single client address makes too many concurrent
      connections (>100), hang up on further connections. Second: if a
      single client address makes circuits too quickly (more than 3 per
      second, with an allowed burst of 90) while also having too many
      connections open (3), refuse new create cells for the next while
      (1-2 hours). Third: if a client asks to establish a rendezvous
      point to you directly, ignore the request. These defenses can be
      manually controlled by new torrc options, but relays will also
      take guidance from consensus parameters, so there's no need to
      configure anything manually. Implements ticket 24902.

  o Major bugfixes (bootstrapping):
    - Fetch descriptors aggressively whenever we lack enough to build
      circuits, regardless of how many descriptors we are missing.
      Previously, we would delay launching the fetch when we had fewer
      than 15 missing descriptors, even if some of those descriptors
      were blocking circuits from building. Fixes bug 23985; bugfix on
      0.1.1.11-alpha. The effects of this bug became worse in
      0.3.0.3-alpha, when we began treating missing descriptors from our
      primary guards as a reason to delay circuits.

  o Major bugfixes (onion services, retry behavior):
    - Fix an "off by 2" error in counting rendezvous failures on the
      onion service side. While we thought we would stop the rendezvous
      attempt after one failed circuit, we were actually making three
      circuit attempts before giving up. Now switch to a default of 2,
      and allow the consensus parameter "hs_service_max_rdv_failures" to
      override. Fixes bug 24895; bugfix on 0.0.6.

  o Minor feature (relay statistics):
    - Change relay bandwidth reporting stats interval from 4 hours to 24
      hours in order to reduce the efficiency of guard discovery
      attacks. Fixes ticket 23856.

1797
1798
1799
1800
1801
1802
1803
  o Minor features (compatibility, OpenSSL):
    - Tor will now support TLS1.3 once OpenSSL 1.1.1 is released.
      Previous versions of Tor would not have worked with OpenSSL 1.1.1,
      since they neither disabled TLS 1.3 nor enabled any of the
      ciphersuites it requires. Now we enable the TLS 1.3 ciphersuites.
      Closes ticket 24978.

1804
1805
1806
1807
  o Minor features (denial-of-service avoidance):
    - Make our OOM handler aware of the geoip client history cache so it
      doesn't fill up the memory. This check is important for IPv6 and
      our DoS mitigation subsystem. Closes ticket 25122.
1808

1809
1810
1811
1812
1813
1814
1815
1816
1817
  o Minor features (fallback directory mirrors):
    - The fallback directory list has been re-generated based on the
      current status of the network. Tor uses fallback directories to
      bootstrap when it doesn't yet have up-to-date directory
      information. Closes ticket 24801.
    - Make the default DirAuthorityFallbackRate 0.1, so that clients
      prefer to bootstrap from fallback directory mirrors. This is a
      follow-up to 24679, which removed weights from the default
      fallbacks. Implements ticket 24681.
1818

1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
  o Minor features (geoip):
    - Update geoip and geoip6 to the February 7 2018 Maxmind GeoLite2
      Country database.

  o Minor features (linux seccomp2 sandbox):
    - Update the sandbox rules so that they should now work correctly
      with Glibc 2.26. Closes ticket 24315.

  o Minor bugfix (channel connection):
    - Use the actual observed address of an incoming relay connection,
      not the canonical address of the relay from its descriptor, when
      making decisions about how to handle the incoming connection.
      Fixes bug 24952; bugfix on 0.2.4.11-alpha. Patch by "ffmancera".

  o Minor bugfix (directory authority):
    - Directory authorities, when refusing a descriptor from a rejected
      relay, now explicitly tell the relay (in its logs) to set a valid
      ContactInfo address and contact the bad-relays@ mailing list.
      Fixes bug 25170; bugfix on 0.2.9.1.

  o Minor bugfixes (address selection):
    - When the fascist_firewall_choose_address_ functions don't find a
      reachable address, set the returned address to the null address
      and port. This is a precautionary measure, because some callers do
      not check the return value. Fixes bug 24736; bugfix
      on 0.2.8.2-alpha.

  o Minor bugfixes (compilation):
    - Fix a signed/unsigned comparison warning introduced by our fix to
      TROVE-2017-009. Fixes bug 24480; bugfix on 0.2.5.16.

  o Minor bugfixes (control port, linux seccomp2 sandbox):
    - Avoid a crash when attempting to use the seccomp2 sandbox together
      with the OwningControllerProcess feature. Fixes bug 24198; bugfix
      on 0.2.5.1-alpha.

  o Minor bugfixes (denial-of-service, backport from 0.3.3.3-alpha):
1856
1857
1858
1859
1860
1861
1862
    - Fix a possible crash on malformed consensus. If a consensus had
      contained an unparseable protocol line, it could have made clients
      and relays crash with a null-pointer exception. To exploit this
      issue, however, an attacker would need to be able to subvert the
      directory authority system. Fixes bug 25251; bugfix on
      0.2.9.4-alpha. Also tracked as TROVE-2018-004.

1863
1864
1865
1866
1867
1868
  o Minor bugfixes (memory usage):
    - When queuing DESTROY cells on a channel, only queue the circuit-id
      and reason fields: not the entire 514-byte cell. This fix should
      help mitigate any bugs or attacks that fill up these queues, and
      free more RAM for other uses. Fixes bug 24666; bugfix
      on 0.2.5.1-alpha.
1869

1870
1871
1872
1873
1874
1875
  o Minor bugfixes (network layer):
    - When closing a connection via close_connection_immediately(), we
      mark it as "not blocked on bandwidth", to prevent later calls from
      trying to unblock it, and give it permission to read. This fixes a
      backtrace warning that can happen on relays under various
      circumstances. Fixes bug 24167; bugfix on 0.1.0.1-rc.
1876

1877
1878
1879
1880
  o Minor bugfixes (OSX):
    - Don't exit the Tor process if setrlimit() fails to change the file
      limit (which can happen sometimes on some versions of OSX). Fixes
      bug 21074; bugfix on 0.0.9pre5.
1881

1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
  o Minor bugfixes (path selection):
    - When selecting relays by bandwidth, avoid a rounding error that
      could sometimes cause load to be imbalanced incorrectly.
      Previously, we would always round upwards; now, we round towards
      the nearest integer. This had the biggest effect when a relay's
      weight adjustments should have given it weight 0, but it got
      weight 1 instead. Fixes bug 23318; bugfix on 0.2.4.3-alpha.
    - When calculating the fraction of nodes that have descriptors, and
      all nodes in the network have zero bandwidths, count the number of
      nodes instead. Fixes bug 23318; bugfix on 0.2.4.10-alpha.
    - Actually log the total bandwidth in compute_weighted_bandwidths().
      Fixes bug 24170; bugfix on 0.2.4.3-alpha.

  o Minor bugfixes (portability, msvc):
    - Fix a bug in the bit-counting parts of our timing-wheel code on
      MSVC. (Note that MSVC is still not a supported build platform, due
      to cryptographic timing channel risks.) Fixes bug 24633; bugfix
      on 0.2.9.1-alpha.

  o Minor bugfixes (relay):
    - Make the internal channel_is_client() function look at what sort
      of connection handshake the other side used, rather than whether
      the other side ever sent a create_fast cell to us. Backports part
      of the fixes from bugs 22805 and 24898.

  o Minor bugfixes (spec conformance, backport from 0.3.3.3-alpha):
1908
1909
    - Forbid "-0" as a protocol version. Fixes part of bug 25249; bugfix on
      0.2.9.4-alpha.
1910
    - Forbid UINT32_MAX as a protocol version. Fixes part of bug 25249;
1911
1912
1913
      bugfix on 0.2.9.4-alpha.


1914
1915
1916
1917
Changes in version 0.3.2.10 - 2018-03-03
  Tor 0.3.2.10 is the second stable release in the 0.3.2 series. It
  backports a number of bugfixes, including important fixes for security
  issues.
1918
1919
1920
1921

  It includes an important security fix for a remote crash attack
  against directory authorities, tracked as TROVE-2018-001.

1922
1923
1924
1925
1926
1927
1928
1929
  Additionally, it backports a fix for a bug whose severity we have
  upgraded: Bug 24700, which was fixed in 0.3.3.2-alpha, can be remotely
  triggered in order to crash relays with a use-after-free pattern. As
  such, we are now tracking that bug as TROVE-2018-002 and
  CVE-2018-0491, and backporting it to earlier releases. This bug
  affected versions 0.3.2.1-alpha through 0.3.2.9, as well as version
  0.3.3.1-alpha.

1930
1931
1932
1933
1934
1935
  This release also backports our new system for improved resistance to
  denial-of-service attacks against relays.

  This release also fixes several minor bugs and annoyances from
  earlier releases.

1936
1937
1938
1939
  Relays running 0.3.2.x SHOULD upgrade to one of the versions released
  today, for the fix to TROVE-2018-002. Directory authorities should
  also upgrade. (Relays on earlier versions might want to update too for
  the DoS mitigations.)
1940
1941
1942
1943
1944
1945
1946

  o Major bugfixes (denial-of-service, directory authority, backport from 0.3.3.3-alpha):
    - Fix a protocol-list handling bug that could be used to remotely crash
      directory authorities with a null-pointer exception. Fixes bug 25074;
      bugfix on 0.2.9.4-alpha. Also tracked as TROVE-2018-001 and
      CVE-2018-0490.

1947
1948
1949
1950
1951
  o Major bugfixes (scheduler, KIST, denial-of-service, backport from 0.3.3.2-alpha):
    - Avoid adding the same channel twice in the KIST scheduler pending
      list, which could lead to remote denial-of-service use-after-free
      attacks against relays. Fixes bug 24700; bugfix on 0.3.2.1-alpha.

1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
  o Major features (denial-of-service mitigation, backport from 0.3.3.2-alpha):
    - Give relays some defenses against the recent network overload. We
      start with three defenses (default parameters in parentheses).
      First: if a single client address makes too many concurrent
      connections (>100), hang up on further connections. Second: if a
      single client address makes circuits too quickly (more than 3 per
      second, with an allowed burst of 90) while also having too many
      connections open (3), refuse new create cells for the next while
      (1-2 hours). Third: if a client asks to establish a rendezvous
      point to you directly, ignore the request. These defenses can be
      manually controlled by new torrc options, but relays will also
      take guidance from consensus parameters, so there's no need to
      configure anything manually. Implements ticket 24902.

  o Major bugfixes (onion services, retry behavior, backport from 0.3.3.1-alpha):
    - Fix an "off by 2" error in counting rendezvous failures on the
      onion service side. While we thought we would stop the rendezvous
      attempt after one failed circuit, we were actually making three
      circuit attempts before giving up. Now switch to a default of 2,
      and allow the consensus parameter "hs_service_max_rdv_failures" to
      override. Fixes bug 24895; bugfix on 0.0.6.
1973
1974
1975
1976
    - New-style (v3) onion services now obey the "max rendezvous circuit
      attempts" logic. Previously they would make as many rendezvous
      circuit attempts as they could fit in the MAX_REND_TIMEOUT second
      window before giving up. Fixes bug 24894; bugfix on 0.3.2.1-alpha.
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989

  o Major bugfixes (protocol versions, backport from 0.3.3.2-alpha):
    - Add Link protocol version 5 to the supported protocols list. Fixes
      bug 25070; bugfix on 0.3.1.1-alpha.

  o Major bugfixes (relay, backport from 0.3.3.1-alpha):
    - Fix a set of false positives where relays would consider
      connections to other relays as being client-only connections (and
      thus e.g. deserving different link padding schemes) if those
      relays fell out of the consensus briefly. Now we look only at the
      initial handshake and whether the connection authenticated as a
      relay. Fixes bug 24898; bugfix on 0.3.1.1-alpha.

1990
1991
1992
1993
1994
  o Major bugfixes (scheduler, consensus, backport from 0.3.3.2-alpha):
    - The scheduler subsystem was failing to promptly notice changes in
      consensus parameters, making it harder to switch schedulers
      network-wide. Fixes bug 24975; bugfix on 0.3.2.1-alpha.

1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
  o Minor features (denial-of-service avoidance, backport from 0.3.3.2-alpha):
    - Make our OOM handler aware of the geoip client history cache so it
      doesn't fill up the memory. This check is important for IPv6 and
      our DoS mitigation subsystem. Closes ticket 25122.

  o Minor features (compatibility, OpenSSL, backport from 0.3.3.3-alpha):
    - Tor will now support TLS1.3 once OpenSSL 1.1.1 is released.
      Previous versions of Tor would not have worked with OpenSSL 1.1.1,
      since they neither disabled TLS 1.3 nor enabled any of the
      ciphersuites it requires. Now we enable the TLS 1.3 ciphersuites.
      Closes ticket 24978.

  o Minor features (geoip):
    - Update geoip and geoip6 to the February 7 2018 Maxmind GeoLite2
      Country database.

2011
2012
2013
2014
2015
  o Minor features (logging, diagnostic, backport from 0.3.3.2-alpha):
    - When logging a failure to create an onion service's descriptor,
      also log what the problem with the descriptor was. Diagnostic
      for ticket 24972.

2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
  o Minor bugfix (channel connection, backport from 0.3.3.2-alpha):
    - Use the actual observed address of an incoming relay connection,
      not the canonical address of the relay from its descriptor, when
      making decisions about how to handle the incoming connection.
      Fixes bug 24952; bugfix on 0.2.4.11-alpha. Patch by "ffmancera".

  o Minor bugfixes (denial-of-service, backport from 0.3.3.3-alpha):
    - Fix a possible crash on malformed consensus. If a consensus had
      contained an unparseable protocol line, it could have made clients
      and relays crash with a null-pointer exception. To exploit this
      issue, however, an attacker would need to be able to subvert the
      directory authority system. Fixes bug 25251; bugfix on
      0.2.9.4-alpha. Also tracked as TROVE-2018-004.

2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
  o Minor bugfix (directory authority, backport from 0.3.3.2-alpha):
    - Directory authorities, when refusing a descriptor from a rejected
      relay, now explicitly tell the relay (in its logs) to set a valid
      ContactInfo address and contact the bad-relays@ mailing list.
      Fixes bug 25170; bugfix on 0.2.9.1.

  o Minor bugfixes (build, rust, backport from 0.3.3.1-alpha):
    - When building with Rust on OSX, link against libresolv, to work
      around the issue at https://github.com/rust-lang/rust/issues/46797.
      Fixes bug 24652; bugfix on 0.3.1.1-alpha.
2040

2041
2042
2043
2044
2045
  o Minor bugfixes (onion services, backport from 0.3.3.2-alpha):
    - Remove a BUG() statement when a client fetches an onion descriptor
      that has a lower revision counter than the one in its cache. This
      can happen in normal circumstances due to HSDir desync. Fixes bug
      24976; bugfix on 0.3.2.1-alpha.
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064

  o Minor bugfixes (logging, backport from 0.3.3.2-alpha):
    - Don't treat inability to store a cached consensus object as a bug:
      it can happen normally when we are out of disk space. Fixes bug
      24859; bugfix on 0.3.1.1-alpha.

  o Minor bugfixes (performance, fragile-hardening, backport from 0.3.3.1-alpha):
    - Improve the performance of our consensus-diff application code
      when Tor is built with the --enable-fragile-hardening option set.
      Fixes bug 24826; bugfix on 0.3.1.1-alpha.

  o Minor bugfixes (OSX, backport from 0.3.3.1-alpha):
    - Don't exit the Tor process if setrlimit() fails to change the file
      limit (which can happen sometimes on some versions of OSX). Fixes
      bug 21074; bugfix on 0.0.9pre5.

  o Minor bugfixes (spec conformance, backport from 0.3.3.3-alpha):
    - Forbid "-0" as a protocol version. Fixes part of bug 25249; bugfix on
      0.2.9.4-alpha.
2065
    - Forbid UINT32_MAX as a protocol version. Fixes part of bug 25249;
2066
2067
      bugfix on 0.2.9.4-alpha.

2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
  o Minor bugfixes (testing, backport from 0.3.3.1-alpha):
    - Fix a memory leak in the scheduler/loop_kist unit test. Fixes bug
      25005; bugfix on 0.3.2.7-rc.

  o Minor bugfixes (v3 onion services, backport from 0.3.3.2-alpha):
    - Look at the "HSRend" protocol version, not the "HSDir" protocol
      version, when deciding whether a consensus entry can support the
      v3 onion service protocol as a rendezvous point. Fixes bug 25105;
      bugfix on 0.3.2.1-alpha.

2078
2079
2080
2081
  o Code simplification and refactoring (backport from 0.3.3.3-alpha):
    - Update the "rust dependencies" submodule to be a project-level
      repository, rather than a user repository. Closes ticket 25323.

2082
2083
2084
2085
  o Documentation (backport from 0.3.3.1-alpha)
    - Document that operators who run more than one relay or bridge are
      expected to set MyFamily and ContactInfo correctly. Closes
      ticket 24526.
2086
2087


2088
2089
Changes in version 0.3.3.3-alpha - 2018-03-03
  Tor 0.3.3.3-alpha is the third alpha release for the 0.3.3.x series.
2090
  It includes an important security fix for a remote crash attack
2091
  against directory authorities tracked as TROVE-2018-001.
2092

2093
2094
2095
2096
2097
2098
  Additionally, with this release, we are upgrading the severity of a
  bug fixed in 0.3.3.2-alpha. Bug 24700, which was fixed in
  0.3.3.2-alpha, can be remotely triggered in order to crash relays with
  a use-after-free pattern. As such, we are now tracking that bug as
  TROVE-2018-002 and CVE-2018-0491. This bug affected versions
  0.3.2.1-alpha through 0.3.2.9, as well as 0.3.3.1-alpha.
2099
2100
2101
2102

  This release also fixes several minor bugs and annoyances from