ReleaseNotes 818 KB

  1. This document summarizes new features and bugfixes in each stable release
  2. of Tor. If you want to see more detailed descriptions of the changes in
  3. each development snapshot, see the ChangeLog file.
  4. Changes in version - 2017-06-08
  5. Tor fixes a pair of bugs that would allow an attacker to
  6. remotely crash a hidden service with an assertion failure. Anyone
  7. running a hidden service should upgrade to this version, or to some
  8. other version with fixes for TROVE-2017-004 and TROVE-2017-005.
  9. Tor also includes fixes for several key management bugs
  10. that sometimes made relays unreliable, as well as several other
  11. bugfixes described below.
  12. o Major bugfixes (hidden service, relay, security, backport
  13. from
  14. - Fix a remotely triggerable assertion failure when a hidden service
  15. handles a malformed BEGIN cell. Fixes bug 22493, tracked as
  16. TROVE-2017-004 and as CVE-2017-0375; bugfix on
  17. - Fix a remotely triggerable assertion failure caused by receiving a
  18. BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
  19. 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
  20. on
  21. o Major bugfixes (relay, link handshake, backport from
  22. - When performing the v3 link handshake on a TLS connection, report
  23. that we have the x509 certificate that we actually used on that
  24. connection, even if we have changed certificates since that
  25. connection was first opened. Previously, we would claim to have
  26. used our most recent x509 link certificate, which would sometimes
  27. make the link handshake fail. Fixes one case of bug 22460; bugfix
  28. on
  29. o Major bugfixes (relays, key management, backport from
  30. - Regenerate link and authentication certificates whenever the key
  31. that signs them changes; also, regenerate link certificates
  32. whenever the signed key changes. Previously, these processes were
  33. only weakly coupled, and we relays could (for minutes to hours)
  34. wind up with an inconsistent set of keys and certificates, which
  35. other relays would not accept. Fixes two cases of bug 22460;
  36. bugfix on
  37. - When sending an Ed25519 signing->link certificate in a CERTS cell,
  38. send the certificate that matches the x509 certificate that we
  39. used on the TLS connection. Previously, there was a race condition
  40. if the TLS context rotated after we began the TLS handshake but
  41. before we sent the CERTS cell. Fixes a case of bug 22460; bugfix
  42. on
  43. o Major bugfixes (hidden service v3, backport from
  44. - Stop rejecting v3 hidden service descriptors because their size
  45. did not match an old padding rule. Fixes bug 22447; bugfix on
  46. tor-
  47. o Minor features (fallback directory list, backport from
  48. - Replace the 177 fallbacks originally introduced in Tor in
  49. December 2016 (of which ~126 were still functional) with a list of
  50. 151 fallbacks (32 new, 119 unchanged, 58 removed) generated in May
  51. 2017. Resolves ticket 21564.
  52. o Minor bugfixes (configuration, backport from
  53. - Do not crash when starting with LearnCircuitBuildTimeout 0. Fixes
  54. bug 22252; bugfix on
  55. o Minor bugfixes (correctness, backport from
  56. - Avoid undefined behavior when parsing IPv6 entries from the geoip6
  57. file. Fixes bug 22490; bugfix on
  58. o Minor bugfixes (link handshake, backport from
  59. - Lower the lifetime of the RSA->Ed25519 cross-certificate to six
  60. months, and regenerate it when it is within one month of expiring.
  61. Previously, we had generated this certificate at startup with a
  62. ten-year lifetime, but that could lead to weird behavior when Tor
  63. was started with a grossly inaccurate clock. Mitigates bug 22466;
  64. mitigation on
  65. o Minor bugfixes (memory leak, directory authority, backport from
  67. - When directory authorities reject a router descriptor due to
  68. keypinning, free the router descriptor rather than leaking the
  69. memory. Fixes bug 22370; bugfix on
  70. Changes in version - 2017-06-08
  71. Tor backports a fix for a bug that would allow an attacker to
  72. remotely crash a hidden service with an assertion failure. Anyone
  73. running a hidden service should upgrade to this version, or to some
  74. other version with fixes for TROVE-2017-005. (Versions before 0.3.0
  75. are not affected by TROVE-2017-004.)
  76. Tor also backports fixes for several key management bugs
  77. that sometimes made relays unreliable, as well as several other
  78. bugfixes described below.
  79. o Major bugfixes (hidden service, relay, security, backport
  80. from
  81. - Fix a remotely triggerable assertion failure caused by receiving a
  82. BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
  83. 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
  84. on
  85. o Major bugfixes (relay, link handshake, backport from
  86. - When performing the v3 link handshake on a TLS connection, report
  87. that we have the x509 certificate that we actually used on that
  88. connection, even if we have changed certificates since that
  89. connection was first opened. Previously, we would claim to have
  90. used our most recent x509 link certificate, which would sometimes
  91. make the link handshake fail. Fixes one case of bug 22460; bugfix
  92. on
  93. o Minor features (fallback directory list, backport from
  94. - Replace the 177 fallbacks originally introduced in Tor in
  95. December 2016 (of which ~126 were still functional) with a list of
  96. 151 fallbacks (32 new, 119 unchanged, 58 removed) generated in May
  97. 2017. Resolves ticket 21564.
  98. o Minor features (future-proofing, backport from
  99. - Tor no longer refuses to download microdescriptors or descriptors if
  100. they are listed as "published in the future". This change will
  101. eventually allow us to stop listing meaningful "published" dates
  102. in microdescriptor consensuses, and thereby allow us to reduce the
  103. resources required to download consensus diffs by over 50%.
  104. Implements part of ticket 21642; implements part of proposal 275.
  105. o Minor features (directory authorities, backport from
  106. - Directory authorities now reject relays running versions
  107. through, because those relays
  108. suffer from bug 20499 and don't keep their consensus cache
  109. up-to-date. Resolves ticket 20509.
  110. o Minor features (geoip):
  111. - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
  112. Country database.
  113. o Minor bugfixes (control port, backport from
  114. - The GETINFO extra-info/digest/<digest> command was broken because
  115. of a wrong base16 decode return value check, introduced when
  116. refactoring that API. Fixes bug 22034; bugfix on
  117. o Minor bugfixes (correctness, backport from
  118. - Avoid undefined behavior when parsing IPv6 entries from the geoip6
  119. file. Fixes bug 22490; bugfix on
  120. o Minor bugfixes (Linux seccomp2 sandbox, backport from
  121. - The getpid() system call is now permitted under the Linux seccomp2
  122. sandbox, to avoid crashing with versions of OpenSSL (and other
  123. libraries) that attempt to learn the process's PID by using the
  124. syscall rather than the VDSO code. Fixes bug 21943; bugfix
  125. on
  126. o Minor bugfixes (memory leak, directory authority, backport
  127. from
  128. - When directory authorities reject a router descriptor due to
  129. keypinning, free the router descriptor rather than leaking the
  130. memory. Fixes bug 22370; bugfix on
  131. Changes in version - 2017-06-08
  132. Tor backports a fix for a bug that would allow an attacker to
  133. remotely crash a hidden service with an assertion failure. Anyone
  134. running a hidden service should upgrade to this version, or to some
  135. other version with fixes for TROVE-2017-005. (Versions before 0.3.0
  136. are not affected by TROVE-2017-004.)
  137. o Major bugfixes (hidden service, relay, security):
  138. - Fix a remotely triggerable assertion failure caused by receiving a
  139. BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
  140. 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
  141. on
  142. o Minor features (geoip):
  143. - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
  144. Country database.
  145. o Minor features (fallback directory list, backport from
  146. - Replace the 177 fallbacks originally introduced in Tor in
  147. December 2016 (of which ~126 were still functional) with a list of
  148. 151 fallbacks (32 new, 119 unchanged, 58 removed) generated in May
  149. 2017. Resolves ticket 21564.
  150. o Minor bugfixes (correctness):
  151. - Avoid undefined behavior when parsing IPv6 entries from the geoip6
  152. file. Fixes bug 22490; bugfix on
  153. Changes in version - 2017-06-08
  154. Tor backports a fix for a bug that would allow an attacker to
  155. remotely crash a hidden service with an assertion failure. Anyone
  156. running a hidden service should upgrade to this version, or to some
  157. other version with fixes for TROVE-2017-005. (Versions before 0.3.0
  158. are not affected by TROVE-2017-004.)
  159. o Major bugfixes (hidden service, relay, security):
  160. - Fix a remotely triggerable assertion failure caused by receiving a
  161. BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
  162. 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
  163. on
  164. o Minor features (geoip):
  165. - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
  166. Country database.
  167. o Minor bugfixes (correctness):
  168. - Avoid undefined behavior when parsing IPv6 entries from the geoip6
  169. file. Fixes bug 22490; bugfix on
  170. Changes in version - 2017-06-08
  171. Tor backports a fix for a bug that would allow an attacker to
  172. remotely crash a hidden service with an assertion failure. Anyone
  173. running a hidden service should upgrade to this version, or to some
  174. other version with fixes for TROVE-2017-005. (Versions before 0.3.0
  175. are not affected by TROVE-2017-004.)
  176. o Major bugfixes (hidden service, relay, security):
  177. - Fix a remotely triggerable assertion failure caused by receiving a
  178. BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
  179. 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
  180. on
  181. o Minor features (geoip):
  182. - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
  183. Country database.
  184. o Minor bugfixes (correctness):
  185. - Avoid undefined behavior when parsing IPv6 entries from the geoip6
  186. file. Fixes bug 22490; bugfix on
  187. Changes in version - 2017-06-08
  188. Tor backports a fix for a bug that would allow an attacker to
  189. remotely crash a hidden service with an assertion failure. Anyone
  190. running a hidden service should upgrade to this version, or to some
  191. other version with fixes for TROVE-2017-005. (Versions before 0.3.0
  192. are not affected by TROVE-2017-004.)
  193. o Major bugfixes (hidden service, relay, security):
  194. - Fix a remotely triggerable assertion failure caused by receiving a
  195. BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
  196. 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
  197. on
  198. o Minor features (geoip):
  199. - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
  200. Country database.
  201. o Minor bugfixes (correctness):
  202. - Avoid undefined behavior when parsing IPv6 entries from the geoip6
  203. file. Fixes bug 22490; bugfix on
  204. Changes in version - 2017-06-08
  205. Tor backports a fix for a bug that would allow an attacker to
  206. remotely crash a hidden service with an assertion failure. Anyone
  207. running a hidden service should upgrade to this version, or to some
  208. other version with fixes for TROVE-2017-005. (Versions before 0.3.0
  209. are not affected by TROVE-2017-004.)
  210. o Major bugfixes (hidden service, relay, security):
  211. - Fix a remotely triggerable assertion failure caused by receiving a
  212. BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
  213. 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
  214. on
  215. o Minor features (geoip):
  216. - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
  217. Country database.
  218. o Minor bugfixes (correctness):
  219. - Avoid undefined behavior when parsing IPv6 entries from the geoip6
  220. file. Fixes bug 22490; bugfix on
  221. Changes in version - 2017-05-15
  222. Tor fixes a medium-severity security bug in earlier versions
  223. of Tor 0.3.0.x, where an attacker could cause a Tor relay process
  224. to exit. Relays running earlier versions of Tor 0.3.0.x should upgrade;
  225. clients are not affected.
  226. o Major bugfixes (hidden service directory, security):
  227. - Fix an assertion failure in the hidden service directory code, which
  228. could be used by an attacker to remotely cause a Tor relay process to
  229. exit. Relays running earlier versions of Tor 0.3.0.x should upgrade.
  230. should upgrade. This security issue is tracked as TROVE-2017-002.
  231. Fixes bug 22246; bugfix on
  232. o Minor features:
  233. - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
  234. Country database.
  235. o Minor features (future-proofing):
  236. - Tor no longer refuses to download microdescriptors or descriptors
  237. if they are listed as "published in the future". This change will
  238. eventually allow us to stop listing meaningful "published" dates
  239. in microdescriptor consensuses, and thereby allow us to reduce the
  240. resources required to download consensus diffs by over 50%.
  241. Implements part of ticket 21642; implements part of proposal 275.
  242. o Minor bugfixes (Linux seccomp2 sandbox):
  243. - The getpid() system call is now permitted under the Linux seccomp2
  244. sandbox, to avoid crashing with versions of OpenSSL (and other
  245. libraries) that attempt to learn the process's PID by using the
  246. syscall rather than the VDSO code. Fixes bug 21943; bugfix
  247. on
  248. Changes in version - 2017-04-26
  249. Tor is the first stable release of the Tor 0.3.0 series.
  250. With the 0.3.0 series, clients and relays now use Ed25519 keys to
  251. authenticate their link connections to relays, rather than the old
  252. RSA1024 keys that they used before. (Circuit crypto has been
  253. Curve25519-authenticated since We have also replaced
  254. the guard selection and replacement algorithm to behave more robustly
  255. in the presence of unreliable networks, and to resist guard-
  256. capture attacks.
  257. This series also includes numerous other small features and bugfixes,
  258. along with more groundwork for the upcoming hidden-services revamp.
  259. Per our stable release policy, we plan to support the Tor 0.3.0
  260. release series for at least the next nine months, or for three months
  261. after the first stable release of the 0.3.1 series: whichever is
  262. longer. If you need a release with long-term support, we recommend
  263. that you stay with the 0.2.9 series.
  264. Below are the changes since For a list of only the changes
  265. since, see the ChangeLog file.
  266. o Major features (directory authority, security):
  267. - The default for AuthDirPinKeys is now 1: directory authorities
  268. will reject relays where the RSA identity key matches a previously
  269. seen value, but the Ed25519 key has changed. Closes ticket 18319.
  270. o Major features (guard selection algorithm):
  271. - Tor's guard selection algorithm has been redesigned from the
  272. ground up, to better support unreliable networks and restrictive
  273. sets of entry nodes, and to better resist guard-capture attacks by
  274. hostile local networks. Implements proposal 271; closes
  275. ticket 19877.
  276. o Major features (next-generation hidden services):
  277. - Relays can now handle v3 ESTABLISH_INTRO cells as specified by
  278. prop224 aka "Next Generation Hidden Services". Service and clients
  279. don't use this functionality yet. Closes ticket 19043. Based on
  280. initial code by Alec Heifetz.
  281. - Relays now support the HSDir version 3 protocol, so that they can
  282. can store and serve v3 descriptors. This is part of the next-
  283. generation onion service work detailled in proposal 224. Closes
  284. ticket 17238.
  285. o Major features (protocol, ed25519 identity keys):
  286. - Clients now support including Ed25519 identity keys in the EXTEND2
  287. cells they generate. By default, this is controlled by a consensus
  288. parameter, currently disabled. You can turn this feature on for
  289. testing by setting ExtendByEd25519ID in your configuration. This
  290. might make your traffic appear different than the traffic
  291. generated by other users, however. Implements part of ticket
  292. 15056; part of proposal 220.
  293. - Relays now understand requests to extend to other relays by their
  294. Ed25519 identity keys. When an Ed25519 identity key is included in
  295. an EXTEND2 cell, the relay will only extend the circuit if the
  296. other relay can prove ownership of that identity. Implements part
  297. of ticket 15056; part of proposal 220.
  298. - Relays now use Ed25519 to prove their Ed25519 identities and to
  299. one another, and to clients. This algorithm is faster and more
  300. secure than the RSA-based handshake we've been doing until now.
  301. Implements the second big part of proposal 220; Closes
  302. ticket 15055.
  303. o Major features (security):
  304. - Change the algorithm used to decide DNS TTLs on client and server
  305. side, to better resist DNS-based correlation attacks like the
  306. DefecTor attack of Greschbach, Pulls, Roberts, Winter, and
  307. Feamster. Now relays only return one of two possible DNS TTL
  308. values, and clients are willing to believe DNS TTL values up to 3
  309. hours long. Closes ticket 19769.
  310. o Major bugfixes (client, onion service, also in
  311. - Fix a client-side onion service reachability bug, where multiple
  312. socks requests to an onion service (or a single slow request)
  313. could cause us to mistakenly mark some of the service's
  314. introduction points as failed, and we cache that failure so
  315. eventually we run out and can't reach the service. Also resolves a
  316. mysterious "Remote server sent bogus reason code 65021" log
  317. warning. The bug was introduced in ticket 17218, where we tried to
  318. remember the circuit end reason as a uint16_t, which mangled
  319. negative values. Partially fixes bug 21056 and fixes bug 20307;
  320. bugfix on
  321. o Major bugfixes (crash, directory connections):
  322. - Fix a rare crash when sending a begin cell on a circuit whose
  323. linked directory connection had already been closed. Fixes bug
  324. 21576; bugfix on Reported by Alec Muffett.
  325. o Major bugfixes (directory authority):
  326. - During voting, when marking a relay as a probable sybil, do not
  327. clear its BadExit flag: sybils can still be bad in other ways
  328. too. (We still clear the other flags.) Fixes bug 21108; bugfix
  329. on
  330. o Major bugfixes (DNS):
  331. - Fix a bug that prevented exit nodes from caching DNS records for
  332. more than 60 seconds. Fixes bug 19025; bugfix on
  333. o Major bugfixes (IPv6 Exits):
  334. - Stop rejecting all IPv6 traffic on Exits whose exit policy rejects
  335. any IPv6 addresses. Instead, only reject a port over IPv6 if the
  336. exit policy rejects that port on more than an IPv6 /16 of
  337. addresses. This bug was made worse by 17027 in,
  338. which rejected a relay's own IPv6 address by default. Fixes bug
  339. 21357; bugfix on commit 004f3f4e53 in
  340. o Major bugfixes (parsing):
  341. - Fix an integer underflow bug when comparing malformed Tor
  342. versions. This bug could crash Tor when built with
  343. --enable-expensive-hardening, or on Tor through Tor
  344., which were built with -ftrapv by default. In other cases
  345. it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
  346. on 0.0.8pre1. Found by OSS-Fuzz.
  347. - When parsing a malformed content-length field from an HTTP
  348. message, do not read off the end of the buffer. This bug was a
  349. potential remote denial-of-service attack against Tor clients and
  350. relays. A workaround was released in October 2016, to prevent this
  351. bug from crashing Tor. This is a fix for the underlying issue,
  352. which should no longer matter (if you applied the earlier patch).
  353. Fixes bug 20894; bugfix on Bug found by fuzzing
  354. using AFL (
  355. o Major bugfixes (scheduler):
  356. - Actually compare circuit policies in ewma_cmp_cmux(). This bug
  357. caused the channel scheduler to behave more or less randomly,
  358. rather than preferring channels with higher-priority circuits.
  359. Fixes bug 20459; bugfix on
  360. o Major bugfixes (security, also in
  361. - Downgrade the "-ftrapv" option from "always on" to "only on when
  362. --enable-expensive-hardening is provided." This hardening option,
  363. like others, can turn survivable bugs into crashes--and having it
  364. on by default made a (relatively harmless) integer overflow bug
  365. into a denial-of-service bug. Fixes bug 21278 (TROVE-2017-001);
  366. bugfix on
  367. o Minor feature (client):
  368. - Enable IPv6 traffic on the SocksPort by default. To disable this,
  369. a user will have to specify "NoIPv6Traffic". Closes ticket 21269.
  370. o Minor feature (fallback scripts):
  371. - Add a check_existing mode to, which checks
  372. if fallbacks in the hard-coded list are working. Closes ticket
  373. 20174. Patch by haxxpop.
  374. o Minor feature (protocol versioning):
  375. - Add new protocol version for proposal 224. HSIntro now advertises
  376. version "3-4" and HSDir version "1-2". Fixes ticket 20656.
  377. o Minor features (ciphersuite selection):
  378. - Allow relays to accept a wider range of ciphersuites, including
  379. chacha20-poly1305 and AES-CCM. Closes the other part of 15426.
  380. - Clients now advertise a list of ciphersuites closer to the ones
  381. preferred by Firefox. Closes part of ticket 15426.
  382. o Minor features (controller):
  383. - Add "GETINFO sr/current" and "GETINFO sr/previous" keys, to expose
  384. shared-random values to the controller. Closes ticket 19925.
  385. - When HSFETCH arguments cannot be parsed, say "Invalid argument"
  386. rather than "unrecognized." Closes ticket 20389; patch from
  387. Ivan Markin.
  388. o Minor features (controller, configuration):
  389. - Each of the *Port options, such as SocksPort, ORPort, ControlPort,
  390. and so on, now comes with a __*Port variant that will not be saved
  391. to the torrc file by the controller's SAVECONF command. This
  392. change allows TorBrowser to set up a single-use domain socket for
  393. each time it launches Tor. Closes ticket 20956.
  394. - The GETCONF command can now query options that may only be
  395. meaningful in context-sensitive lists. This allows the controller
  396. to query the mixed SocksPort/__SocksPort style options introduced
  397. in feature 20956. Implements ticket 21300.
  398. o Minor features (diagnostic, directory client):
  399. - Warn when we find an unexpected inconsistency in directory
  400. download status objects. Prevents some negative consequences of
  401. bug 20593.
  402. o Minor features (directory authorities):
  403. - Directory authorities now reject descriptors that claim to be
  404. malformed versions of Tor. Helps prevent exploitation of
  405. bug 21278.
  406. - Reject version numbers with components that exceed INT32_MAX.
  407. Otherwise 32-bit and 64-bit platforms would behave inconsistently.
  408. Fixes bug 21450; bugfix on 0.0.8pre1.
  409. o Minor features (directory authority):
  410. - Add a new authority-only AuthDirTestEd25519LinkKeys option (on by
  411. default) to control whether authorities should try to probe relays
  412. by their Ed25519 link keys. This option will go away in a few
  413. releases--unless we encounter major trouble in our ed25519 link
  414. protocol rollout, in which case it will serve as a safety option.
  415. o Minor features (directory cache):
  416. - Relays and bridges will now refuse to serve the consensus they
  417. have if they know it is too old for a client to use. Closes
  418. ticket 20511.
  419. o Minor features (ed25519 link handshake):
  420. - Advertise support for the ed25519 link handshake using the
  421. subprotocol-versions mechanism, so that clients can tell which
  422. relays can identity themselves by Ed25519 ID. Closes ticket 20552.
  423. o Minor features (entry guards):
  424. - Add UseEntryGuards to TEST_OPTIONS_DEFAULT_VALUES in order to not
  425. break regression tests.
  426. - Require UseEntryGuards when UseBridges is set, in order to make
  427. sure bridges aren't bypassed. Resolves ticket 20502.
  428. o Minor features (fallback directories):
  429. - Allow 3 fallback relays per operator, which is safe now that we
  430. are choosing 200 fallback relays. Closes ticket 20912.
  431. - Annotate with the bandwidth and consensus
  432. weight for each candidate fallback. Closes ticket 20878.
  433. - Display the relay fingerprint when downloading consensuses from
  434. fallbacks. Closes ticket 20908.
  435. - Exclude relays affected by bug 20499 from the fallback list.
  436. Exclude relays from the fallback list if they are running versions
  437. known to be affected by bug 20499, or if in our tests they deliver
  438. a stale consensus (i.e. one that expired more than 24 hours ago).
  439. Closes ticket 20539.
  440. - Make it easier to change the output sort order of fallbacks.
  441. Closes ticket 20822.
  442. - Reduce the minimum fallback bandwidth to 1 MByte/s. Part of
  443. ticket 18828.
  444. - Require fallback directories to have the same address and port for
  445. 7 days (now that we have enough relays with this stability).
  446. Relays whose OnionOO stability timer is reset on restart by bug
  447. 18050 should upgrade to Tor or later, which has a fix for
  448. this issue. Closes ticket 20880; maintains short-term fix
  449. in
  450. - Require fallbacks to have flags for 90% of the time (weighted
  451. decaying average), rather than 95%. This allows at least 73% of
  452. clients to bootstrap in the first 5 seconds without contacting an
  453. authority. Part of ticket 18828.
  454. - Select 200 fallback directories for each release. Closes
  455. ticket 20881.
  456. o Minor features (fingerprinting resistence, authentication):
  457. - Extend the length of RSA keys used for TLS link authentication to
  458. 2048 bits. (These weren't used for forward secrecy; for forward
  459. secrecy, we used P256.) Closes ticket 13752.
  460. o Minor features (geoip):
  461. - Update geoip and geoip6 to the April 4 2017 Maxmind GeoLite2
  462. Country database.
  463. o Minor features (geoip, also in
  464. - Update geoip and geoip6 to the January 4 2017 Maxmind GeoLite2
  465. Country database.
  466. o Minor features (infrastructure):
  467. - Implement smartlist_add_strdup() function. Replaces the use of
  468. smartlist_add(sl, tor_strdup(str)). Closes ticket 20048.
  469. o Minor features (linting):
  470. - Enhance the changes file linter to warn on Tor versions that are
  471. prefixed with "tor-". Closes ticket 21096.
  472. o Minor features (logging):
  473. - In several places, describe unset ed25519 keys as "<unset>",
  474. rather than the scary "AAAAAAAA...AAA". Closes ticket 21037.
  475. o Minor features (portability, compilation):
  476. - Autoconf now checks to determine if OpenSSL structures are opaque,
  477. instead of explicitly checking for OpenSSL version numbers. Part
  478. of ticket 21359.
  479. - Support building with recent LibreSSL code that uses opaque
  480. structures. Closes ticket 21359.
  481. o Minor features (relay):
  482. - We now allow separation of exit and relay traffic to different
  483. source IP addresses, using the OutboundBindAddressExit and
  484. OutboundBindAddressOR options respectively. Closes ticket 17975.
  485. Written by Michael Sonntag.
  486. o Minor features (reliability, crash):
  487. - Try better to detect problems in buffers where they might grow (or
  488. think they have grown) over 2 GB in size. Diagnostic for
  489. bug 21369.
  490. o Minor features (testing):
  491. - During 'make test-network-all', if tor logs any warnings, ask
  492. chutney to output them. Requires a recent version of chutney with
  493. the 21572 patch. Implements 21570.
  494. o Minor bugfix (control protocol):
  495. - The reply to a "GETINFO config/names" request via the control
  496. protocol now spells the type "Dependent" correctly. This is a
  497. breaking change in the control protocol. (The field seems to be
  498. ignored by the most common known controllers.) Fixes bug 18146;
  499. bugfix on
  500. - The GETINFO extra-info/digest/<digest> command was broken because
  501. of a wrong base16 decode return value check, introduced when
  502. refactoring that API. Fixes bug 22034; bugfix on
  503. o Minor bugfix (logging):
  504. - Don't recommend the use of Tor2web in non-anonymous mode.
  505. Recommending Tor2web is a bad idea because the client loses all
  506. anonymity. Tor2web should only be used in specific cases by users
  507. who *know* and understand the issues. Fixes bug 21294; bugfix
  508. on
  509. o Minor bugfixes (bug resilience):
  510. - Fix an unreachable size_t overflow in base64_decode(). Fixes bug
  511. 19222; bugfix on Found by Guido Vranken; fixed by
  512. Hans Jerry Illikainen.
  513. o Minor bugfixes (build):
  514. - Replace obsolete Autoconf macros with their modern equivalent and
  515. prevent similar issues in the future. Fixes bug 20990; bugfix
  516. on
  517. o Minor bugfixes (certificate expiration time):
  518. - Avoid using link certificates that don't become valid till some
  519. time in the future. Fixes bug 21420; bugfix on
  520. o Minor bugfixes (client):
  521. - Always recover from failures in extend_info_from_node(), in an
  522. attempt to prevent any recurrence of bug 21242. Fixes bug 21372;
  523. bugfix on
  524. - When clients that use bridges start up with a cached consensus on
  525. disk, they were ignoring it and downloading a new one. Now they
  526. use the cached one. Fixes bug 20269; bugfix on
  527. o Minor bugfixes (code correctness):
  528. - Repair a couple of (unreachable or harmless) cases of the risky
  529. comparison-by-subtraction pattern that caused bug 21278.
  530. o Minor bugfixes (config):
  531. - Don't assert on startup when trying to get the options list and
  532. LearnCircuitBuildTimeout is set to 0: we are currently parsing the
  533. options so of course they aren't ready yet. Fixes bug 21062;
  534. bugfix on
  535. o Minor bugfixes (configuration):
  536. - Accept non-space whitespace characters after the severity level in
  537. the `Log` option. Fixes bug 19965; bugfix on
  538. - Support "TByte" and "TBytes" units in options given in bytes.
  539. "TB", "terabyte(s)", "TBit(s)" and "terabit(s)" were already
  540. supported. Fixes bug 20622; bugfix on
  541. o Minor bugfixes (configure, autoconf):
  542. - Rename the configure option --enable-expensive-hardening to
  543. --enable-fragile-hardening. Expensive hardening makes the tor
  544. daemon abort when some kinds of issues are detected. Thus, it
  545. makes tor more at risk of remote crashes but safer against RCE or
  546. heartbleed bug category. We now try to explain this issue in a
  547. message from the configure script. Fixes bug 21290; bugfix
  548. on
  549. o Minor bugfixes (consensus weight):
  550. - Add new consensus method that initializes bw weights to 1 instead
  551. of 0. This prevents a zero weight from making it all the way to
  552. the end (happens in small testing networks) and causing an error.
  553. Fixes bug 14881; bugfix on
  554. o Minor bugfixes (crash prevention):
  555. - Fix an (currently untriggerable, but potentially dangerous) crash
  556. bug when base32-encoding inputs whose sizes are not a multiple of
  557. 5. Fixes bug 21894; bugfix on
  558. o Minor bugfixes (dead code):
  559. - Remove a redundant check for PidFile changes at runtime in
  560. options_transition_allowed(): this check is already performed
  561. regardless of whether the sandbox is active. Fixes bug 21123;
  562. bugfix on
  563. o Minor bugfixes (descriptors):
  564. - Correctly recognise downloaded full descriptors as valid, even
  565. when using microdescriptors as circuits. This affects clients with
  566. FetchUselessDescriptors set, and may affect directory authorities.
  567. Fixes bug 20839; bugfix on
  568. o Minor bugfixes (directory mirrors):
  569. - Allow relays to use directory mirrors without a DirPort: these
  570. relays need to be contacted over their ORPorts using a begindir
  571. connection. Fixes one case of bug 20711; bugfix on
  572. - Clarify the message logged when a remote relay is unexpectedly
  573. missing an ORPort or DirPort: users were confusing this with a
  574. local port. Fixes another case of bug 20711; bugfix
  575. on
  576. o Minor bugfixes (directory system):
  577. - Bridges and relays now use microdescriptors (like clients do)
  578. rather than old-style router descriptors. Now bridges will blend
  579. in with clients in terms of the circuits they build. Fixes bug
  580. 6769; bugfix on
  581. - Download all consensus flavors, descriptors, and authority
  582. certificates when FetchUselessDescriptors is set, regardless of
  583. whether tor is a directory cache or not. Fixes bug 20667; bugfix
  584. on all recent tor versions.
  585. o Minor bugfixes (documentation):
  586. - Update the tor manual page to document every option that can not
  587. be changed while tor is running. Fixes bug 21122.
  588. o Minor bugfixes (ed25519 certificates):
  589. - Correctly interpret ed25519 certificates that would expire some
  590. time after 19 Jan 2038. Fixes bug 20027; bugfix on
  591. o Minor bugfixes (fallback directories):
  592. - Avoid checking fallback candidates' DirPorts if they are down in
  593. OnionOO. When a relay operator has multiple relays, this
  594. prioritizes relays that are up over relays that are down. Fixes
  595. bug 20926; bugfix on
  596. - Stop failing when OUTPUT_COMMENTS is True in
  597. Fixes bug 20877; bugfix on
  598. - Stop failing when a relay has no uptime data in
  599. Fixes bug 20945; bugfix on
  600. o Minor bugfixes (hidden service):
  601. - Clean up the code for expiring intro points with no associated
  602. circuits. It was causing, rarely, a service with some expiring
  603. introduction points to not open enough additional introduction
  604. points. Fixes part of bug 21302; bugfix on
  605. - Resolve two possible underflows which could lead to creating and
  606. closing a lot of introduction point circuits in a non-stop loop.
  607. Fixes bug 21302; bugfix on
  608. - Stop setting the torrc option HiddenServiceStatistics to "0" just
  609. because we're not a bridge or relay. Instead, we preserve whatever
  610. value the user set (or didn't set). Fixes bug 21150; bugfix
  611. on
  612. o Minor bugfixes (hidden services):
  613. - Make hidden services check for failed intro point connections,
  614. even when they have exceeded their intro point creation limit.
  615. Fixes bug 21596; bugfix on Reported by Alec Muffett.
  616. - Make hidden services with 8 to 10 introduction points check for
  617. failed circuits immediately after startup. Previously, they would
  618. wait for 5 minutes before performing their first checks. Fixes bug
  619. 21594; bugfix on Reported by Alec Muffett.
  620. - Stop ignoring misconfigured hidden services. Instead, refuse to
  621. start tor until the misconfigurations have been corrected. Fixes
  622. bug 20559; bugfix on multiple commits in
  623. and earlier.
  624. o Minor bugfixes (IPv6):
  625. - Make IPv6-using clients try harder to find an IPv6 directory
  626. server. Fixes bug 20999; bugfix on
  627. - When IPv6 addresses have not been downloaded yet (microdesc
  628. consensus documents don't list relay IPv6 addresses), use hard-
  629. coded addresses for authorities, fallbacks, and configured
  630. bridges. Now IPv6-only clients can use microdescriptors. Fixes bug
  631. 20996; bugfix on b167e82 from 19608 in
  632. o Minor bugfixes (memory leak at exit):
  633. - Fix a small harmless memory leak at exit of the previously unused
  634. RSA->Ed identity cross-certificate. Fixes bug 17779; bugfix
  635. on
  636. o Minor bugfixes (onion services):
  637. - Allow the number of introduction points to be as low as 0, rather
  638. than as low as 3. Fixes bug 21033; bugfix on
  639. o Minor bugfixes (portability):
  640. - Use "OpenBSD" compiler macro instead of "OPENBSD" or "__OpenBSD__".
  641. It is supported by OpenBSD itself, and also by most OpenBSD
  642. variants (such as Bitrig). Fixes bug 20980; bugfix
  643. on
  644. o Minor bugfixes (portability, also in
  645. - Avoid crashing when Tor is built using headers that contain
  646. CLOCK_MONOTONIC_COARSE, but then tries to run on an older kernel
  647. without CLOCK_MONOTONIC_COARSE. Fixes bug 21035; bugfix
  648. on
  649. - Fix Libevent detection on platforms without Libevent 1 headers
  650. installed. Fixes bug 21051; bugfix on
  651. o Minor bugfixes (relay):
  652. - Avoid a double-marked-circuit warning that could happen when we
  653. receive DESTROY cells under heavy load. Fixes bug 20059; bugfix
  654. on
  655. - Honor DataDirectoryGroupReadable when tor is a relay. Previously,
  656. initializing the keys would reset the DataDirectory to 0700
  657. instead of 0750 even if DataDirectoryGroupReadable was set to 1.
  658. Fixes bug 19953; bugfix on 0.0.2pre16. Patch by "redfish".
  659. o Minor bugfixes (testing):
  660. - Fix Raspbian build issues related to missing socket errno in
  661. test_util.c. Fixes bug 21116; bugfix on Patch by "hein".
  662. - Remove undefined behavior from the backtrace generator by removing
  663. its signal handler. Fixes bug 21026; bugfix on
  664. - Use bash in src/test/ This ensures we reliably
  665. call chutney's newer tools/ when available. Fixes
  666. bug 21562; bugfix on
  667. o Minor bugfixes (tor-resolve):
  668. - The tor-resolve command line tool now rejects hostnames over 255
  669. characters in length. Previously, it would silently truncate them,
  670. which could lead to bugs. Fixes bug 21280; bugfix on 0.0.9pre5.
  671. Patch by "junglefowl".
  672. o Minor bugfixes (unit tests):
  673. - Allow the unit tests to pass even when DNS lookups of bogus
  674. addresses do not fail as expected. Fixes bug 20862 and 20863;
  675. bugfix on unit tests introduced in
  676. through
  677. o Minor bugfixes (util):
  678. - When finishing writing a file to disk, if we were about to replace
  679. the file with the temporary file created before and we fail to
  680. replace it, remove the temporary file so it doesn't stay on disk.
  681. Fixes bug 20646; bugfix on Patch by fk.
  682. o Minor bugfixes (Windows services):
  683. - Be sure to initialize the monotonic time subsystem before using
  684. it, even when running as an NT service. Fixes bug 21356; bugfix
  685. on
  686. o Minor bugfixes (Windows):
  687. - Check for getpagesize before using it to mmap files. This fixes
  688. compilation in some MinGW environments. Fixes bug 20530; bugfix on
  689. Reported by "ice".
  690. o Code simplification and refactoring:
  691. - Abolish all global guard context in entrynodes.c; replace with new
  692. guard_selection_t structure as preparation for proposal 271.
  693. Closes ticket 19858.
  694. - Extract magic numbers in circuituse.c into defined variables.
  695. - Introduce rend_service_is_ephemeral() that tells if given onion
  696. service is ephemeral. Replace unclear NULL-checkings for service
  697. directory with this function. Closes ticket 20526.
  698. - Refactor circuit_is_available_for_use to remove unnecessary check.
  699. - Refactor circuit_predict_and_launch_new for readability and
  700. testability. Closes ticket 18873.
  701. - Refactor code to manipulate global_origin_circuit_list into
  702. separate functions. Closes ticket 20921.
  703. - Refactor large if statement in purpose_needs_anonymity to use
  704. switch statement instead. Closes part of ticket 20077.
  705. - Refactor the hashing API to return negative values for errors, as
  706. is done as throughout the codebase. Closes ticket 20717.
  707. - Remove data structures that were used to index or_connection
  708. objects by their RSA identity digests. These structures are fully
  709. redundant with the similar structures used in the
  710. channel abstraction.
  711. - Remove duplicate code in the channel_write_*cell() functions.
  712. Closes ticket 13827; patch from Pingl.
  713. - Remove redundant behavior of is_sensitive_dir_purpose, refactor to
  714. use only purpose_needs_anonymity. Closes part of ticket 20077.
  715. - The code to generate and parse EXTEND and EXTEND2 cells has been
  716. replaced with code automatically generated by the
  717. "trunnel" utility.
  718. o Documentation (formatting):
  719. - Clean up formatting of tor.1 man page and HTML doc, where <pre>
  720. blocks were incorrectly appearing. Closes ticket 20885.
  721. o Documentation (man page):
  722. - Clarify many options in tor.1 and add some min/max values for
  723. HiddenService options. Closes ticket 21058.
  724. o Documentation:
  725. - Change '1' to 'weight_scale' in consensus bw weights calculation
  726. comments, as that is reality. Closes ticket 20273. Patch
  727. from pastly.
  728. - Clarify that when ClientRejectInternalAddresses is enabled (which
  729. is the default), multicast DNS hostnames for machines on the local
  730. network (of the form *.local) are also rejected. Closes
  731. ticket 17070.
  732. - Correct the value for AuthDirGuardBWGuarantee in the manpage, from
  733. 250 KBytes to 2 MBytes. Fixes bug 20435; bugfix on
  734. - Include the "TBits" unit in Tor's man page. Fixes part of bug
  735. 20622; bugfix on
  736. - Small fixes to the fuzzing documentation. Closes ticket 21472.
  737. - Stop the man page from incorrectly stating that HiddenServiceDir
  738. must already exist. Fixes 20486.
  739. - Update the description of the directory server options in the
  740. manual page, to clarify that a relay no longer needs to set
  741. DirPort in order to be a directory cache. Closes ticket 21720.
  742. o Removed features:
  743. - The AuthDirMaxServersPerAuthAddr option no longer exists: The same
  744. limit for relays running on a single IP applies to authority IP
  745. addresses as well as to non-authority IP addresses. Closes
  746. ticket 20960.
  747. - The UseDirectoryGuards torrc option no longer exists: all users
  748. that use entry guards will also use directory guards. Related to
  749. proposal 271; implements part of ticket 20831.
  750. o Testing:
  751. - Add tests for networkstatus_compute_bw_weights_v10.
  752. - Add unit tests circuit_predict_and_launch_new.
  753. - Extract dummy_origin_circuit_new so it can be used by other
  754. test functions.
  755. - New unit tests for tor_htonll(). Closes ticket 19563. Patch
  756. from "overcaffeinated".
  757. - Perform the coding style checks when running the tests and fail
  758. when coding style violations are found. Closes ticket 5500.
  759. Changes in version - 2017-03-03
  760. Tor backports a security fix from later Tor
  761. releases. Anybody running Tor or earlier should upgrade to this
  762. this release, if for some reason they cannot upgrade to a later
  763. release series, and if they build Tor with the --enable-expensive-hardening
  764. option.
  765. Note that support for Tor 0.2.8.x is ending next year: we will not issue
  766. any fixes for the Tor 0.2.8.x series after 1 Jan 2018. If you need
  767. a Tor release series with longer-term support, we recommend Tor 0.2.9.x.
  768. o Major bugfixes (parsing, backported from
  769. - Fix an integer underflow bug when comparing malformed Tor
  770. versions. This bug could crash Tor when built with
  771. --enable-expensive-hardening, or on Tor through Tor
  772., which were built with -ftrapv by default. In other cases
  773. it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
  774. on 0.0.8pre1. Found by OSS-Fuzz.
  775. o Minor features (geoip):
  776. - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
  777. Country database.
  778. Changes in version - 2017-03-03
  779. Tor backports a number of security fixes from later Tor
  780. releases. Anybody running Tor or earlier should upgrade to
  781. this release, if for some reason they cannot upgrade to a later
  782. release series.
  783. Note that support for Tor 0.2.7.x is ending this year: we will not issue
  784. any fixes for the Tor 0.2.7.x series after 1 August 2017. If you need
  785. a Tor release series with longer-term support, we recommend Tor 0.2.9.x.
  786. o Directory authority changes (backport from
  787. - Urras is no longer a directory authority. Closes ticket 19271.
  788. o Directory authority changes (backport from
  789. - The "Tonga" bridge authority has been retired; the new bridge
  790. authority is "Bifroest". Closes tickets 19728 and 19690.
  791. o Directory authority key updates (backport from
  792. - Update the V3 identity key for the dannenberg directory authority:
  793. it was changed on 18 November 2015. Closes task 17906. Patch
  794. by "teor".
  795. o Major bugfixes (parsing, security, backport from
  796. - Fix a bug in parsing that could cause clients to read a single
  797. byte past the end of an allocated region. This bug could be used
  798. to cause hardened clients (built with --enable-expensive-hardening)
  799. to crash if they tried to visit a hostile hidden service. Non-
  800. hardened clients are only affected depending on the details of
  801. their platform's memory allocator. Fixes bug 21018; bugfix on
  802. Found by using libFuzzer. Also tracked as TROVE-
  803. 2016-12-002 and as CVE-2016-1254.
  804. o Major bugfixes (security, client, DNS proxy, backport from
  805. - Stop a crash that could occur when a client running with DNSPort
  806. received a query with multiple address types, and the first
  807. address type was not supported. Found and fixed by Scott Dial.
  808. Fixes bug 18710; bugfix on
  809. - Prevent a class of security bugs caused by treating the contents
  810. of a buffer chunk as if they were a NUL-terminated string. At
  811. least one such bug seems to be present in all currently used
  812. versions of Tor, and would allow an attacker to remotely crash
  813. most Tor instances, especially those compiled with extra compiler
  814. hardening. With this defense in place, such bugs can't crash Tor,
  815. though we should still fix them as they occur. Closes ticket
  816. 20384 (TROVE-2016-10-001).
  817. o Major bugfixes (security, pointers, backport from
  818. - Avoid a difficult-to-trigger heap corruption attack when extending
  819. a smartlist to contain over 16GB of pointers. Fixes bug 18162;
  820. bugfix on, which fixed a related bug incompletely.
  821. Reported by Guido Vranken.
  822. o Major bugfixes (dns proxy mode, crash, backport from
  823. - Avoid crashing when running as a DNS proxy. Fixes bug 16248;
  824. bugfix on Patch from "cypherpunks".
  825. o Major bugfixes (key management, backport from
  826. - If OpenSSL fails to generate an RSA key, do not retain a dangling
  827. pointer to the previous (uninitialized) key value. The impact here
  828. should be limited to a difficult-to-trigger crash, if OpenSSL is
  829. running an engine that makes key generation failures possible, or
  830. if OpenSSL runs out of memory. Fixes bug 19152; bugfix on
  831. Found by Yuan Jochen Kang, Suman Jana, and
  832. Baishakhi Ray.
  833. o Major bugfixes (parsing, backported from
  834. - Fix an integer underflow bug when comparing malformed Tor
  835. versions. This bug could crash Tor when built with
  836. --enable-expensive-hardening, or on Tor through Tor
  837., which were built with -ftrapv by default. In other cases
  838. it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
  839. on 0.0.8pre1. Found by OSS-Fuzz.
  840. o Minor features (security, memory erasure, backport from
  841. - Make memwipe() do nothing when passed a NULL pointer or buffer of
  842. zero size. Check size argument to memwipe() for underflow. Fixes
  843. bug 18089; bugfix on and Reported by "gk",
  844. patch by "teor".
  845. o Minor features (bug-resistance, backport from
  846. - Make Tor survive errors involving connections without a
  847. corresponding event object. Previously we'd fail with an
  848. assertion; now we produce a log message. Related to bug 16248.
  849. o Minor features (geoip):
  850. - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
  851. Country database.
  852. Changes in version - 2017-03-03
  853. Tor backports a number of security fixes from later Tor
  854. releases. Anybody running Tor or earlier should upgrade to
  855. this release, if for some reason they cannot upgrade to a later
  856. release series.
  857. Note that support for Tor 0.2.6.x is ending this year: we will not issue
  858. any fixes for the Tor 0.2.6.x series after 1 August 2017. If you need
  859. a Tor release series with longer-term support, we recommend Tor 0.2.9.x.
  860. o Directory authority changes (backport from
  861. - Urras is no longer a directory authority. Closes ticket 19271.
  862. o Directory authority changes (backport from
  863. - The "Tonga" bridge authority has been retired; the new bridge
  864. authority is "Bifroest". Closes tickets 19728 and 19690.
  865. o Directory authority key updates (backport from
  866. - Update the V3 identity key for the dannenberg directory authority:
  867. it was changed on 18 November 2015. Closes task 17906. Patch
  868. by "teor".
  869. o Major features (security fixes, backport from
  870. - Prevent a class of security bugs caused by treating the contents
  871. of a buffer chunk as if they were a NUL-terminated string. At
  872. least one such bug seems to be present in all currently used
  873. versions of Tor, and would allow an attacker to remotely crash
  874. most Tor instances, especially those compiled with extra compiler
  875. hardening. With this defense in place, such bugs can't crash Tor,
  876. though we should still fix them as they occur. Closes ticket
  877. 20384 (TROVE-2016-10-001).
  878. o Major bugfixes (parsing, security, backport from
  879. - Fix a bug in parsing that could cause clients to read a single
  880. byte past the end of an allocated region. This bug could be used
  881. to cause hardened clients (built with --enable-expensive-hardening)
  882. to crash if they tried to visit a hostile hidden service. Non-
  883. hardened clients are only affected depending on the details of
  884. their platform's memory allocator. Fixes bug 21018; bugfix on
  885. Found by using libFuzzer. Also tracked as TROVE-
  886. 2016-12-002 and as CVE-2016-1254.
  887. o Major bugfixes (security, client, DNS proxy, backport from
  888. - Stop a crash that could occur when a client running with DNSPort
  889. received a query with multiple address types, and the first
  890. address type was not supported. Found and fixed by Scott Dial.
  891. Fixes bug 18710; bugfix on
  892. o Major bugfixes (security, correctness, backport from
  893. - Fix an error that could cause us to read 4 bytes before the
  894. beginning of an openssl string. This bug could be used to cause
  895. Tor to crash on systems with unusual malloc implementations, or
  896. systems with unusual hardening installed. Fixes bug 17404; bugfix
  897. on
  898. o Major bugfixes (security, pointers, backport from
  899. - Avoid a difficult-to-trigger heap corruption attack when extending
  900. a smartlist to contain over 16GB of pointers. Fixes bug 18162;
  901. bugfix on, which fixed a related bug incompletely.
  902. Reported by Guido Vranken.
  903. o Major bugfixes (dns proxy mode, crash, backport from
  904. - Avoid crashing when running as a DNS proxy. Fixes bug 16248;
  905. bugfix on Patch from "cypherpunks".
  906. o Major bugfixes (guard selection, backport from
  907. - Actually look at the Guard flag when selecting a new directory
  908. guard. When we implemented the directory guard design, we
  909. accidentally started treating all relays as if they have the Guard
  910. flag during guard selection, leading to weaker anonymity and worse
  911. performance. Fixes bug 17772; bugfix on Discovered
  912. by Mohsen Imani.
  913. o Major bugfixes (key management, backport from
  914. - If OpenSSL fails to generate an RSA key, do not retain a dangling
  915. pointer to the previous (uninitialized) key value. The impact here
  916. should be limited to a difficult-to-trigger crash, if OpenSSL is
  917. running an engine that makes key generation failures possible, or
  918. if OpenSSL runs out of memory. Fixes bug 19152; bugfix on
  919. Found by Yuan Jochen Kang, Suman Jana, and
  920. Baishakhi Ray.
  921. o Major bugfixes (parsing, backported from
  922. - Fix an integer underflow bug when comparing malformed Tor
  923. versions. This bug could crash Tor when built with
  924. --enable-expensive-hardening, or on Tor through Tor
  925., which were built with -ftrapv by default. In other cases
  926. it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
  927. on 0.0.8pre1. Found by OSS-Fuzz.
  928. o Minor features (security, memory erasure, backport from
  929. - Make memwipe() do nothing when passed a NULL pointer or buffer of
  930. zero size. Check size argument to memwipe() for underflow. Fixes
  931. bug 18089; bugfix on and Reported by "gk",
  932. patch by "teor".
  933. o Minor features (bug-resistance, backport from
  934. - Make Tor survive errors involving connections without a
  935. corresponding event object. Previously we'd fail with an
  936. assertion; now we produce a log message. Related to bug 16248.
  937. o Minor features (geoip):
  938. - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
  939. Country database.
  940. o Minor bugfixes (compilation, backport from
  941. - Fix a compilation warning with Clang 3.6: Do not check the
  942. presence of an address which can never be NULL. Fixes bug 17781.
  943. Changes in version - 2017-03-03
  944. Tor backports a number of security fixes from later Tor
  945. releases. Anybody running Tor or earlier should upgrade to
  946. this release, if for some reason they cannot upgrade to a later
  947. release series.
  948. Note that support for Tor 0.2.5.x is ending next year: we will not issue
  949. any fixes for the Tor 0.2.5.x series after 1 May 2018. If you need
  950. a Tor release series with longer-term support, we recommend Tor 0.2.9.x.
  951. o Directory authority changes (backport from
  952. - Urras is no longer a directory authority. Closes ticket 19271.
  953. o Directory authority changes (backport from
  954. - The "Tonga" bridge authority has been retired; the new bridge
  955. authority is "Bifroest". Closes tickets 19728 and 19690.
  956. o Directory authority key updates (backport from
  957. - Update the V3 identity key for the dannenberg directory authority:
  958. it was changed on 18 November 2015. Closes task 17906. Patch
  959. by "teor".
  960. o Major features (security fixes, backport from
  961. - Prevent a class of security bugs caused by treating the contents
  962. of a buffer chunk as if they were a NUL-terminated string. At
  963. least one such bug seems to be present in all currently used
  964. versions of Tor, and would allow an attacker to remotely crash
  965. most Tor instances, especially those compiled with extra compiler
  966. hardening. With this defense in place, such bugs can't crash Tor,
  967. though we should still fix them as they occur. Closes ticket
  968. 20384 (TROVE-2016-10-001).
  969. o Major bugfixes (parsing, security, backport from
  970. - Fix a bug in parsing that could cause clients to read a single
  971. byte past the end of an allocated region. This bug could be used
  972. to cause hardened clients (built with --enable-expensive-hardening)
  973. to crash if they tried to visit a hostile hidden service. Non-
  974. hardened clients are only affected depending on the details of
  975. their platform's memory allocator. Fixes bug 21018; bugfix on
  976. Found by using libFuzzer. Also tracked as TROVE-
  977. 2016-12-002 and as CVE-2016-1254.
  978. o Major bugfixes (security, client, DNS proxy, backport from
  979. - Stop a crash that could occur when a client running with DNSPort
  980. received a query with multiple address types, and the first
  981. address type was not supported. Found and fixed by Scott Dial.
  982. Fixes bug 18710; bugfix on
  983. o Major bugfixes (security, correctness, backport from
  984. - Fix an error that could cause us to read 4 bytes before the
  985. beginning of an openssl string. This bug could be used to cause
  986. Tor to crash on systems with unusual malloc implementations, or
  987. systems with unusual hardening installed. Fixes bug 17404; bugfix
  988. on
  989. o Major bugfixes (security, pointers, backport from
  990. - Avoid a difficult-to-trigger heap corruption attack when extending
  991. a smartlist to contain over 16GB of pointers. Fixes bug 18162;
  992. bugfix on, which fixed a related bug incompletely.
  993. Reported by Guido Vranken.
  994. o Major bugfixes (dns proxy mode, crash, backport from
  995. - Avoid crashing when running as a DNS proxy. Fixes bug 16248;
  996. bugfix on Patch from "cypherpunks".
  997. o Major bugfixes (guard selection, backport from
  998. - Actually look at the Guard flag when selecting a new directory
  999. guard. When we implemented the directory guard design, we
  1000. accidentally started treating all relays as if they have the Guard
  1001. flag during guard selection, leading to weaker anonymity and worse
  1002. performance. Fixes bug 17772; bugfix on Discovered
  1003. by Mohsen Imani.
  1004. o Major bugfixes (key management, backport from
  1005. - If OpenSSL fails to generate an RSA key, do not retain a dangling
  1006. pointer to the previous (uninitialized) key value. The impact here
  1007. should be limited to a difficult-to-trigger crash, if OpenSSL is
  1008. running an engine that makes key generation failures possible, or
  1009. if OpenSSL runs out of memory. Fixes bug 19152; bugfix on
  1010. Found by Yuan Jochen Kang, Suman Jana, and
  1011. Baishakhi Ray.
  1012. o Major bugfixes (parsing, backported from
  1013. - Fix an integer underflow bug when comparing malformed Tor
  1014. versions. This bug could crash Tor when built with
  1015. --enable-expensive-hardening, or on Tor through Tor
  1016., which were built with -ftrapv by default. In other cases
  1017. it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
  1018. on 0.0.8pre1. Found by OSS-Fuzz.
  1019. o Minor features (security, memory erasure, backport from
  1020. - Make memwipe() do nothing when passed a NULL pointer or buffer of
  1021. zero size. Check size argument to memwipe() for underflow. Fixes
  1022. bug 18089; bugfix on and Reported by "gk",
  1023. patch by "teor".
  1024. o Minor features (bug-resistance, backport from
  1025. - Make Tor survive errors involving connections without a
  1026. corresponding event object. Previously we'd fail with an
  1027. assertion; now we produce a log message. Related to bug 16248.
  1028. o Minor features (geoip):
  1029. - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
  1030. Country database.
  1031. o Minor bugfixes (compilation, backport from
  1032. - Fix a compilation warning with Clang 3.6: Do not check the
  1033. presence of an address which can never be NULL. Fixes bug 17781.
  1034. o Minor bugfixes (crypto error-handling, backport from
  1035. - Check for failures from crypto_early_init, and refuse to continue.
  1036. A previous typo meant that we could keep going with an
  1037. uninitialized crypto library, and would have OpenSSL initialize
  1038. its own PRNG. Fixes bug 16360; bugfix on, introduced
  1039. when implementing ticket 4900. Patch by "teor".
  1040. o Minor bugfixes (hidden service, backport from
  1041. - Fix an out-of-bounds read when parsing invalid INTRODUCE2 cells on
  1042. a client authorized hidden service. Fixes bug 15823; bugfix
  1043. on
  1044. Changes in version - 2017-03-03
  1045. Tor backports a number of security fixes from later Tor
  1046. releases. Anybody running Tor or earlier should upgrade to
  1047. this release, if for some reason they cannot upgrade to a later
  1048. release series.
  1049. Note that support for Tor 0.2.4.x is ending soon: we will not issue
  1050. any fixes for the Tor 0.2.4.x series after 1 August 2017. If you need
  1051. a Tor release series with long-term support, we recommend Tor 0.2.9.x.
  1052. o Directory authority changes (backport from
  1053. - Urras is no longer a directory authority. Closes ticket 19271.
  1054. o Directory authority changes (backport from
  1055. - The "Tonga" bridge authority has been retired; the new bridge
  1056. authority is "Bifroest". Closes tickets 19728 and 19690.
  1057. o Directory authority key updates (backport from
  1058. - Update the V3 identity key for the dannenberg directory authority:
  1059. it was changed on 18 November 2015. Closes task 17906. Patch
  1060. by "teor".
  1061. o Major features (security fixes, backport from
  1062. - Prevent a class of security bugs caused by treating the contents
  1063. of a buffer chunk as if they were a NUL-terminated string. At
  1064. least one such bug seems to be present in all currently used
  1065. versions of Tor, and would allow an attacker to remotely crash
  1066. most Tor instances, especially those compiled with extra compiler
  1067. hardening. With this defense in place, such bugs can't crash Tor,
  1068. though we should still fix them as they occur. Closes ticket
  1069. 20384 (TROVE-2016-10-001).
  1070. o Major bugfixes (parsing, security, backport from
  1071. - Fix a bug in parsing that could cause clients to read a single
  1072. byte past the end of an allocated region. This bug could be used
  1073. to cause hardened clients (built with --enable-expensive-hardening)
  1074. to crash if they tried to visit a hostile hidden service. Non-
  1075. hardened clients are only affected depending on the details of
  1076. their platform's memory allocator. Fixes bug 21018; bugfix on
  1077. Found by using libFuzzer. Also tracked as TROVE-
  1078. 2016-12-002 and as CVE-2016-1254.
  1079. o Major bugfixes (security, correctness, backport from
  1080. - Fix an error that could cause us to read 4 bytes before the
  1081. beginning of an openssl string. This bug could be used to cause
  1082. Tor to crash on systems with unusual malloc implementations, or
  1083. systems with unusual hardening installed. Fixes bug 17404; bugfix
  1084. on
  1085. o Major bugfixes (security, pointers, backport from
  1086. - Avoid a difficult-to-trigger heap corruption attack when extending
  1087. a smartlist to contain over 16GB of pointers. Fixes bug 18162;
  1088. bugfix on, which fixed a related bug incompletely.
  1089. Reported by Guido Vranken.
  1090. o Major bugfixes (dns proxy mode, crash, backport from
  1091. - Avoid crashing when running as a DNS proxy. Fixes bug 16248;
  1092. bugfix on Patch from "cypherpunks".
  1093. o Major bugfixes (guard selection, backport from
  1094. - Actually look at the Guard flag when selecting a new directory
  1095. guard. When we implemented the directory guard design, we
  1096. accidentally started treating all relays as if they have the Guard
  1097. flag during guard selection, leading to weaker anonymity and worse
  1098. performance. Fixes bug 17772; bugfix on Discovered
  1099. by Mohsen Imani.
  1100. o Major bugfixes (key management, backport from
  1101. - If OpenSSL fails to generate an RSA key, do not retain a dangling
  1102. pointer to the previous (uninitialized) key value. The impact here
  1103. should be limited to a difficult-to-trigger crash, if OpenSSL is
  1104. running an engine that makes key generation failures possible, or
  1105. if OpenSSL runs out of memory. Fixes bug 19152; bugfix on
  1106. Found by Yuan Jochen Kang, Suman Jana, and
  1107. Baishakhi Ray.
  1108. o Major bugfixes (parsing, backported from
  1109. - Fix an integer underflow bug when comparing malformed Tor
  1110. versions. This bug could crash Tor when built with
  1111. --enable-expensive-hardening, or on Tor through Tor
  1112., which were built with -ftrapv by default. In other cases
  1113. it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
  1114. on 0.0.8pre1. Found by OSS-Fuzz.
  1115. o Minor features (security, memory erasure, backport from
  1116. - Make memwipe() do nothing when passed a NULL pointer or buffer of
  1117. zero size. Check size argument to memwipe() for underflow. Fixes
  1118. bug 18089; bugfix on and Reported by "gk",
  1119. patch by "teor".
  1120. o Minor features (bug-resistance, backport from
  1121. - Make Tor survive errors involving connections without a
  1122. corresponding event object. Previously we'd fail with an
  1123. assertion; now we produce a log message. Related to bug 16248.
  1124. o Minor features (DoS-resistance, backport from
  1125. - Make it harder for attackers to overload hidden services with
  1126. introductions, by blocking multiple introduction requests on the
  1127. same circuit. Resolves ticket 15515.
  1128. o Minor features (geoip):
  1129. - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
  1130. Country database.
  1131. o Minor bugfixes (compilation, backport from
  1132. - Fix a compilation warning with Clang 3.6: Do not check the
  1133. presence of an address which can never be NULL. Fixes bug 17781.
  1134. o Minor bugfixes (hidden service, backport from
  1135. - Fix an out-of-bounds read when parsing invalid INTRODUCE2 cells on
  1136. a client authorized hidden service. Fixes bug 15823; bugfix
  1137. on
  1138. Changes in version - 2017-03-01
  1139. Tor backports a security fix from later Tor release. It also
  1140. includes fixes for some major issues affecting directory authorities,
  1141. LibreSSL compatibility, and IPv6 correctness.
  1142. The Tor 0.2.9.x release series is now marked as a long-term-support
  1143. series. We intend to backport security fixes to 0.2.9.x until at
  1144. least January of 2020.
  1145. o Major bugfixes (directory authority,
  1146. - During voting, when marking a relay as a probable sybil, do not
  1147. clear its BadExit flag: sybils can still be bad in other ways
  1148. too. (We still clear the other flags.) Fixes bug 21108; bugfix
  1149. on
  1150. o Major bugfixes (IPv6 Exits, backport from
  1151. - Stop rejecting all IPv6 traffic on Exits whose exit policy rejects
  1152. any IPv6 addresses. Instead, only reject a port over IPv6 if the
  1153. exit policy rejects that port on more than an IPv6 /16 of
  1154. addresses. This bug was made worse by 17027 in,
  1155. which rejected a relay's own IPv6 address by default. Fixes bug
  1156. 21357; bugfix on commit 004f3f4e53 in
  1157. o Major bugfixes (parsing, also in
  1158. - Fix an integer underflow bug when comparing malformed Tor
  1159. versions. This bug could crash Tor when built with
  1160. --enable-expensive-hardening, or on Tor through Tor
  1161., which were built with -ftrapv by default. In other cases
  1162. it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
  1163. on 0.0.8pre1. Found by OSS-Fuzz.
  1164. o Minor features (directory authorities, also in
  1165. - Directory authorities now reject descriptors that claim to be
  1166. malformed versions of Tor. Helps prevent exploitation of
  1167. bug 21278.
  1168. - Reject version numbers with components that exceed INT32_MAX.
  1169. Otherwise 32-bit and 64-bit platforms would behave inconsistently.
  1170. Fixes bug 21450; bugfix on 0.0.8pre1.
  1171. o Minor features (geoip):
  1172. - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
  1173. Country database.
  1174. o Minor features (portability, compilation, backport from
  1175. - Autoconf now checks to determine if OpenSSL structures are opaque,
  1176. instead of explicitly checking for OpenSSL version numbers. Part
  1177. of ticket 21359.
  1178. - Support building with recent LibreSSL code that uses opaque
  1179. structures. Closes ticket 21359.
  1180. o Minor bugfixes (code correctness, also in
  1181. - Repair a couple of (unreachable or harmless) cases of the risky
  1182. comparison-by-subtraction pattern that caused bug 21278.
  1183. o Minor bugfixes (tor-resolve, backport from
  1184. - The tor-resolve command line tool now rejects hostnames over 255
  1185. characters in length. Previously, it would silently truncate them,
  1186. which could lead to bugs. Fixes bug 21280; bugfix on 0.0.9pre5.
  1187. Patch by "junglefowl".
  1188. Changes in version - 2017-01-23
  1189. Tor fixes a denial-of-service bug where an attacker could
  1190. cause relays and clients to crash, even if they were not built with
  1191. the --enable-expensive-hardening option. This bug affects all 0.2.9.x
  1192. versions, and also affects all relays running an affected
  1193. version should upgrade.
  1194. This release also resolves a client-side onion service reachability
  1195. bug, and resolves a pair of small portability issues.
  1196. o Major bugfixes (security):
  1197. - Downgrade the "-ftrapv" option from "always on" to "only on when
  1198. --enable-expensive-hardening is provided." This hardening option,
  1199. like others, can turn survivable bugs into crashes -- and having
  1200. it on by default made a (relatively harmless) integer overflow bug
  1201. into a denial-of-service bug. Fixes bug 21278 (TROVE-2017-001);
  1202. bugfix on
  1203. o Major bugfixes (client, onion service):
  1204. - Fix a client-side onion service reachability bug, where multiple
  1205. socks requests to an onion service (or a single slow request)
  1206. could cause us to mistakenly mark some of the service's
  1207. introduction points as failed, and we cache that failure so
  1208. eventually we run out and can't reach the service. Also resolves a
  1209. mysterious "Remote server sent bogus reason code 65021" log
  1210. warning. The bug was introduced in ticket 17218, where we tried to
  1211. remember the circuit end reason as a uint16_t, which mangled
  1212. negative values. Partially fixes bug 21056 and fixes bug 20307;
  1213. bugfix on
  1214. o Minor features (geoip):
  1215. - Update geoip and geoip6 to the January 4 2017 Maxmind GeoLite2
  1216. Country database.
  1217. o Minor bugfixes (portability):
  1218. - Avoid crashing when Tor is built using headers that contain
  1219. CLOCK_MONOTONIC_COARSE, but then tries to run on an older kernel
  1220. without CLOCK_MONOTONIC_COARSE. Fixes bug 21035; bugfix
  1221. on
  1222. - Fix Libevent detection on platforms without Libevent 1 headers
  1223. installed. Fixes bug 21051; bugfix on
  1224. Changes in version - 2016-12-19
  1225. Tor backports a fix for a medium-severity issue (bug 21018
  1226. below) where Tor clients could crash when attempting to visit a
  1227. hostile hidden service. Clients are recommended to upgrade as packages
  1228. become available for their systems.
  1229. It also includes an updated list of fallback directories, backported
  1230. from 0.2.9.
  1231. Now that the Tor 0.2.9 series is stable, only major bugfixes will be
  1232. backported to 0.2.8 in the future.
  1233. o Major bugfixes (parsing, security, backported from
  1234. - Fix a bug in parsing that could cause clients to read a single
  1235. byte past the end of an allocated region. This bug could be used
  1236. to cause hardened clients (built with --enable-expensive-hardening)
  1237. to crash if they tried to visit a hostile hidden service. Non-
  1238. hardened clients are only affected depending on the details of
  1239. their platform's memory allocator. Fixes bug 21018; bugfix on
  1240. Found by using libFuzzer. Also tracked as TROVE-
  1241. 2016-12-002 and as CVE-2016-1254.
  1242. o Minor features (fallback directory list, backported from
  1243. - Replace the 81 remaining fallbacks of the 100 originally
  1244. introduced in Tor in March 2016, with a list of 177
  1245. fallbacks (123 new, 54 existing, 27 removed) generated in December
  1246. 2016. Resolves ticket 20170.
  1247. o Minor features (geoip, backported from
  1248. - Update geoip and geoip6 to the December 7 2016 Maxmind GeoLite2
  1249. Country database.
  1250. Changes in version - 2016-12-19
  1251. Tor is the first stable release of the Tor 0.2.9 series.
  1252. The Tor 0.2.9 series makes mandatory a number of security features
  1253. that were formerly optional. It includes support for a new shared-
  1254. randomness protocol that will form the basis for next generation
  1255. hidden services, includes a single-hop hidden service mode for
  1256. optimizing .onion services that don't actually want to be hidden,
  1257. tries harder not to overload the directory authorities with excessive
  1258. downloads, and supports a better protocol versioning scheme for
  1259. improved compatibility with other implementations of the Tor protocol.
  1260. And of course, there are numerous other bugfixes and improvements.
  1261. This release also includes a fix for a medium-severity issue (bug
  1262. 21018 below) where Tor clients could crash when attempting to visit a
  1263. hostile hidden service. Clients are recommended to upgrade as packages
  1264. become available for their systems.
  1265. Below are listed the changes since Tor For a list of
  1266. changes since, see the ChangeLog file.
  1267. o New system requirements:
  1268. - When building with OpenSSL, Tor now requires version 1.0.1 or
  1269. later. OpenSSL 1.0.0 and earlier are no longer supported by the
  1270. OpenSSL team, and should not be used. Closes ticket 20303.
  1271. - Tor now requires Libevent version 2.0.10-stable or later. Older
  1272. versions of Libevent have less efficient backends for several
  1273. platforms, and lack the DNS code that we use for our server-side
  1274. DNS support. This implements ticket 19554.
  1275. - Tor now requires zlib version 1.2 or later, for security,
  1276. efficiency, and (eventually) gzip support. (Back when we started,
  1277. zlib 1.1 and zlib 1.0 were still found in the wild. 1.2 was
  1278. released in 2003. We recommend the latest version.)
  1279. o Deprecated features:
  1280. - A number of DNS-cache-related sub-options for client ports are now
  1281. deprecated for security reasons, and may be removed in a future
  1282. version of Tor. (We believe that client-side DNS caching is a bad
  1283. idea for anonymity, and you should not turn it on.) The options
  1284. are: CacheDNS, CacheIPv4DNS, CacheIPv6DNS, UseDNSCache,
  1285. UseIPv4Cache, and UseIPv6Cache.
  1286. - A number of options are deprecated for security reasons, and may
  1287. be removed in a future version of Tor. The options are:
  1288. AllowDotExit, AllowInvalidNodes, AllowSingleHopCircuits,
  1289. AllowSingleHopExits, ClientDNSRejectInternalAddresses,
  1290. CloseHSClientCircuitsImmediatelyOnTimeout,
  1291. CloseHSServiceRendCircuitsImmediatelyOnTimeout,
  1292. ExcludeSingleHopRelays, FastFirstHopPK, TLSECGroup,
  1293. UseNTorHandshake, and WarnUnsafeSocks.
  1294. - The *ListenAddress options are now deprecated as unnecessary: the
  1295. corresponding *Port options should be used instead. These options
  1296. may someday be removed. The affected options are:
  1297. ControlListenAddress, DNSListenAddress, DirListenAddress,
  1298. NATDListenAddress, ORListenAddress, SocksListenAddress,
  1299. and TransListenAddress.
  1300. o Major bugfixes (parsing, security, new since
  1301. - Fix a bug in parsing that could cause clients to read a single
  1302. byte past the end of an allocated region. This bug could be used
  1303. to cause hardened clients (built with --enable-expensive-hardening)
  1304. to crash if they tried to visit a hostile hidden service. Non-
  1305. hardened clients are only affected depending on the details of
  1306. their platform's memory allocator. Fixes bug 21018; bugfix on
  1307. Found by using libFuzzer. Also tracked as TROVE-
  1308. 2016-12-002 and as CVE-2016-1254.
  1309. o Major features (build, hardening):
  1310. - Tor now builds with -ftrapv by default on compilers that support
  1311. it. This option detects signed integer overflow (which C forbids),
  1312. and turns it into a hard-failure. We do not apply this option to
  1313. code that needs to run in constant time to avoid side-channels;
  1314. instead, we use -fwrapv in that code. Closes ticket 17983.
  1315. - When --enable-expensive-hardening is selected, stop applying the
  1316. clang/gcc sanitizers to code that needs to run in constant time.
  1317. Although we are aware of no introduced side-channels, we are not
  1318. able to prove that there are none. Related to ticket 17983.
  1319. o Major features (circuit building, security):
  1320. - Authorities, relays, and clients now require ntor keys in all
  1321. descriptors, for all hops (except for rare hidden service protocol
  1322. cases), for all circuits, and for all other roles. Part of
  1323. ticket 19163.
  1324. - Authorities, relays, and clients only use ntor, except for
  1325. rare cases in the hidden service protocol. Part of ticket 19163.
  1326. o Major features (compilation):
  1327. - Our big list of extra GCC warnings is now enabled by default when
  1328. building with GCC (or with anything like Clang that claims to be
  1329. GCC-compatible). To make all warnings into fatal compilation
  1330. errors, pass --enable-fatal-warnings to configure. Closes
  1331. ticket 19044.
  1332. - Use the Autoconf macro AC_USE_SYSTEM_EXTENSIONS to automatically
  1333. turn on C and POSIX extensions. (Previously, we attempted to do
  1334. this on an ad hoc basis.) Closes ticket 19139.
  1335. o Major features (directory authorities, hidden services):
  1336. - Directory authorities can now perform the shared randomness
  1337. protocol specified by proposal 250. Using this protocol, directory
  1338. authorities generate a global fresh random value every day. In the
  1339. future, this value will be used by hidden services to select
  1340. HSDirs. This release implements the directory authority feature;
  1341. the hidden service side will be implemented in the future as part
  1342. of proposal 224. Resolves ticket 16943; implements proposal 250.
  1343. o Major features (downloading, random exponential backoff):
  1344. - When we fail to download an object from a directory service, wait
  1345. for an (exponentially increasing) randomized amount of time before
  1346. retrying, rather than a fixed interval as we did before. This
  1347. prevents a group of Tor instances from becoming too synchronized,
  1348. or a single Tor instance from becoming too predictable, in its
  1349. download schedule. Closes ticket 15942.
  1350. o Major features (resource management):
  1351. - Tor can now notice it is about to run out of sockets, and
  1352. preemptively close connections of lower priority. (This feature is
  1353. off by default for now, since the current prioritizing method is
  1354. yet not mature enough. You can enable it by setting
  1355. "DisableOOSCheck 0", but watch out: it might close some sockets
  1356. you would rather have it keep.) Closes ticket 18640.
  1357. o Major features (single-hop "hidden" services):
  1358. - Add experimental HiddenServiceSingleHopMode and
  1359. HiddenServiceNonAnonymousMode options. When both are set to 1,
  1360. every hidden service on that Tor instance becomes a non-anonymous
  1361. Single Onion Service. Single Onions make one-hop (direct)
  1362. connections to their introduction and rendezvous points. One-hop
  1363. circuits make Single Onion servers easily locatable, but clients
  1364. remain location-anonymous. This is compatible with the existing
  1365. hidden service implementation, and works on the current Tor
  1366. network without any changes to older relays or clients. Implements
  1367. proposal 260, completes ticket 17178. Patch by teor and asn.
  1368. o Major features (subprotocol versions):
  1369. - Tor directory authorities now vote on a set of recommended
  1370. "subprotocol versions", and on a set of required subprotocol
  1371. versions. Clients and relays that lack support for a _required_
  1372. subprotocol version will not start; those that lack support for a
  1373. _recommended_ subprotocol version will warn the user to upgrade.
  1374. This change allows compatible implementations of the Tor protocol(s)
  1375. to exist without pretending to be 100% bug-compatible with
  1376. particular releases of Tor itself. Closes ticket 19958; implements
  1377. part of proposal 264.
  1378. o Major bugfixes (circuit building):
  1379. - Hidden service client-to-intro-point and service-to-rendezvous-
  1380. point circuits use the TAP key supplied by the protocol, to avoid
  1381. epistemic attacks. Fixes bug 19163; bugfix on
  1382. o Major bugfixes (download scheduling):
  1383. - Avoid resetting download status for consensuses hourly, since we
  1384. already have another, smarter retry mechanism. Fixes bug 8625;
  1385. bugfix on
  1386. - If a consensus expires while we are waiting for certificates to
  1387. download, stop waiting for certificates.
  1388. - If we stop waiting for certificates less than a minute after we
  1389. started downloading them, do not consider the certificate download
  1390. failure a separate failure. Fixes bug 20533; bugfix
  1391. on
  1392. - When using exponential backoff in test networks, use a lower
  1393. exponent, so the delays do not vary as much. This helps test
  1394. networks bootstrap consistently. Fixes bug 20597; bugfix on 20499.
  1395. o Major bugfixes (exit policies):
  1396. - Avoid disclosing exit outbound bind addresses, configured port
  1397. bind addresses, and local interface addresses in relay descriptors
  1398. by default under ExitPolicyRejectPrivate. Instead, only reject
  1399. these (otherwise unlisted) addresses if
  1400. ExitPolicyRejectLocalInterfaces is set. Fixes bug 18456; bugfix on
  1401. Patch by teor.
  1402. o Major bugfixes (hidden services):
  1403. - Allow Tor clients with appropriate controllers to work with
  1404. FetchHidServDescriptors set to 0. Previously, this option also
  1405. disabled descriptor cache lookup, thus breaking hidden services
  1406. entirely. Fixes bug 18704; bugfix on Patch by "twim".
  1407. - Clients now require hidden services to include the TAP keys for
  1408. their intro points in the hidden service descriptor. This prevents
  1409. an inadvertent upgrade to ntor, which a malicious hidden service
  1410. could use to distinguish clients by consensus version. Fixes bug
  1411. 20012; bugfix on Patch by teor.
  1412. o Major bugfixes (relay, resolver, logging):
  1413. - For relays that don't know their own address, avoid attempting a
  1414. local hostname resolve for each descriptor we download. This
  1415. will cut down on the number of "Success: chose address 'x.x.x.x'"
  1416. log lines, and also avoid confusing clock jumps if the resolver
  1417. is slow. Fixes bugs 20423 and 20610; bugfix on
  1418. o Minor features (port flags):
  1419. - Add new flags to the *Port options to give finer control over which
  1420. requests are allowed. The flags are NoDNSRequest, NoOnionTraffic,
  1421. and the synthetic flag OnionTrafficOnly, which is equivalent to
  1422. NoDNSRequest, NoIPv4Traffic, and NoIPv6Traffic. Closes enhancement
  1423. 18693; patch by "teor".
  1424. o Minor features (build, hardening):
  1425. - Detect and work around a libclang_rt problem that would prevent
  1426. clang from finding __mulodi4() on some 32-bit platforms, and thus
  1427. keep -ftrapv from linking on those systems. Closes ticket 19079.
  1428. - When building on a system without runtime support for the runtime
  1429. hardening options, try to log a useful warning at configuration
  1430. time, rather than an incomprehensible warning at link time. If
  1431. expensive hardening was requested, this warning becomes an error.
  1432. Closes ticket 18895.
  1433. o Minor features (client, directory):
  1434. - Since authorities now omit all routers that lack the Running and
  1435. Valid flags, we assume that any relay listed in the consensus must
  1436. have those flags. Closes ticket 20001; implements part of
  1437. proposal 272.
  1438. o Minor features (code safety):
  1439. - In our integer-parsing functions, ensure that the maximum value we
  1440. allow is no smaller than the minimum value. Closes ticket 19063;
  1441. patch from "U+039b".
  1442. o Minor features (compilation, portability):
  1443. - Compile correctly on MacOS 10.12 (aka "Sierra"). Closes
  1444. ticket 20241.
  1445. o Minor features (config):
  1446. - Warn users when descriptor and port addresses are inconsistent.
  1447. Mitigates bug 13953; patch by teor.
  1448. o Minor features (controller):
  1449. - Allow controllers to configure basic client authorization on
  1450. hidden services when they create them with the ADD_ONION controller
  1451. command. Implements ticket 15588. Patch by "special".
  1452. - Fire a STATUS_SERVER controller event whenever the hibernation
  1453. status changes between "awake"/"soft"/"hard". Closes ticket 18685.
  1454. - Implement new GETINFO queries for all downloads that use
  1455. download_status_t to schedule retries. This allows controllers to
  1456. examine the schedule for pending downloads. Closes ticket 19323.
  1457. o Minor features (development tools, etags):
  1458. - Teach the "make tags" Makefile target how to correctly find
  1459. "MOCK_IMPL" function definitions. Patch from nherring; closes
  1460. ticket 16869.
  1461. o Minor features (directory authority):
  1462. - After voting, if the authorities decide that a relay is not
  1463. "Valid", they no longer include it in the consensus at all. Closes
  1464. ticket 20002; implements part of proposal 272.
  1465. - Directory authorities now only give the Guard flag to a relay if
  1466. they are also giving it the Stable flag. This change allows us to
  1467. simplify path selection for clients. It should have minimal effect
  1468. in practice, since >99% of Guards already have the Stable flag.
  1469. Implements ticket 18624.
  1470. - Directory authorities now write their v3-status-votes file out to
  1471. disk earlier in the consensus process, so we have a record of the
  1472. votes even if we abort the consensus process. Resolves
  1473. ticket 19036.
  1474. o Minor features (fallback directory list, new since
  1475. - Replace the 81 remaining fallbacks of the 100 originally
  1476. introduced in Tor in March 2016, with a list of 177
  1477. fallbacks (123 new, 54 existing, 27 removed) generated in December
  1478. 2016. Resolves ticket 20170.
  1479. o Minor features (hidden service):
  1480. - Stop being so strict about the payload length of "rendezvous1"
  1481. cells. We used to be locked in to the "TAP" handshake length, and
  1482. now we can handle better handshakes like "ntor". Resolves
  1483. ticket 18998.
  1484. o Minor features (infrastructure, time):
  1485. - Tor now includes an improved timer backend, so that we can
  1486. efficiently support tens or hundreds of thousands of concurrent
  1487. timers, as will be needed for some of our planned anti-traffic-
  1488. analysis work. This code is based on William Ahern's "timeout.c"
  1489. project, which implements a "tickless hierarchical timing wheel".
  1490. Closes ticket 18365.
  1491. - Tor now uses the operating system's monotonic timers (where
  1492. available) for internal fine-grained timing. Previously we would
  1493. look at the system clock, and then attempt to compensate for the
  1494. clock running backwards. Closes ticket 18908.
  1495. o Minor features (logging):
  1496. - Add a set of macros to check nonfatal assertions, for internal
  1497. use. Migrating more of our checks to these should help us avoid
  1498. needless crash bugs. Closes ticket 18613.
  1499. - Provide a more useful warning message when configured with an
  1500. invalid Nickname. Closes ticket 18300; patch from "icanhasaccount".
  1501. - When dumping unparseable router descriptors, optionally store them
  1502. in separate files, named by digest, up to a configurable size
  1503. limit. You can change the size limit by setting the
  1504. MaxUnparseableDescSizeToLog option, and disable this feature by
  1505. setting that option to 0. Closes ticket 18322.
  1506. o Minor features (performance):
  1507. - Change the "optimistic data" extension from "off by default" to
  1508. "on by default". The default was ordinarily overridden by a
  1509. consensus option, but when clients were bootstrapping for the
  1510. first time, they would not have a consensus to get the option
  1511. from. Changing this default saves a round-trip during startup.
  1512. Closes ticket 18815.
  1513. o Minor features (relay, usability):
  1514. - When the directory authorities refuse a bad relay's descriptor,
  1515. encourage the relay operator to contact us. Many relay operators
  1516. won't notice this line in their logs, but it's a win if even a few
  1517. learn why we don't like what their relay was doing. Resolves
  1518. ticket 18760.
  1519. o Minor features (security, TLS):
  1520. - Servers no longer support clients that lack AES ciphersuites.
  1521. (3DES is no longer considered an acceptable cipher.) We believe
  1522. that no such Tor clients currently exist, since Tor has required
  1523. OpenSSL 0.9.7 or later since 2009. Closes ticket 19998.
  1524. o Minor features (testing):
  1525. - Disable memory protections on OpenBSD when performing our unit
  1526. tests for memwipe(). The test deliberately invokes undefined
  1527. behavior, and the OpenBSD protections interfere with this. Patch
  1528. from "rubiate". Closes ticket 20066.
  1529. - Move the script to chutney, and modify tor's test-
  1530. to call the (newer) chutney version when available.
  1531. Resolves ticket 19116. Patch by teor.
  1532. - Use the lcov convention for marking lines as unreachable, so that
  1533. we don't count them when we're generating test coverage data.
  1534. Update our coverage tools to understand this convention. Closes
  1535. ticket 16792.
  1536. - Our link-handshake unit tests now check that when invalid
  1537. handshakes fail, they fail with the error messages we expected.
  1538. - Our unit testing code that captures log messages no longer
  1539. prevents them from being written out if the user asked for them
  1540. (by passing --debug or --info or --notice or --warn to the "test"
  1541. binary). This change prevents us from missing unexpected log
  1542. messages simply because we were looking for others. Related to
  1543. ticket 19999.
  1544. - The unit tests now log all warning messages with the "BUG" flag.
  1545. Previously, they only logged errors by default. This change will
  1546. help us make our testing code more correct, and make sure that we
  1547. only hit this code when we mean to. In the meantime, however,
  1548. there will be more warnings in the unit test logs than before.
  1549. This is preparatory work for ticket 19999.
  1550. - The unit tests now treat any failure of a "tor_assert_nonfatal()"
  1551. assertion as a test failure.
  1552. - We've done significant work to make the unit tests run faster.
  1553. o Minor features (testing, ipv6):
  1554. - Add the hs-ipv6 chutney target to make test-network-all's IPv6
  1555. tests. Remove bridges+hs, as it's somewhat redundant. This
  1556. requires a recent chutney version that supports IPv6 clients,
  1557. relays, and authorities. Closes ticket 20069; patch by teor.
  1558. - Add the single-onion and single-onion-ipv6 chutney targets to
  1559. "make test-network-all". This requires a recent chutney version
  1560. with the single onion network flavors (git c72a652 or later).
  1561. Closes ticket 20072; patch by teor.
  1562. o Minor features (Tor2web):
  1563. - Make Tor2web clients respect ReachableAddresses. This feature was
  1564. inadvertently enabled in, then removed by bugfix 19973 on
  1565. Implements feature 20034. Patch by teor.
  1566. o Minor features (unix domain sockets):
  1567. - When configuring a unix domain socket for a SocksPort,
  1568. ControlPort, or Hidden service, you can now wrap the address in
  1569. quotes, using C-style escapes inside the quotes. This allows unix
  1570. domain socket paths to contain spaces. Resolves ticket 18753.
  1571. o Minor features (user interface):
  1572. - Tor now supports the ability to declare options deprecated, so
  1573. that we can recommend that people stop using them. Previously, this
  1574. was done in an ad-hoc way. There is a new --list-deprecated-options
  1575. command-line option to list all of the deprecated options. Closes
  1576. ticket 19820.
  1577. o Minor features (virtual addresses):
  1578. - Increase the maximum number of bits for the IPv6 virtual network
  1579. prefix from 16 to 104. In this way, the condition for address
  1580. allocation is less restrictive. Closes ticket 20151; feature
  1581. on
  1582. o Minor bug fixes (circuits):
  1583. - Use the CircuitBuildTimeout option whenever
  1584. LearnCircuitBuildTimeout is disabled. Previously, we would respect
  1585. the option when a user disabled it, but not when it was disabled
  1586. because some other option was set. Fixes bug 20073; bugfix on
  1587. Patch by teor.
  1588. o Minor bugfixes (build):
  1589. - The current Git revision when building from a local repository is
  1590. now detected correctly when using git worktrees. Fixes bug 20492;
  1591. bugfix on
  1592. o Minor bugfixes (relay address discovery):
  1593. - Stop reordering IP addresses returned by the OS. This makes it
  1594. more likely that Tor will guess the same relay IP address every
  1595. time. Fixes issue 20163; bugfix on, ticket 17027.
  1596. Reported by René Mayrhofer, patch by "cypherpunks".
  1597. o Minor bugfixes (memory allocation):
  1598. - Change how we allocate memory for large chunks on buffers, to
  1599. avoid a (currently impossible) integer overflow, and to waste less
  1600. space when allocating unusually large chunks. Fixes bug 20081;
  1601. bugfix on Issue identified by Guido Vranken.
  1602. o Minor bugfixes (bootstrap):
  1603. - Remember the directory server we fetched the consensus or previous
  1604. certificates from, and use it to fetch future authority
  1605. certificates. This change improves bootstrapping performance.
  1606. Fixes bug 18963; bugfix on
  1607. o Minor bugfixes (circuits):
  1608. - Make sure extend_info_from_router() is only called on servers.
  1609. Fixes bug 19639; bugfix on
  1610. o Minor bugfixes (client, fascistfirewall):
  1611. - Avoid spurious warnings when ReachableAddresses or FascistFirewall
  1612. is set. Fixes bug 20306; bugfix on
  1613. o Minor bugfixes (client, unix domain sockets):
  1614. - Disable IsolateClientAddr when using AF_UNIX backed SocksPorts as
  1615. the client address is meaningless. Fixes bug 20261; bugfix
  1616. on
  1617. o Minor bugfixes (code style):
  1618. - Fix an integer signedness conversion issue in the case conversion
  1619. tables. Fixes bug 19168; bugfix on
  1620. o Minor bugfixes (compilation):
  1621. - Build correctly on versions of libevent2 without support for
  1622. evutil_secure_rng_add_bytes(). Fixes bug 19904; bugfix
  1623. on
  1624. - When building with Clang, use a full set of GCC warnings.
  1625. (Previously, we included only a subset, because of the way we
  1626. detected them.) Fixes bug 19216; bugfix on
  1627. - Detect Libevent2 functions correctly on systems that provide
  1628. libevent2, but where libevent1 is linked with -levent. Fixes bug
  1629. 19904; bugfix on Patch from Rubiate.
  1630. - Run correctly when built on Windows build environments that
  1631. require _vcsprintf(). Fixes bug 20560; bugfix on
  1632. o Minor bugfixes (configuration):
  1633. - When parsing quoted configuration values from the torrc file,
  1634. handle Windows line endings correctly. Fixes bug 19167; bugfix on
  1635. Patch from "Pingl".
  1636. o Minor bugfixes (directory authority):
  1637. - Authorities now sort the "package" lines in their votes, for ease
  1638. of debugging. (They are already sorted in consensus documents.)
  1639. Fixes bug 18840; bugfix on
  1640. - Die with a more useful error when the operator forgets to place
  1641. the authority_signing_key file into the keys directory. This
  1642. avoids an uninformative assert & traceback about having an invalid
  1643. key. Fixes bug 20065; bugfix on
  1644. - When allowing private addresses, mark Exits that only exit to
  1645. private locations as such. Fixes bug 20064; bugfix
  1646. on
  1647. - When parsing a detached signature, make sure we use the length of
  1648. the digest algorithm instead of a hardcoded DIGEST256_LEN in
  1649. order to avoid comparing bytes out-of-bounds with a smaller digest
  1650. length such as SHA1. Fixes bug 19066; bugfix on
  1651. o Minor bugfixes (getpass):
  1652. - Defensively fix a non-triggerable heap corruption at do_getpass()
  1653. to protect ourselves from mistakes in the future. Fixes bug
  1654. 19223; bugfix on Bug found by Guido Vranken, patch
  1655. by nherring.
  1656. o Minor bugfixes (guard selection):
  1657. - Don't mark guards as unreachable if connection_connect() fails.
  1658. That function fails for local reasons, so it shouldn't reveal
  1659. anything about the status of the guard. Fixes bug 14334; bugfix
  1660. on
  1661. - Use a single entry guard even if the NumEntryGuards consensus
  1662. parameter is not provided. Fixes bug 17688; bugfix
  1663. on
  1664. o Minor bugfixes (hidden services):
  1665. - Increase the minimum number of internal circuits we preemptively
  1666. build from 2 to 3, so a circuit is available when a client
  1667. connects to another onion service. Fixes bug 13239; bugfix
  1668. on
  1669. - Allow hidden services to run on IPv6 addresses even when the
  1670. IPv6Exit option is not set. Fixes bug 18357; bugfix
  1671. on
  1672. - Stop logging intro point details to the client log on certain
  1673. error conditions. Fixed as part of bug 20012; bugfix on
  1674. Patch by teor.
  1675. - When deleting an ephemeral hidden service, close its intro points
  1676. even if they are not completely open. Fixes bug 18604; bugfix
  1677. on
  1678. - When configuring hidden services, check every hidden service
  1679. directory's permissions. Previously, we only checked the last
  1680. hidden service. Fixes bug 20529; bugfix on
  1681. o Minor bugfixes (IPv6, testing):
  1682. - Check for IPv6 correctly on Linux when running test networks.
  1683. Fixes bug 19905; bugfix on; patch by teor.
  1684. o Minor bugfixes (Linux seccomp2 sandbox):
  1685. - Add permission to run the sched_yield() and sigaltstack() system
  1686. calls, in order to support versions of Tor compiled with asan or
  1687. ubsan code that use these calls. Now "sandbox 1" and
  1688. "--enable-expensive-hardening" should be compatible on more
  1689. systems. Fixes bug 20063; bugfix on
  1690. o Minor bugfixes (logging):
  1691. - Downgrade a harmless log message about the
  1692. pending_entry_connections list from "warn" to "info". Mitigates
  1693. bug 19926.
  1694. - Log a more accurate message when we fail to dump a microdescriptor.
  1695. Fixes bug 17758; bugfix on Patch from Daniel Pinto.
  1696. - When logging a directory ownership mismatch, log the owning
  1697. username correctly. Fixes bug 19578; bugfix on
  1698. - When we are unable to remove the bw_accounting file, do not warn
  1699. if the reason we couldn't remove it was that it didn't exist.
  1700. Fixes bug 19964; bugfix on Patch from pastly.
  1701. o Minor bugfixes (memory leak):
  1702. - Fix a series of slow memory leaks related to parsing torrc files
  1703. and options. Fixes bug 19466; bugfix on
  1704. - Avoid a small memory leak when informing worker threads about
  1705. rotated onion keys. Fixes bug 20401; bugfix on
  1706. - Fix a small memory leak when receiving AF_UNIX connections on a
  1707. SocksPort. Fixes bug 20716; bugfix on
  1708. - When moving a signed descriptor object from a source to an
  1709. existing destination, free the allocated memory inside that
  1710. destination object. Fixes bug 20715; bugfix on
  1711. - Fix a memory leak and use-after-free error when removing entries
  1712. from the sandbox's getaddrinfo() cache. Fixes bug 20710; bugfix on
  1713. Patch from "cypherpunks".
  1714. - Fix a small, uncommon memory leak that could occur when reading a
  1715. truncated ed25519 key file. Fixes bug 18956; bugfix
  1716. on
  1717. o Minor bugfixes (option parsing):
  1718. - Count unix sockets when counting client listeners (SOCKS, Trans,
  1719. NATD, and DNS). This has no user-visible behavior changes: these
  1720. options are set once, and never read. Required for correct
  1721. behavior in ticket 17178. Fixes bug 19677; bugfix on
  1722. Patch by teor.
  1723. o Minor bugfixes (options):
  1724. - Check the consistency of UseEntryGuards and EntryNodes more
  1725. reliably. Fixes bug 20074; bugfix on Patch
  1726. by teor.
  1727. - Stop changing the configured value of UseEntryGuards on
  1728. authorities and Tor2web clients. Fixes bug 20074; bugfix on
  1729. commits 51fc6799 in and acda1735 in
  1730. Patch by teor.
  1731. o Minor bugfixes (relay):
  1732. - Ensure relays don't make multiple connections during bootstrap.
  1733. Fixes bug 20591; bugfix on
  1734. - Do not try to parallelize workers more than 16x without the user
  1735. explicitly configuring us to do so, even if we do detect more than
  1736. 16 CPU cores. Fixes bug 19968; bugfix on
  1737. o Minor bugfixes (testing):
  1738. - The test-stem and test-network makefile targets now depend only on
  1739. the tor binary that they are testing. Previously, they depended on
  1740. "make all". Fixes bug 18240; bugfix on Based on a
  1741. patch from "cypherpunks".
  1742. - Allow clients to retry HSDirs much faster in test networks. Fixes
  1743. bug 19702; bugfix on Patch by teor.
  1744. - Avoid a unit test failure on systems with over 16 detectable CPU
  1745. cores. Fixes bug 19968; bugfix on
  1746. - Let backtrace tests work correctly under AddressSanitizer:
  1747. disable ASAN's detection of segmentation faults while running
  1748., so that we can make sure that our own backtrace
  1749. generation code works. Fixes bug 18934; bugfix
  1750. on Patch from "cypherpunks".
  1751. - Fix the test-network-all target on out-of-tree builds by using the
  1752. correct path to the test driver script. Fixes bug 19421; bugfix
  1753. on
  1754. - Stop spurious failures in the local interface address discovery
  1755. unit tests. Fixes bug 20634; bugfix on; patch by
  1756. Neel Chauhan.
  1757. - Use ECDHE ciphers instead of ECDH in tortls tests. LibreSSL has
  1758. removed the ECDH ciphers which caused the tests to fail on
  1759. platforms which use it. Fixes bug 20460; bugfix on
  1760. - The tor_tls_server_info_callback unit test no longer crashes when
  1761. debug-level logging is turned on. Fixes bug 20041; bugfix
  1762. on
  1763. o Minor bugfixes (time):
  1764. - Improve overflow checks in tv_udiff and tv_mdiff. Fixes bug 19483;
  1765. bugfix on all released tor versions.
  1766. - When computing the difference between two times in milliseconds,
  1767. we now round to the nearest millisecond correctly. Previously, we
  1768. could sometimes round in the wrong direction. Fixes bug 19428;
  1769. bugfix on
  1770. o Minor bugfixes (Tor2web):
  1771. - Prevent Tor2web clients from running hidden services: these services
  1772. are not anonymous due to the one-hop client paths. Fixes bug
  1773. 19678. Patch by teor.
  1774. o Minor bugfixes (user interface):
  1775. - Display a more accurate number of suppressed messages in the log
  1776. rate-limiter. Previously, there was a potential integer overflow
  1777. in the counter. Now, if the number of messages hits a maximum, the
  1778. rate-limiter doesn't count any further. Fixes bug 19435; bugfix
  1779. on
  1780. - Fix a typo in the passphrase prompt for the ed25519 identity key.
  1781. Fixes bug 19503; bugfix on
  1782. o Code simplification and refactoring:
  1783. - Remove redundant declarations of the MIN macro. Closes
  1784. ticket 18889.
  1785. - Rename tor_dup_addr() to tor_addr_to_str_dup() to avoid confusion.
  1786. Closes ticket 18462; patch from "icanhasaccount".
  1787. - Split the 600-line directory_handle_command_get function into
  1788. separate functions for different URL types. Closes ticket 16698.
  1789. o Documentation:
  1790. - Add module-level internal documentation for 36 C files that
  1791. previously didn't have a high-level overview. Closes ticket 20385.
  1792. - Correct the IPv6 syntax in our documentation for the
  1793. VirtualAddrNetworkIPv6 torrc option. Closes ticket 19743.
  1794. - Correct the minimum bandwidth value in torrc.sample, and queue a
  1795. corresponding change for torrc.minimal. Closes ticket 20085.
  1796. - Fix spelling of "--enable-tor2web-mode" in the manpage. Closes
  1797. ticket 19153. Patch from "U+039b".
  1798. - Module-level documentation for several more modules. Closes
  1799. tickets 19287 and 19290.
  1800. - Document the --passphrase-fd option in the tor manpage. Fixes bug
  1801. 19504; bugfix on
  1802. - Document the default PathsNeededToBuildCircuits value that's used
  1803. by clients when the directory authorities don't set
  1804. min_paths_for_circs_pct. Fixes bug 20117; bugfix on
  1805. Patch by teor, reported by Jesse V.
  1806. - Fix manual for the User option: it takes a username, not a UID.
  1807. Fixes bug 19122; bugfix on 0.0.2pre16 (the first version to have
  1808. a manpage!).
  1809. - Fix the description of the --passphrase-fd option in the
  1810. tor-gencert manpage. The option is used to pass the number of a
  1811. file descriptor to read the passphrase from, not to read the file
  1812. descriptor from. Fixes bug 19505; bugfix on
  1813. o Removed code:
  1814. - We no longer include the (dead, deprecated) bufferevent code in
  1815. Tor. Closes ticket 19450. Based on a patch from "U+039b".
  1816. o Removed features:
  1817. - Remove support for "GET /tor/bytes.txt" DirPort request, and
  1818. "GETINFO dir-usage" controller request, which were only available
  1819. via a compile-time option in Tor anyway. Feature was added in
  1820. Resolves ticket 19035.
  1821. - There is no longer a compile-time option to disable support for
  1822. TransPort. (If you don't want TransPort, just don't use it.) Patch
  1823. from "U+039b". Closes ticket 19449.
  1824. o Testing:
  1825. - Run more workqueue tests as part of "make check". These had
  1826. previously been implemented, but you needed to know special
  1827. command-line options to enable them.
  1828. - We now have unit tests for our code to reject zlib "compression
  1829. bombs". (Fortunately, the code works fine.)
  1830. Changes in version - 2016-12-08
  1831. Tor backports fixes for additional portability issues that
  1832. could prevent Tor from building correctly on OSX Sierra, or with
  1833. OpenSSL 1.1. Affected users should upgrade; others can safely stay
  1834. with
  1835. o Minor bugfixes (portability):
  1836. - Avoid compilation errors when building on OSX Sierra. Sierra began
  1837. to support the getentropy() and clock_gettime() APIs, but created
  1838. a few problems in doing so. Tor 0.2.9 has a more thorough set of
  1839. workarounds; in 0.2.8, we are just using the /dev/urandom and mach
  1840. monotonic time interfaces. Fixes bug 20865. Bugfix
  1841. on
  1842. o Minor bugfixes (portability, backport from
  1843. - Fix compilation with OpenSSL 1.1 and less commonly-used CPU
  1844. architectures. Closes ticket 20588.
  1845. Changes in version - 2016-12-02
  1846. Tor backports a fix for a bug that would sometimes make clients
  1847. unusable after they left standby mode. It also backports fixes for
  1848. a few portability issues and a small but problematic memory leak.
  1849. o Major bugfixes (client reliability, backport from
  1850. - When Tor leaves standby because of a new application request, open
  1851. circuits as needed to serve that request. Previously, we would
  1852. potentially wait a very long time. Fixes part of bug 19969; bugfix
  1853. on
  1854. o Major bugfixes (client performance, backport from
  1855. - Clients now respond to new application stream requests immediately
  1856. when they arrive, rather than waiting up to one second before
  1857. starting to handle them. Fixes part of bug 19969; bugfix
  1858. on
  1859. o Minor bugfixes (portability, backport from
  1860. - Work around a bug in the OSX 10.12 SDK that would prevent us from
  1861. successfully targeting earlier versions of OSX. Resolves
  1862. ticket 20235.
  1863. o Minor bugfixes (portability, backport from
  1864. - Fix implicit conversion warnings under OpenSSL 1.1. Fixes bug
  1865. 20551; bugfix on
  1866. o Minor bugfixes (relay, backport from
  1867. - Work around a memory leak in OpenSSL 1.1 when encoding public
  1868. keys. Fixes bug 20553; bugfix on 0.0.2pre8.
  1869. o Minor features (geoip):
  1870. - Update geoip and geoip6 to the November 3 2016 Maxmind GeoLite2
  1871. Country database.
  1872. Changes in version - 2016-10-17
  1873. Tor backports a fix for a security hole in previous versions
  1874. of Tor that would allow a remote attacker to crash a Tor client,
  1875. hidden service, relay, or authority. All Tor users should upgrade to
  1876. this version, or to Patches will be released for older
  1877. versions of Tor.
  1878. o Major features (security fixes, also in
  1879. - Prevent a class of security bugs caused by treating the contents
  1880. of a buffer chunk as if they were a NUL-terminated string. At
  1881. least one such bug seems to be present in all currently used
  1882. versions of Tor, and would allow an attacker to remotely crash
  1883. most Tor instances, especially those compiled with extra compiler
  1884. hardening. With this defense in place, such bugs can't crash Tor,
  1885. though we should still fix them as they occur. Closes ticket
  1886. 20384 (TROVE-2016-10-001).
  1887. o Minor features (geoip):
  1888. - Update geoip and geoip6 to the October 4 2016 Maxmind GeoLite2
  1889. Country database.
  1890. Changes in version - 2016-09-23
  1891. Tor fixes two crash bugs present in previous versions of the
  1892. 0.2.8.x series. Relays running 0.2.8.x should upgrade, as should users
  1893. who select public relays as their bridges.
  1894. o Major bugfixes (crash):
  1895. - Fix a complicated crash bug that could affect Tor clients
  1896. configured to use bridges when replacing a networkstatus consensus
  1897. in which one of their bridges was mentioned. OpenBSD users saw
  1898. more crashes here, but all platforms were potentially affected.
  1899. Fixes bug 20103; bugfix on
  1900. o Major bugfixes (relay, OOM handler):
  1901. - Fix a timing-dependent assertion failure that could occur when we
  1902. tried to flush from a circuit after having freed its cells because
  1903. of an out-of-memory condition. Fixes bug 20203; bugfix on
  1904. Thanks to "cypherpunks" for help diagnosing
  1905. this one.
  1906. o Minor feature (fallback directories):
  1907. - Remove broken fallbacks from the hard-coded fallback directory
  1908. list. Closes ticket 20190; patch by teor.
  1909. o Minor features (geoip):
  1910. - Update geoip and geoip6 to the September 6 2016 Maxmind GeoLite2
  1911. Country database.
  1912. Changes in version - 2016-08-24
  1913. Tor fixes an important bug related to the ReachableAddresses
  1914. option in, and replaces a retiring bridge authority. Everyone
  1915. who sets the ReachableAddresses option, and all bridges, are strongly
  1916. encouraged to upgrade.
  1917. o Directory authority changes:
  1918. - The "Tonga" bridge authority has been retired; the new bridge
  1919. authority is "Bifroest". Closes tickets 19728 and 19690.
  1920. o Major bugfixes (client, security):
  1921. - Only use the ReachableAddresses option to restrict the first hop
  1922. in a path. In earlier versions of 0.2.8.x, it would apply to
  1923. every hop in the path, with a possible degradation in anonymity
  1924. for anyone using an uncommon ReachableAddress setting. Fixes bug
  1925. 19973; bugfix on
  1926. o Minor features (geoip):
  1927. - Update geoip and geoip6 to the August 2 2016 Maxmind GeoLite2
  1928. Country database.
  1929. o Minor bugfixes (compilation):
  1930. - Remove an inappropriate "inline" in tortls.c that was causing
  1931. warnings on older versions of GCC. Fixes bug 19903; bugfix
  1932. on
  1933. o Minor bugfixes (fallback directories):
  1934. - Avoid logging a NULL string pointer when loading fallback
  1935. directory information. Fixes bug 19947; bugfix on
  1936. and Report and patch by "rubiate".
  1937. Changes in version - 2016-08-02
  1938. Tor is the first stable version of the Tor 0.2.8 series.
  1939. The Tor 0.2.8 series improves client bootstrapping performance,
  1940. completes the authority-side implementation of improved identity
  1941. keys for relays, and includes numerous bugfixes and performance
  1942. improvements throughout the program. This release continues to
  1943. improve the coverage of Tor's test suite. For a full list of
  1944. changes since Tor 0.2.7, see the ReleaseNotes file.
  1945. Below is a list of the changes since Tor 0.2.7.
  1946. o New system requirements:
  1947. - Tor no longer attempts to support platforms where the "time_t"
  1948. type is unsigned. (To the best of our knowledge, only OpenVMS does
  1949. this, and Tor has never actually built on OpenVMS.) Closes
  1950. ticket 18184.
  1951. - Tor no longer supports versions of OpenSSL with a broken
  1952. implementation of counter mode. (This bug was present in OpenSSL
  1953. 1.0.0, and was fixed in OpenSSL 1.0.0a.) Tor still detects, but no
  1954. longer runs with, these versions.
  1955. - Tor now uses Autoconf version 2.63 or later, and Automake 1.11 or
  1956. later (released in 2008 and 2009 respectively). If you are
  1957. building Tor from the git repository instead of from the source
  1958. distribution, and your tools are older than this, you will need to
  1959. upgrade. Closes ticket 17732.
  1960. o Directory authority changes:
  1961. - Update the V3 identity key for the dannenberg directory authority:
  1962. it was changed on 18 November 2015. Closes task 17906. Patch
  1963. by teor.
  1964. - Urras is no longer a directory authority. Closes ticket 19271.
  1965. o Major features (directory system):
  1966. - Include a trial list of default fallback directories, based on an
  1967. opt-in survey of suitable relays. Doing this should make clients
  1968. bootstrap more quickly and reliably, and reduce the load on the
  1969. directory authorities. Closes ticket 15775. Patch by teor.
  1970. Candidates identified using an OnionOO script by weasel, teor,
  1971. gsathya, and karsten.
  1972. - Previously only relays that explicitly opened a directory port
  1973. (DirPort) accepted directory requests from clients. Now all
  1974. relays, with and without a DirPort, accept and serve tunneled
  1975. directory requests that they receive through their ORPort. You can
  1976. disable this behavior using the new DirCache option. Closes
  1977. ticket 12538.
  1978. - When bootstrapping multiple consensus downloads at a time, use the
  1979. first one that starts downloading, and close the rest. This
  1980. reduces failures when authorities or fallback directories are slow
  1981. or down. Together with the code for feature 15775, this feature
  1982. should reduces failures due to fallback churn. Implements ticket
  1983. 4483. Patch by teor. Implements IPv4 portions of proposal 210 by
  1984. mikeperry and teor.
  1985. o Major features (security, Linux):
  1986. - When Tor starts as root on Linux and is told to switch user ID, it
  1987. can now retain the capability to bind to low ports. By default,
  1988. Tor will do this only when it's switching user ID and some low
  1989. ports have been configured. You can change this behavior with the
  1990. new option KeepBindCapabilities. Closes ticket 8195.
  1991. o Major bugfixes (client, bootstrapping):
  1992. - Check if bootstrap consensus downloads are still needed when the
  1993. linked connection attaches. This prevents tor making unnecessary
  1994. begindir-style connections, which are the only directory
  1995. connections tor clients make since the fix for 18483 was merged.
  1996. - Fix some edge cases where consensus download connections may not
  1997. have been closed, even though they were not needed. Related to fix
  1998. for 18809.
  1999. - Make relays retry consensus downloads the correct number of times,
  2000. rather than the more aggressive client retry count. Fixes part of
  2001. ticket 18809.
  2002. o Major bugfixes (dns proxy mode, crash):
  2003. - Avoid crashing when running as a DNS proxy. Fixes bug 16248;
  2004. bugfix on Patch from "cypherpunks".
  2005. o Major bugfixes (ed25519, voting):
  2006. - Actually enable support for authorities to match routers by their
  2007. Ed25519 identities. Previously, the code had been written, but
  2008. some debugging code that had accidentally been left in the
  2009. codebase made it stay turned off. Fixes bug 17702; bugfix
  2010. on
  2011. - When collating votes by Ed25519 identities, authorities now
  2012. include a "NoEdConsensus" flag if the ed25519 value (or lack
  2013. thereof) for a server does not reflect the majority consensus.
  2014. Related to bug 17668; bugfix on
  2015. - When generating a vote with keypinning disabled, never include two
  2016. entries for the same ed25519 identity. This bug was causing
  2017. authorities to generate votes that they could not parse when a
  2018. router violated key pinning by changing its RSA identity but
  2019. keeping its Ed25519 identity. Fixes bug 17668; fixes part of bug
  2020. 18318. Bugfix on
  2021. o Major bugfixes (key management):
  2022. - If OpenSSL fails to generate an RSA key, do not retain a dangling
  2023. pointer to the previous (uninitialized) key value. The impact here
  2024. should be limited to a difficult-to-trigger crash, if OpenSSL is
  2025. running an engine that makes key generation failures possible, or
  2026. if OpenSSL runs out of memory. Fixes bug 19152; bugfix on
  2027. Found by Yuan Jochen Kang, Suman Jana, and
  2028. Baishakhi Ray.
  2029. o Major bugfixes (security, client, DNS proxy):
  2030. - Stop a crash that could occur when a client running with DNSPort
  2031. received a query with multiple address types, and the first
  2032. address type was not supported. Found and fixed by Scott Dial.
  2033. Fixes bug 18710; bugfix on
  2034. o Major bugfixes (security, compilation):
  2035. - Correctly detect compiler flags on systems where _FORTIFY_SOURCE
  2036. is predefined. Previously, our use of -D_FORTIFY_SOURCE would
  2037. cause a compiler warning, thereby making other checks fail, and
  2038. needlessly disabling compiler-hardening support. Fixes one case of
  2039. bug 18841; bugfix on Patch from "trudokal".
  2040. - Repair hardened builds under the clang compiler. Previously, our
  2041. use of _FORTIFY_SOURCE would conflict with clang's address
  2042. sanitizer. Fixes bug 14821; bugfix on
  2043. o Major bugfixes (security, pointers):
  2044. - Avoid a difficult-to-trigger heap corruption attack when extending
  2045. a smartlist to contain over 16GB of pointers. Fixes bug 18162;
  2046. bugfix on, which fixed a related bug incompletely.
  2047. Reported by Guido Vranken.
  2048. o Major bugfixes (testing):
  2049. - Fix a bug that would block 'make test-network-all' on systems where
  2050. IPv6 packets were lost. Fixes bug 19008; bugfix on
  2051. o Major bugfixes (user interface):
  2052. - Correctly give a warning in the cases where a relay is specified
  2053. by nickname, and one such relay is found, but it is not officially
  2054. Named. Fixes bug 19203; bugfix on
  2055. o Minor features (accounting):
  2056. - Added two modes to the AccountingRule option: One for limiting
  2057. only the number of bytes sent ("AccountingRule out"), and one for
  2058. limiting only the number of bytes received ("AccountingRule in").
  2059. Closes ticket 15989; patch from "unixninja92".
  2060. o Minor features (bug-resistance):
  2061. - Make Tor survive errors involving connections without a
  2062. corresponding event object. Previously we'd fail with an
  2063. assertion; now we produce a log message. Related to bug 16248.
  2064. - Use tor_snprintf() and tor_vsnprintf() even in external and low-
  2065. level code, to harden against accidental failures to NUL-
  2066. terminate. Part of ticket 17852. Patch from jsturgix. Found
  2067. with Flawfinder.
  2068. o Minor features (build):
  2069. - Detect systems with FreeBSD-derived kernels (such as GNU/kFreeBSD)
  2070. as having possible IPFW support. Closes ticket 18448. Patch from
  2071. Steven Chamberlain.
  2072. - Since our build process now uses "make distcheck", we no longer
  2073. force "make dist" to depend on "make check". Closes ticket 17893;
  2074. patch from "cypherpunks".
  2075. - Tor now builds once again with the recent OpenSSL 1.1 development
  2076. branch (tested against 1.1.0-pre5 and 1.1.0-pre6-dev). We have been
  2077. tracking OpenSSL 1.1 development as it has progressed, and fixing
  2078. numerous compatibility issues as they arose. See tickets
  2079. 17549, 17921, 17984, 19499, and 18286.
  2080. - When building manual pages, set the timezone to "UTC", so that the
  2081. output is reproducible. Fixes bug 19558; bugfix on
  2082. Patch from intrigeri.
  2083. o Minor features (clients):
  2084. - Make clients, onion services, and bridge relays always use an
  2085. encrypted begindir connection for directory requests. Resolves
  2086. ticket 18483. Patch by teor.
  2087. o Minor features (controller):
  2088. - Add 'GETINFO exit-policy/reject-private/[default,relay]', so
  2089. controllers can examine the the reject rules added by
  2090. ExitPolicyRejectPrivate. This makes it easier for stem to display
  2091. exit policies.
  2092. - Adds the FallbackDir entries to 'GETINFO config/defaults'. Closes
  2093. tickets 16774 and 17817. Patch by George Tankersley.
  2094. - New 'GETINFO hs/service/desc/id/' command to retrieve a hidden
  2095. service descriptor from a service's local hidden service
  2096. descriptor cache. Closes ticket 14846.
  2097. o Minor features (crypto):
  2098. - Add SHA3 and SHAKE support to crypto.c. Closes ticket 17783.
  2099. - Add SHA512 support to crypto.c. Closes ticket 17663; patch from
  2100. George Tankersley.
  2101. - Improve performance when hashing non-multiple of 8 sized buffers,
  2102. based on Andrew Moon's public domain SipHash-2-4 implementation.
  2103. Fixes bug 17544; bugfix on
  2104. - Validate the hard-coded Diffie-Hellman parameters and ensure that
  2105. p is a safe prime, and g is a suitable generator. Closes
  2106. ticket 18221.
  2107. - When allocating a digest state object, allocate no more space than
  2108. we actually need. Previously, we would allocate as much space as
  2109. the state for the largest algorithm would need. This change saves
  2110. up to 672 bytes per circuit. Closes ticket 17796.
  2111. o Minor features (directory downloads):
  2112. - Add UseDefaultFallbackDirs, which enables any hard-coded fallback
  2113. directory mirrors. The default is 1; set it to 0 to disable
  2114. fallbacks. Implements ticket 17576. Patch by teor.
  2115. - Wait for busy authorities and fallback directories to become non-
  2116. busy when bootstrapping. (A similar change was made in 6c443e987d
  2117. for directory caches chosen from the consensus.) Closes ticket
  2118. 17864; patch by teor.
  2119. o Minor features (geoip):
  2120. - Update geoip and geoip6 to the July 6 2016 Maxmind GeoLite2
  2121. Country database.
  2122. o Minor features (hidden service directory):
  2123. - Streamline relay-side hsdir handling: when relays consider whether
  2124. to accept an uploaded hidden service descriptor, they no longer
  2125. check whether they are one of the relays in the network that is
  2126. "supposed" to handle that descriptor. Implements ticket 18332.
  2127. o Minor features (IPv6):
  2128. - Add ClientPreferIPv6DirPort, which is set to 0 by default. If set
  2129. to 1, tor prefers IPv6 directory addresses.
  2130. - Add ClientUseIPv4, which is set to 1 by default. If set to 0, tor
  2131. avoids using IPv4 for client OR and directory connections.
  2132. - Add address policy assume_action support for IPv6 addresses.
  2133. - Add an argument 'ipv6=address:orport' to the DirAuthority and
  2134. FallbackDir torrc options, to specify an IPv6 address for an
  2135. authority or fallback directory. Add hard-coded ipv6 addresses for
  2136. directory authorities that have them. Closes ticket 17327; patch
  2137. from Nick Mathewson and teor.
  2138. - Allow users to configure directory authorities and fallback
  2139. directory servers with IPv6 addresses and ORPorts. Resolves
  2140. ticket 6027.
  2141. - Limit IPv6 mask bits to 128.
  2142. - Make tor_ersatz_socketpair work on IPv6-only systems. Fixes bug
  2143. 17638; bugfix on 0.0.2pre8. Patch by teor.
  2144. - Try harder to obey the IP version restrictions "ClientUseIPv4 0",
  2145. "ClientUseIPv6 0", "ClientPreferIPv6ORPort", and
  2146. "ClientPreferIPv6DirPort". Closes ticket 17840; patch by teor.
  2147. - Warn when comparing against an AF_UNSPEC address in a policy, it's
  2148. almost always a bug. Closes ticket 17863; patch by teor.
  2149. - routerset_parse now accepts IPv6 literal addresses. Fixes bug
  2150. 17060; bugfix on Patch by teor.
  2151. o Minor features (Linux seccomp2 sandbox):
  2152. - Reject attempts to change our Address with "Sandbox 1" enabled.
  2153. Changing Address with Sandbox turned on would never actually work,
  2154. but previously it would fail in strange and confusing ways. Found
  2155. while fixing 18548.
  2156. o Minor features (logging):
  2157. - When logging to syslog, allow a tag to be added to the syslog
  2158. identity (the string prepended to every log message). The tag can
  2159. be configured with SyslogIdentityTag and defaults to none. Setting
  2160. it to "foo" will cause logs to be tagged as "Tor-foo". Closes
  2161. ticket 17194.
  2162. o Minor features (portability):
  2163. - Use timingsafe_memcmp() where available. Closes ticket 17944;
  2164. patch from <>.
  2165. o Minor features (relay, address discovery):
  2166. - Add a family argument to get_interface_addresses_raw() and
  2167. subfunctions to make network interface address interogation more
  2168. efficient. Now Tor can specifically ask for IPv4, IPv6 or both
  2169. types of interfaces from the operating system. Resolves
  2170. ticket 17950.
  2171. - When get_interface_address6_list(.,AF_UNSPEC,.) is called and
  2172. fails to enumerate interface addresses using the platform-specific
  2173. API, have it rely on the UDP socket fallback technique to try and
  2174. find out what IP addresses (both IPv4 and IPv6) our machine has.
  2175. Resolves ticket 17951.
  2176. o Minor features (replay cache):
  2177. - The replay cache now uses SHA256 instead of SHA1. Implements
  2178. feature 8961. Patch by teor, issue reported by rransom.
  2179. o Minor features (robustness):
  2180. - Exit immediately with an error message if the code attempts to use
  2181. Libevent without having initialized it. This should resolve some
  2182. frequently-made mistakes in our unit tests. Closes ticket 18241.
  2183. o Minor features (security, clock):
  2184. - Warn when the system clock appears to move back in time (when the
  2185. state file was last written in the future). Tor doesn't know that
  2186. consensuses have expired if the clock is in the past. Patch by
  2187. teor. Implements ticket 17188.
  2188. o Minor features (security, exit policies):
  2189. - ExitPolicyRejectPrivate now rejects more private addresses by
  2190. default. Specifically, it now rejects the relay's outbound bind
  2191. addresses (if configured), and the relay's configured port
  2192. addresses (such as ORPort and DirPort). Fixes bug 17027; bugfix on
  2193. Patch by teor.
  2194. o Minor features (security, memory erasure):
  2195. - Make memwipe() do nothing when passed a NULL pointer or buffer of
  2196. zero size. Check size argument to memwipe() for underflow. Fixes
  2197. bug 18089; bugfix on and Reported by "gk",
  2198. patch by teor.
  2199. - Set the unused entries in a smartlist to NULL. This helped catch
  2200. a (harmless) bug, and shouldn't affect performance too much.
  2201. Implements ticket 17026.
  2202. - Use SecureMemoryWipe() function to securely clean memory on
  2203. Windows. Previously we'd use OpenSSL's OPENSSL_cleanse() function.
  2204. Implements feature 17986.
  2205. - Use explicit_bzero or memset_s when present. Previously, we'd use
  2206. OpenSSL's OPENSSL_cleanse() function. Closes ticket 7419; patches
  2207. from <> and <>.
  2208. o Minor features (security, RNG):
  2209. - Adjust Tor's use of OpenSSL's RNG APIs so that they absolutely,
  2210. positively are not allowed to fail. Previously we depended on
  2211. internal details of OpenSSL's behavior. Closes ticket 17686.
  2212. - Never use the system entropy output directly for anything besides
  2213. seeding the PRNG. When we want to generate important keys, instead
  2214. of using system entropy directly, we now hash it with the PRNG
  2215. stream. This may help resist certain attacks based on broken OS
  2216. entropy implementations. Closes part of ticket 17694.
  2217. - Use modern system calls (like getentropy() or getrandom()) to
  2218. generate strong entropy on platforms that have them. Closes
  2219. ticket 13696.
  2220. o Minor features (security, win32):
  2221. - Set SO_EXCLUSIVEADDRUSE on Win32 to avoid a local port-stealing
  2222. attack. Fixes bug 18123; bugfix on all tor versions. Patch
  2223. by teor.
  2224. o Minor features (unix domain sockets):
  2225. - Add a new per-socket option, RelaxDirModeCheck, to allow creating
  2226. Unix domain sockets without checking the permissions on the parent
  2227. directory. (Tor checks permissions by default because some
  2228. operating systems only check permissions on the parent directory.
  2229. However, some operating systems do look at permissions on the
  2230. socket, and tor's default check is unneeded.) Closes ticket 18458.
  2231. Patch by weasel.
  2232. o Minor features (unix file permissions):
  2233. - Defer creation of Unix sockets until after setuid. This avoids
  2234. needing CAP_CHOWN and CAP_FOWNER when using systemd's
  2235. CapabilityBoundingSet, or chown and fowner when using SELinux.
  2236. Implements part of ticket 17562. Patch from Jamie Nguyen.
  2237. - If any directory created by Tor is marked as group readable, the
  2238. filesystem group is allowed to be either the default GID or the
  2239. root user. Allowing root to read the DataDirectory prevents the
  2240. need for CAP_READ_SEARCH when using systemd's
  2241. CapabilityBoundingSet, or dac_read_search when using SELinux.
  2242. Implements part of ticket 17562. Patch from Jamie Nguyen.
  2243. - Introduce a new DataDirectoryGroupReadable option. If it is set to
  2244. 1, the DataDirectory will be made readable by the default GID.
  2245. Implements part of ticket 17562. Patch from Jamie Nguyen.
  2246. o Minor bugfixes (accounting):
  2247. - The max bandwidth when using 'AccountRule sum' is now correctly
  2248. logged. Fixes bug 18024; bugfix on Patch
  2249. from "unixninja92".
  2250. o Minor bugfixes (assert, portability):
  2251. - Fix an assertion failure in memarea.c on systems where "long" is
  2252. shorter than the size of a pointer. Fixes bug 18716; bugfix
  2253. on
  2254. o Minor bugfixes (bootstrap):
  2255. - Consistently use the consensus download schedule for authority
  2256. certificates. Fixes bug 18816; bugfix on
  2257. o Minor bugfixes (build):
  2258. - Avoid spurious failures from configure files related to calling
  2259. exit(0) in TOR_SEARCH_LIBRARY. Fixes bug 18626; bugfix on
  2260. Patch from "cypherpunks".
  2261. - Do not link the unit tests against both the testing and non-
  2262. testing versions of the static libraries. Fixes bug 18490; bugfix
  2263. on
  2264. - Resolve warnings when building on systems that are concerned with
  2265. signed char. Fixes bug 18728; bugfix on
  2266. and
  2267. - Silence spurious clang-scan warnings in the ed25519_donna code by
  2268. explicitly initializing some objects. Fixes bug 18384; bugfix on
  2269. Patch by teor.
  2270. - When libscrypt.h is found, but no libscrypt library can be linked,
  2271. treat libscrypt as absent. Fixes bug 19161; bugfix
  2272. on
  2273. - Cause the unit tests to compile correctly on mingw64 versions that
  2274. lack sscanf. Fixes bug 19213; bugfix on
  2275. - Don't try to use the pthread_condattr_setclock() function unless
  2276. it actually exists. Fixes compilation on NetBSD-6.x. Fixes bug
  2277. 17819; bugfix on
  2278. - Fix backtrace compilation on FreeBSD. Fixes bug 17827; bugfix
  2279. on
  2280. - Fix search for libevent libraries on OpenBSD (and other systems
  2281. that install libevent 1 and libevent 2 in parallel). Fixes bug
  2282. 16651; bugfix on Patch from "rubiate".
  2283. - Isolate environment variables meant for tests from the rest of the
  2284. build system. Fixes bug 17818; bugfix on
  2285. - Mark all object files that include micro-revision.i as depending
  2286. on it, so as to make parallel builds more reliable. Fixes bug
  2287. 17826; bugfix on
  2288. - Remove config.log only from make distclean, not from make clean.
  2289. Fixes bug 17924; bugfix on
  2290. - Replace usage of 'INLINE' with 'inline'. Fixes bug 17804; bugfix
  2291. on 0.0.2pre8.
  2292. - Remove an #endif from so that we correctly detect the
  2293. presence of in6_addr.s6_addr32. Fixes bug 17923; bugfix
  2294. on
  2295. o Minor bugfixes (client, bootstrap):
  2296. - Count receipt of new microdescriptors as progress towards
  2297. bootstrapping. Previously, with EntryNodes set, Tor might not
  2298. successfully repopulate the guard set on bootstrapping. Fixes bug
  2299. 16825; bugfix on
  2300. o Minor bugfixes (code correctness):
  2301. - Fix a bad memory handling bug that would occur if we had queued a
  2302. cell on a channel's incoming queue. Fortunately, we can't actually
  2303. queue a cell like that as our code is constructed today, but it's
  2304. best to avoid this kind of error, even if there isn't any code
  2305. that triggers it today. Fixes bug 18570; bugfix on
  2306. - Assert that allocated memory held by the reputation code is freed
  2307. according to its internal counters. Fixes bug 17753; bugfix
  2308. on
  2309. - Assert when the TLS contexts fail to initialize. Fixes bug 17683;
  2310. bugfix on 0.0.6.
  2311. - Update to the latest version of Trunnel, which tries harder to
  2312. avoid generating code that can invoke memcpy(p,NULL,0). Bug found
  2313. by clang address sanitizer. Fixes bug 18373; bugfix
  2314. on
  2315. - When closing an entry connection, generate a warning if we should
  2316. have sent an end cell for it but we haven't. Fixes bug 17876;
  2317. bugfix on
  2318. o Minor bugfixes (configuration):
  2319. - Fix a tiny memory leak when parsing a port configuration ending in
  2320. ":auto". Fixes bug 18374; bugfix on
  2321. o Minor bugfixes (containers):
  2322. - If we somehow attempt to construct a heap with more than
  2323. 1073741822 elements, avoid an integer overflow when maintaining
  2324. the heap property. Fixes bug 18296; bugfix on
  2325. o Minor bugfixes (controller, microdescriptors):
  2326. - Make GETINFO dir/status-vote/current/consensus conform to the
  2327. control specification by returning "551 Could not open cached
  2328. consensus..." when not caching consensuses. Fixes bug 18920;
  2329. bugfix on
  2330. o Minor bugfixes (crypto):
  2331. - Check the return value of HMAC() and assert on failure. Fixes bug
  2332. 17658; bugfix on Patch by teor.
  2333. o Minor bugfixes (directories):
  2334. - When fetching extrainfo documents, compare their SHA256 digests
  2335. and Ed25519 signing key certificates with the routerinfo that led
  2336. us to fetch them, rather than with the most recent routerinfo.
  2337. Otherwise we generate many spurious warnings about mismatches.
  2338. Fixes bug 17150; bugfix on
  2339. - When generating a URL for a directory server on an IPv6 address,
  2340. wrap the IPv6 address in square brackets. Fixes bug 18051; bugfix
  2341. on Patch from Malek.
  2342. o Minor bugfixes (downloading):
  2343. - Predict more correctly whether we'll be downloading over HTTP when
  2344. we determine the maximum length of a URL. This should avoid a
  2345. "BUG" warning about the Squid HTTP proxy and its URL limits. Fixes
  2346. bug 19191.
  2347. o Minor bugfixes (exit policies, security):
  2348. - Refresh an exit relay's exit policy when interface addresses
  2349. change. Previously, tor only refreshed the exit policy when the
  2350. configured external address changed. Fixes bug 18208; bugfix on
  2351. Patch by teor.
  2352. o Minor bugfixes (fallback directories):
  2353. - Mark fallbacks as "too busy" when they return a 503 response,
  2354. rather than just marking authorities. Fixes bug 17572; bugfix on
  2355. Patch by teor.
  2356. - When requesting extrainfo descriptors from a trusted directory
  2357. server, check whether it is an authority or a fallback directory
  2358. which supports extrainfo descriptors. Fixes bug 18489; bugfix on
  2359. Reported by atagar, patch by teor.
  2360. o Minor bugfixes (hidden service, client):
  2361. - Handle the case where the user makes several fast consecutive
  2362. requests to the same .onion address. Previously, the first six
  2363. requests would each trigger a descriptor fetch, each picking a
  2364. directory (there are 6 overall) and the seventh one would fail
  2365. because no directories were left, thereby triggering a close on
  2366. all current directory connections asking for the hidden service.
  2367. The solution here is to not close the connections if we have
  2368. pending directory fetches. Fixes bug 15937; bugfix
  2369. on
  2370. o Minor bugfixes (hidden service, control port):
  2371. - Add the onion address to the HS_DESC event for the UPLOADED action
  2372. both on success or failure. It was previously hardcoded with
  2373. UNKNOWN. Fixes bug 16023; bugfix on
  2374. o Minor bugfixes (hidden service, directory):
  2375. - Bridges now refuse "rendezvous2" (hidden service descriptor)
  2376. publish attempts. Suggested by ticket 18332.
  2377. o Minor bugfixes (IPv6):
  2378. - Update the limits in max_dl_per_request for IPv6 address length.
  2379. Fixes bug 17573; bugfix on
  2380. o Minor bugfixes (Linux seccomp2 sandbox):
  2381. - Allow more syscalls when running with "Sandbox 1" enabled:
  2382. sysinfo, getsockopt(SO_SNDBUF), and setsockopt(SO_SNDBUFFORCE). On
  2383. some systems, these are required for Tor to start. Fixes bug
  2384. 18397; bugfix on Patch from Daniel Pinto.
  2385. - Allow IPPROTO_UDP datagram sockets when running with "Sandbox 1",
  2386. so that get_interface_address6_via_udp_socket_hack() can work.
  2387. Fixes bug 19660; bugfix on
  2388. - Allow the setrlimit syscall, and the prlimit and prlimit64
  2389. syscalls, which some libc implementations use under the hood.
  2390. Fixes bug 15221; bugfix on
  2391. - Avoid a 10-second delay when starting as a client with "Sandbox 1"
  2392. enabled and no DNS resolvers configured. This should help TAILS
  2393. start up faster. Fixes bug 18548; bugfix on
  2394. - Fix a crash when using offline master ed25519 keys with the Linux
  2395. seccomp2 sandbox enabled. Fixes bug 17675; bugfix on
  2396. - Allow statistics to be written to disk when "Sandbox 1" is
  2397. enabled. Fixes bugs 19556 and 19957; bugfix on and
  2398. respectively.
  2399. o Minor bugfixes (logging):
  2400. - In log messages that include a function name, use __FUNCTION__
  2401. instead of __PRETTY_FUNCTION__. In GCC, these are synonymous, but
  2402. with clang __PRETTY_FUNCTION__ has extra information we don't
  2403. need. Fixes bug 16563; bugfix on 0.0.2pre8. Fix by Tom van
  2404. der Woerdt.
  2405. - Remove needless quotes from a log message about unparseable
  2406. addresses. Fixes bug 17843; bugfix on
  2407. - Scrub service name in "unrecognized service ID" log messages.
  2408. Fixes bug 18600; bugfix on
  2409. - When logging information about an unparsable networkstatus vote or
  2410. consensus, do not say "vote" when we mean consensus. Fixes bug
  2411. 18368; bugfix on
  2412. - When we can't generate a signing key because OfflineMasterKey is
  2413. set, do not imply that we should have been able to load it. Fixes
  2414. bug 18133; bugfix on
  2415. - When logging a malformed hostname received through socks4, scrub
  2416. it if SafeLogging says we should. Fixes bug 17419; bugfix
  2417. on
  2418. o Minor bugfixes (memory safety):
  2419. - Avoid freeing an uninitialized pointer when opening a socket fails
  2420. in get_interface_addresses_ioctl(). Fixes bug 18454; bugfix on
  2421. Reported by toralf and "cypherpunks", patch
  2422. by teor.
  2423. - Fix a memory leak in "tor --list-fingerprint". Fixes part of bug
  2424. 18672; bugfix on
  2425. - Fix a memory leak in tor-gencert. Fixes part of bug 18672; bugfix
  2426. on
  2427. o Minor bugfixes (pluggable transports):
  2428. - Avoid reporting a spurious error when we decide that we don't need
  2429. to terminate a pluggable transport because it has already exited.
  2430. Fixes bug 18686; bugfix on
  2431. o Minor bugfixes (pointer arithmetic):
  2432. - Fix a bug in memarea_alloc() that could have resulted in remote
  2433. heap write access, if Tor had ever passed an unchecked size to
  2434. memarea_alloc(). Fortunately, all the sizes we pass to
  2435. memarea_alloc() are pre-checked to be less than 128 kilobytes.
  2436. Fixes bug 19150; bugfix on Bug found by
  2437. Guido Vranken.
  2438. o Minor bugfixes (private directory):
  2439. - Prevent a race condition when creating private directories. Fixes
  2440. part of bug 17852; bugfix on 0.0.2pre13. Part of ticket 17852.
  2441. Patch from jsturgix. Found with Flawfinder.
  2442. o Minor bugfixes (relays):
  2443. - Check that both the ORPort and DirPort (if present) are reachable
  2444. before publishing a relay descriptor. Otherwise, relays publish a
  2445. descriptor with DirPort 0 when the DirPort reachability test takes
  2446. longer than the ORPort reachability test. Fixes bug 18050; bugfix
  2447. on Reported by "starlight", patch by teor.
  2448. - Resolve some edge cases where we might launch an ORPort
  2449. reachability check even when DisableNetwork is set. Noticed while
  2450. fixing bug 18616; bugfix on
  2451. o Minor bugfixes (relays, hidden services):
  2452. - Refuse connection requests to private OR addresses unless
  2453. ExtendAllowPrivateAddresses is set. Previously, tor would connect,
  2454. then refuse to send any cells to a private address. Fixes bugs
  2455. 17674 and 8976; bugfix on Patch by teor.
  2456. o Minor bugfixes (security, hidden services):
  2457. - Prevent hidden services connecting to client-supplied rendezvous
  2458. addresses that are reserved as internal or multicast. Fixes bug
  2459. 8976; bugfix on Patch by dgoulet and teor.
  2460. o Minor bugfixes (statistics):
  2461. - Consistently check for overflow in round_*_to_next_multiple_of
  2462. functions, and add unit tests with additional and maximal values.
  2463. Fixes part of bug 13192; bugfix on
  2464. - Handle edge cases in the laplace functions: avoid division by
  2465. zero, avoid taking the log of zero, and silence clang type
  2466. conversion warnings using round and trunc. Add unit tests for edge
  2467. cases with maximal values. Fixes part of bug 13192; bugfix
  2468. on
  2469. - We now include consensus downloads via IPv6 in our directory-
  2470. request statistics. Fixes bug 18460; bugfix on
  2471. o Minor bugfixes (test networks, IPv6):
  2472. - Allow internal IPv6 addresses in descriptors in test networks.
  2473. Fixes bug 17153; bugfix on Patch by teor, reported
  2474. by karsten.
  2475. o Minor bugfixes (testing):
  2476. - Check the full results of SHA256 and SHA512 digests in the unit
  2477. tests. Bugfix on Patch by teor.
  2478. - Fix a memory leak in the ntor test. Fixes bug 17778; bugfix
  2479. on
  2480. - Fix a small memory leak that would occur when the
  2481. TestingEnableCellStatsEvent option was turned on. Fixes bug 18673;
  2482. bugfix on
  2483. - Make unit tests pass on IPv6-only systems, and systems without
  2484. localhost addresses (like some FreeBSD jails). Fixes bug 17632;
  2485. bugfix on Patch by teor.
  2486. - The test for log_heartbeat was incorrectly failing in timezones
  2487. with non-integer offsets. Instead of comparing the end of the time
  2488. string against a constant, compare it to the output of
  2489. format_local_iso_time when given the correct input. Fixes bug
  2490. 18039; bugfix on
  2491. - We no longer disable assertions in the unit tests when coverage is
  2492. enabled. Instead, we require you to say --disable-asserts-in-tests
  2493. to the configure script if you need assertions disabled in the
  2494. unit tests (for example, if you want to perform branch coverage).
  2495. Fixes bug 18242; bugfix on
  2496. o Minor bugfixes (time handling):
  2497. - When correcting a corrupt 'struct tm' value, fill in the tm_wday
  2498. field. Otherwise, our unit tests crash on Windows. Fixes bug
  2499. 18977; bugfix on
  2500. - Avoid overflow in tor_timegm when parsing dates in and after 2038
  2501. on platforms with 32-bit time_t. Fixes bug 18479; bugfix on
  2502. 0.0.2pre14. Patch by teor.
  2503. o Minor bugfixes (tor-gencert):
  2504. - Correctly handle the case where an authority operator enters a
  2505. passphrase but sends an EOF before sending a newline. Fixes bug
  2506. 17443; bugfix on Found by junglefowl.
  2507. o Code simplification and refactoring:
  2508. - Clean up a little duplicated code in
  2509. crypto_expand_key_material_TAP(). Closes ticket 17587; patch
  2510. from "pfrankw".
  2511. - Decouple the list of streams waiting to be attached to circuits
  2512. from the overall connection list. This change makes it possible to
  2513. attach streams quickly while simplifying Tor's callgraph and
  2514. avoiding O(N) scans of the entire connection list. Closes
  2515. ticket 17590.
  2516. - Extract the more complicated parts of circuit_mark_for_close()
  2517. into a new function that we run periodically before circuits are
  2518. freed. This change removes more than half of the functions
  2519. currently in the "blob". Closes ticket 17218.
  2520. - Move logging of redundant policy entries in
  2521. policies_parse_exit_policy_internal into its own function. Closes
  2522. ticket 17608; patch from "juce".
  2523. - Quote all the string interpolations in -- even those
  2524. which we are pretty sure can't contain spaces. Closes ticket
  2525. 17744. Patch from zerosion.
  2526. - Remove code for configuring OpenSSL dynamic locks; OpenSSL doesn't
  2527. use them. Closes ticket 17926.
  2528. - Remove specialized code for non-inplace AES_CTR. 99% of our AES is
  2529. inplace, so there's no need to have a separate implementation for
  2530. the non-inplace code. Closes ticket 18258. Patch from Malek.
  2531. - Simplify return types for some crypto functions that can't
  2532. actually fail. Patch from Hassan Alsibyani. Closes ticket 18259.
  2533. - When a direct directory request fails immediately on launch,
  2534. instead of relaunching that request from inside the code that
  2535. launches it, instead mark the connection for teardown. This change
  2536. simplifies Tor's callback and prevents the directory-request
  2537. launching code from invoking itself recursively. Closes
  2538. ticket 17589.
  2539. o Documentation:
  2540. - Add a description of the correct use of the '--keygen' command-
  2541. line option. Closes ticket 17583; based on text by 's7r'.
  2542. - Change build messages to refer to "Fedora" instead of "Fedora
  2543. Core", and "dnf" instead of "yum". Closes tickets 18459 and 18426.
  2544. Patches from "icanhasaccount" and "cypherpunks".
  2545. - Document the contents of the 'datadir/keys' subdirectory in the
  2546. manual page. Closes ticket 17621.
  2547. - Document the minimum HeartbeatPeriod value. Closes ticket 15638.
  2548. - Explain actual minima for BandwidthRate. Closes ticket 16382.
  2549. - Fix a minor formatting typo in the manpage. Closes ticket 17791.
  2550. - Mention torspec URL in the manpage and point the reader to it
  2551. whenever we mention a document that belongs in torspce. Fixes
  2552. issue 17392.
  2553. - Stop recommending use of nicknames to identify relays in our
  2554. MapAddress documentation. Closes ticket 18312.
  2555. o Removed features:
  2556. - Remove client-side support for connecting to Tor relays running
  2557. versions of Tor before These relays didn't support
  2558. the v3 TLS handshake protocol, and are no longer allowed on the
  2559. Tor network. Implements the client side of ticket 11150. Based on
  2560. patches by Tom van der Woerdt.
  2561. - We no longer maintain an internal freelist in memarea.c.
  2562. Allocators should be good enough to make this code unnecessary,
  2563. and it's doubtful that it ever had any performance benefit.
  2564. o Testing:
  2565. - Add unit tests to check for common RNG failure modes, such as
  2566. returning all zeroes, identical values, or incrementing values
  2567. (OpenSSL's rand_predictable feature). Patch by teor.
  2568. - Always test both ed25519 backends, so that we can be sure that our
  2569. batch-open replacement code works. Part of ticket 16794.
  2570. - Cover dns_resolve_impl() in dns.c with unit tests. Implements a
  2571. portion of ticket 16831.
  2572. - Fix several warnings from clang's address sanitizer produced in
  2573. the unit tests.
  2574. - Log more information when the backtrace tests fail. Closes ticket
  2575. 17892. Patch from "cypherpunks."
  2576. - More unit tests for compat_libevent.c, procmon.c, tortls.c,
  2577. util_format.c, directory.c, and options_validate.c. Closes tickets
  2578. 17075, 17082, 17084, 17003, and 17076 respectively. Patches from
  2579. Ola Bini.
  2580. - Treat backtrace test failures as expected on FreeBSD until we
  2581. solve bug 17808. Closes ticket 18204.
  2582. - Unit tests for directory_handle_command_get. Closes ticket 17004.
  2583. Patch from Reinaldo de Souza Jr.
  2584. Changes in version - 2015-12-10
  2585. Tor version fixes a major bug in entry guard selection, as
  2586. well as a minor bug in hidden service reliability.
  2587. o Major bugfixes (guard selection):
  2588. - Actually look at the Guard flag when selecting a new directory
  2589. guard. When we implemented the directory guard design, we
  2590. accidentally started treating all relays as if they have the Guard
  2591. flag during guard selection, leading to weaker anonymity and worse
  2592. performance. Fixes bug 17772; bugfix on Discovered
  2593. by Mohsen Imani.
  2594. o Minor features (geoip):
  2595. - Update geoip and geoip6 to the December 1 2015 Maxmind GeoLite2
  2596. Country database.
  2597. o Minor bugfixes (compilation):
  2598. - When checking for net/pfvar.h, include netinet/in.h if possible.
  2599. This fixes transparent proxy detection on OpenBSD. Fixes bug
  2600. 17551; bugfix on Patch from "rubiate".
  2601. - Fix a compilation warning with Clang 3.6: Do not check the
  2602. presence of an address which can never be NULL. Fixes bug 17781.
  2603. o Minor bugfixes (correctness):
  2604. - When displaying an IPv6 exit policy, include the mask bits
  2605. correctly even when the number is greater than 31. Fixes bug
  2606. 16056; bugfix on Patch from "gturner".
  2607. - The wrong list was used when looking up expired intro points in a
  2608. rend service object, causing what we think could be reachability
  2609. issues for hidden services, and triggering a BUG log. Fixes bug
  2610. 16702; bugfix on
  2611. - Fix undefined behavior in the tor_cert_checksig function. Fixes
  2612. bug 17722; bugfix on
  2613. Changes in version - 2015-11-20
  2614. The Tor 0.2.7 release series is dedicated to the memory of Tor user
  2615. and privacy advocate Caspar Bowden (1961-2015). Caspar worked
  2616. tirelessly to advocate human rights regardless of national borders,
  2617. and oppose the encroachments of mass surveillance. He opposed national
  2618. exceptionalism, he brought clarity to legal and policy debates, he
  2619. understood and predicted the impact of mass surveillance on the world,
  2620. and he laid the groundwork for resisting it. While serving on the Tor
  2621. Project's board of directors, he brought us his uncompromising focus
  2622. on technical excellence in the service of humankind. Caspar was an
  2623. inimitable force for good and a wonderful friend. He was kind,
  2624. humorous, generous, gallant, and believed we should protect one
  2625. another without exception. We honor him here for his ideals, his
  2626. efforts, and his accomplishments. Please honor his memory with works
  2627. that would make him proud.
  2628. Tor is the first stable release in the Tor 0.2.7 series.
  2629. The 0.2.7 series adds a more secure identity key type for relays,
  2630. improves cryptography performance, resolves several longstanding
  2631. hidden-service performance issues, improves controller support for
  2632. hidden services, and includes small bugfixes and performance
  2633. improvements throughout the program. This release series also includes
  2634. more tests than before, and significant simplifications to which parts
  2635. of Tor invoke which others. For a full list of changes, see below.
  2636. o New system requirements:
  2637. - Tor no longer includes workarounds to support Libevent versions
  2638. before 1.3e. Libevent 2.0 or later is recommended. Closes
  2639. ticket 15248.
  2640. - Tor no longer supports copies of OpenSSL that are missing support
  2641. for Elliptic Curve Cryptography. (We began using ECC when
  2642. available in, for more safe and efficient key
  2643. negotiation.) In particular, support for at least one of P256 or
  2644. P224 is now required, with manual configuration needed if only
  2645. P224 is available. Resolves ticket 16140.
  2646. - Tor no longer supports versions of OpenSSL before 1.0. (If you are
  2647. on an operating system that has not upgraded to OpenSSL 1.0 or
  2648. later, and you compile Tor from source, you will need to install a
  2649. more recent OpenSSL to link Tor against.) These versions of
  2650. OpenSSL are still supported by the OpenSSL, but the numerous
  2651. cryptographic improvements in later OpenSSL releases makes them a
  2652. clear choice. Resolves ticket 16034.
  2653. o Major features (controller):
  2654. - Add the ADD_ONION and DEL_ONION commands that allow the creation
  2655. and management of hidden services via the controller. Closes
  2656. ticket 6411.
  2657. - New "GETINFO onions/current" and "GETINFO onions/detached"
  2658. commands to get information about hidden services created via the
  2659. controller. Part of ticket 6411.
  2660. - New HSFETCH command to launch a request for a hidden service
  2661. descriptor. Closes ticket 14847.
  2662. - New HSPOST command to upload a hidden service descriptor. Closes
  2663. ticket 3523. Patch by "DonnchaC".
  2664. o Major features (Ed25519 identity keys, Proposal 220):
  2665. - Add support for offline encrypted Ed25519 master keys. To use this
  2666. feature on your tor relay, run "tor --keygen" to make a new master
  2667. key (or to make a new signing key if you already have a master
  2668. key). Closes ticket 13642.
  2669. - All relays now maintain a stronger identity key, using the Ed25519
  2670. elliptic curve signature format. This master key is designed so
  2671. that it can be kept offline. Relays also generate an online
  2672. signing key, and a set of other Ed25519 keys and certificates.
  2673. These are all automatically regenerated and rotated as needed.
  2674. Implements part of ticket 12498.
  2675. - Directory authorities now vote on Ed25519 identity keys along with
  2676. RSA1024 keys. Implements part of ticket 12498.
  2677. - Directory authorities track which Ed25519 identity keys have been
  2678. used with which RSA1024 identity keys, and do not allow them to
  2679. vary freely. Implements part of ticket 12498.
  2680. - Microdescriptors now include Ed25519 identity keys. Implements
  2681. part of ticket 12498.
  2682. - Add a --newpass option to allow changing or removing the
  2683. passphrase of an encrypted key with tor --keygen. Implements part
  2684. of ticket 16769.
  2685. - Add a new OfflineMasterKey option to tell Tor never to try loading
  2686. or generating a secret Ed25519 identity key. You can use this in
  2687. combination with tor --keygen to manage offline and/or encrypted
  2688. Ed25519 keys. Implements ticket 16944.
  2689. - On receiving a HUP signal, check to see whether the Ed25519
  2690. signing key has changed, and reload it if so. Closes ticket 16790.
  2691. - Significant usability improvements for Ed25519 key management. Log
  2692. messages are better, and the code can recover from far more
  2693. failure conditions. Thanks to "s7r" for reporting and diagnosing
  2694. so many of these!
  2695. o Major features (ECC performance):
  2696. - Improve the runtime speed of Ed25519 signature verification by
  2697. using Ed25519-donna's batch verification support. Implements
  2698. ticket 16533.
  2699. - Improve the speed of Ed25519 operations and Curve25519 keypair
  2700. generation when built targeting 32 bit x86 platforms with SSE2
  2701. available. Implements ticket 16535.
  2702. - Improve the runtime speed of Ed25519 operations by using the
  2703. public-domain Ed25519-donna by Andrew M. ("floodyberry").
  2704. Implements ticket 16467.
  2705. - Improve the runtime speed of the ntor handshake by using an
  2706. optimized curve25519 basepoint scalarmult implementation from the
  2707. public-domain Ed25519-donna by Andrew M. ("floodyberry"), based on
  2708. ideas by Adam Langley. Implements ticket 9663.
  2709. o Major features (Hidden services):
  2710. - Hidden services, if using the EntryNodes option, are required to
  2711. use more than one EntryNode, in order to avoid a guard discovery
  2712. attack. (This would only affect people who had configured hidden
  2713. services and manually specified the EntryNodes option with a
  2714. single entry-node. The impact was that it would be easy to
  2715. remotely identify the guard node used by such a hidden service.
  2716. See ticket for more information.) Fixes ticket 14917.
  2717. - Add the torrc option HiddenServiceNumIntroductionPoints, to
  2718. specify a fixed number of introduction points. Its maximum value
  2719. is 10 and default is 3. Using this option can increase a hidden
  2720. service's reliability under load, at the cost of making it more
  2721. visible that the hidden service is facing extra load. Closes
  2722. ticket 4862.
  2723. - Remove the adaptive algorithm for choosing the number of
  2724. introduction points, which used to change the number of
  2725. introduction points (poorly) depending on the number of
  2726. connections the HS sees. Closes ticket 4862.
  2727. o Major features (onion key cross-certification):
  2728. - Relay descriptors now include signatures of their own identity
  2729. keys, made using the TAP and ntor onion keys. These signatures
  2730. allow relays to prove ownership of their own onion keys. Because
  2731. of this change, microdescriptors will no longer need to include
  2732. RSA identity keys. Implements proposal 228; closes ticket 12499.
  2733. o Major bugfixes (client-side privacy, also in
  2734. - Properly separate out each SOCKSPort when applying stream
  2735. isolation. The error occurred because each port's session group
  2736. was being overwritten by a default value when the listener
  2737. connection was initialized. Fixes bug 16247; bugfix on
  2738. Patch by "jojelino".
  2739. o Major bugfixes (hidden service clients, stability, also in
  2740. - Stop refusing to store updated hidden service descriptors on a
  2741. client. This reverts commit 9407040c59218 (which indeed fixed bug
  2742. 14219, but introduced a major hidden service reachability
  2743. regression detailed in bug 16381). This is a temporary fix since
  2744. we can live with the minor issue in bug 14219 (it just results in
  2745. some load on the network) but the regression of 16381 is too much
  2746. of a setback. First-round fix for bug 16381; bugfix
  2747. on
  2748. o Major bugfixes (hidden services):
  2749. - Revert commit that made directory authorities assign the HSDir
  2750. flag to relay without a DirPort; this was bad because such relays
  2751. can't handle BEGIN_DIR cells. Fixes bug 15850; bugfix
  2752. on
  2753. - When cannibalizing a circuit for an introduction point, always
  2754. extend to the chosen exit node (creating a 4 hop circuit).
  2755. Previously Tor would use the current circuit exit node, which
  2756. changed the original choice of introduction point, and could cause
  2757. the hidden service to skip excluded introduction points or
  2758. reconnect to a skipped introduction point. Fixes bug 16260; bugfix
  2759. on
  2760. o Major bugfixes (memory leaks):
  2761. - Fix a memory leak in ed25519 batch signature checking. Fixes bug
  2762. 17398; bugfix on
  2763. o Major bugfixes (open file limit):
  2764. - The open file limit wasn't checked before calling
  2765. tor_accept_socket_nonblocking(), which would make Tor exceed the
  2766. limit. Now, before opening a new socket, Tor validates the open
  2767. file limit just before, and if the max has been reached, return an
  2768. error. Fixes bug 16288; bugfix on
  2769. o Major bugfixes (security, correctness):
  2770. - Fix an error that could cause us to read 4 bytes before the
  2771. beginning of an openssl string. This bug could be used to cause
  2772. Tor to crash on systems with unusual malloc implementations, or
  2773. systems with unusual hardening installed. Fixes bug 17404; bugfix
  2774. on
  2775. o Major bugfixes (stability, also in
  2776. - Stop crashing with an assertion failure when parsing certain kinds
  2777. of malformed or truncated microdescriptors. Fixes bug 16400;
  2778. bugfix on Found by "torkeln"; fix based on a patch
  2779. by "cypherpunks_backup".
  2780. - Stop random client-side assertion failures that could occur when
  2781. connecting to a busy hidden service, or connecting to a hidden
  2782. service while a NEWNYM is in progress. Fixes bug 16013; bugfix
  2783. on
  2784. o Minor features (client, SOCKS):
  2785. - Add GroupWritable and WorldWritable options to unix-socket based
  2786. SocksPort and ControlPort options. These options apply to a single
  2787. socket, and override {Control,Socks}SocketsGroupWritable. Closes
  2788. ticket 15220.
  2789. - Relax the validation done to hostnames in SOCKS5 requests, and
  2790. allow a single trailing '.' to cope with clients that pass FQDNs
  2791. using that syntax to explicitly indicate that the domain name is
  2792. fully-qualified. Fixes bug 16674; bugfix on
  2793. - Relax the validation of hostnames in SOCKS5 requests, allowing the
  2794. character '_' to appear, in order to cope with domains observed in
  2795. the wild that are serving non-RFC compliant records. Resolves
  2796. ticket 16430.
  2797. o Minor features (client-side privacy):
  2798. - New KeepAliveIsolateSOCKSAuth option to indefinitely extend circuit
  2799. lifespan when IsolateSOCKSAuth and streams with SOCKS
  2800. authentication are attached to the circuit. This allows
  2801. applications like TorBrowser to manage circuit lifetime on their
  2802. own. Implements feature 15482.
  2803. - When logging malformed hostnames from SOCKS5 requests, respect
  2804. SafeLogging configuration. Fixes bug 16891; bugfix on
  2805. o Minor features (clock-jump tolerance):
  2806. - Recover better when our clock jumps back many hours, like might
  2807. happen for Tails or Whonix users who start with a very wrong
  2808. hardware clock, use Tor to discover a more accurate time, and then
  2809. fix their clock. Resolves part of ticket 8766.
  2810. o Minor features (command-line interface):
  2811. - Make --hash-password imply --hush to prevent unnecessary noise.
  2812. Closes ticket 15542. Patch from "cypherpunks".
  2813. - Print a warning whenever we find a relative file path being used
  2814. as torrc option. Resolves issue 14018.
  2815. o Minor features (compilation):
  2816. - Give a warning as early as possible when trying to build with an
  2817. unsupported OpenSSL version. Closes ticket 16901.
  2818. - Use C99 variadic macros when the compiler is not GCC. This avoids
  2819. failing compilations on MSVC, and fixes a log-file-based race
  2820. condition in our old workarounds. Original patch from Gisle Vanem.
  2821. o Minor features (control protocol):
  2822. - Support network-liveness GETINFO key and NETWORK_LIVENESS event in
  2823. the control protocol. Resolves ticket 15358.
  2824. o Minor features (controller):
  2825. - Add DirAuthority lines for default directory authorities to the
  2826. output of the "GETINFO config/defaults" command if not already
  2827. present. Implements ticket 14840.
  2828. - Controllers can now use "GETINFO hs/client/desc/id/..." to
  2829. retrieve items from the client's hidden service descriptor cache.
  2830. Closes ticket 14845.
  2831. - Implement a new controller command "GETINFO status/fresh-relay-
  2832. descs" to fetch a descriptor/extrainfo pair that was generated on
  2833. demand just for the controller's use. Implements ticket 14784.
  2834. o Minor features (directory authorities):
  2835. - Directory authorities no longer vote against the "Fast", "Stable",
  2836. and "HSDir" flags just because they were going to vote against
  2837. "Running": if the consensus turns out to be that the router was
  2838. running, then the authority's vote should count. Patch from Peter
  2839. Retzlaff; closes issue 8712.
  2840. o Minor features (directory authorities, security, also in
  2841. - The HSDir flag given by authorities now requires the Stable flag.
  2842. For the current network, this results in going from 2887 to 2806
  2843. HSDirs. Also, it makes it harder for an attacker to launch a sybil
  2844. attack by raising the effort for a relay to become Stable to
  2845. require at the very least 7 days, while maintaining the 96 hours
  2846. uptime requirement for HSDir. Implements ticket 8243.
  2847. o Minor features (DoS-resistance):
  2848. - Make it harder for attackers to overload hidden services with
  2849. introductions, by blocking multiple introduction requests on the
  2850. same circuit. Resolves ticket 15515.
  2851. o Minor features (geoip):
  2852. - Update geoip and geoip6 to the October 9 2015 Maxmind GeoLite2
  2853. Country database.
  2854. o Minor features (hidden services):
  2855. - Add the new options "HiddenServiceMaxStreams" and
  2856. "HiddenServiceMaxStreamsCloseCircuit" to allow hidden services to
  2857. limit the maximum number of simultaneous streams per circuit, and
  2858. optionally tear down the circuit when the limit is exceeded. Part
  2859. of ticket 16052.
  2860. - Client now uses an introduction point failure cache to know when
  2861. to fetch or keep a descriptor in their cache. Previously, failures
  2862. were recorded implicitly, but not explicitly remembered. Closes
  2863. ticket 16389.
  2864. - Relays need to have the Fast flag to get the HSDir flag. As this
  2865. is being written, we'll go from 2745 HSDirs down to 2342, a ~14%
  2866. drop. This change should make some attacks against the hidden
  2867. service directory system harder. Fixes ticket 15963.
  2868. - Turn on hidden service statistics collection by setting the torrc
  2869. option HiddenServiceStatistics to "1" by default. (This keeps
  2870. track only of the fraction of traffic used by hidden services, and
  2871. the total number of hidden services in existence.) Closes
  2872. ticket 15254.
  2873. - To avoid leaking HS popularity, don't cycle the introduction point
  2874. when we've handled a fixed number of INTRODUCE2 cells but instead
  2875. cycle it when a random number of introductions is reached, thus
  2876. making it more difficult for an attacker to find out the amount of
  2877. clients that have used the introduction point for a specific HS.
  2878. Closes ticket 15745.
  2879. o Minor features (logging):
  2880. - Include the Tor version in all LD_BUG log messages, since people
  2881. tend to cut and paste those into the bugtracker. Implements
  2882. ticket 15026.
  2883. o Minor features (pluggable transports):
  2884. - When launching managed pluggable transports on Linux systems,
  2885. attempt to have the kernel deliver a SIGTERM on tor exit if the
  2886. pluggable transport process is still running. Resolves
  2887. ticket 15471.
  2888. - When launching managed pluggable transports, setup a valid open
  2889. stdin in the child process that can be used to detect if tor has
  2890. terminated. The "TOR_PT_EXIT_ON_STDIN_CLOSE" environment variable
  2891. can be used by implementations to detect this new behavior.
  2892. Resolves ticket 15435.
  2893. o Minor bugfixes (torrc exit policies):
  2894. - In each instance above, usage advice is provided to avoid the
  2895. message. Resolves ticket 16069. Patch by "teor". Fixes part of bug
  2896. 16069; bugfix on
  2897. - In torrc, "accept6 *" and "reject6 *" ExitPolicy lines now only
  2898. produce IPv6 wildcard addresses. Previously they would produce
  2899. both IPv4 and IPv6 wildcard addresses. Patch by "teor". Fixes part
  2900. of bug 16069; bugfix on
  2901. - When parsing torrc ExitPolicies, we now issue an info-level
  2902. message when expanding an "accept/reject *" line to include both
  2903. IPv4 and IPv6 wildcard addresses. Related to ticket 16069.
  2904. - When parsing torrc ExitPolicies, we now warn for a number of cases
  2905. where the user's intent is likely to differ from Tor's actual
  2906. behavior. These include: using an IPv4 address with an accept6 or
  2907. reject6 line; using "private" on an accept6 or reject6 line; and
  2908. including any ExitPolicy lines after accept *:* or reject *:*.
  2909. Related to ticket 16069.
  2910. o Minor bugfixes (command-line interface):
  2911. - When "--quiet" is provided along with "--validate-config", do not
  2912. write anything to stdout on success. Fixes bug 14994; bugfix
  2913. on
  2914. - When complaining about bad arguments to "--dump-config", use
  2915. stderr, not stdout.
  2916. - Print usage information for --dump-config when it is used without
  2917. an argument. Also, fix the error message to use different wording
  2918. and add newline at the end. Fixes bug 15541; bugfix
  2919. on
  2920. o Minor bugfixes (compilation):
  2921. - Fix compilation of sandbox.c with musl-libc. Fixes bug 17347;
  2922. bugfix on Patch from 'jamestk'.
  2923. - Repair compilation with the most recent (unreleased, alpha)
  2924. vesions of OpenSSL 1.1. Fixes part of ticket 17237.
  2925. o Minor bugfixes (compilation, also in
  2926. - Build with --enable-systemd correctly when libsystemd is
  2927. installed, but systemd is not. Fixes bug 16164; bugfix on
  2928. Patch from Peter Palfrader.
  2929. o Minor bugfixes (configuration, unit tests):
  2930. - Only add the default fallback directories when the DirAuthorities,
  2931. AlternateDirAuthority, and FallbackDir directory config options
  2932. are set to their defaults. The default fallback directory list is
  2933. currently empty, this fix will only change tor's behavior when it
  2934. has default fallback directories. Includes unit tests for
  2935. consider_adding_dir_servers(). Fixes bug 15642; bugfix on
  2936. 90f6071d8dc0 in Patch by "teor".
  2937. o Minor bugfixes (controller):
  2938. - Add the descriptor ID in each HS_DESC control event. It was
  2939. missing, but specified in control-spec.txt. Fixes bug 15881;
  2940. bugfix on
  2941. o Minor bugfixes (correctness):
  2942. - For correctness, avoid modifying a constant string in
  2943. handle_control_postdescriptor. Fixes bug 15546; bugfix
  2944. on
  2945. - Remove side-effects from tor_assert() calls. This was harmless,
  2946. because we never disable assertions, but it is bad style and
  2947. unnecessary. Fixes bug 15211; bugfix on,,
  2948. and
  2949. - When calling channel_free_list(), avoid calling smartlist_remove()
  2950. while inside a FOREACH loop. This partially reverts commit
  2951. 17356fe7fd96af where the correct SMARTLIST_DEL_CURRENT was
  2952. incorrectly removed. Fixes bug 16924; bugfix on
  2953. o Minor bugfixes (crypto error-handling, also in
  2954. - Check for failures from crypto_early_init, and refuse to continue.
  2955. A previous typo meant that we could keep going with an
  2956. uninitialized crypto library, and would have OpenSSL initialize
  2957. its own PRNG. Fixes bug 16360; bugfix on, introduced
  2958. when implementing ticket 4900. Patch by "teor".
  2959. o Minor bugfixes (hidden service):
  2960. - Fix an out-of-bounds read when parsing invalid INTRODUCE2 cells on
  2961. a client authorized hidden service. Fixes bug 15823; bugfix
  2962. on
  2963. - Remove an extraneous newline character from the end of hidden
  2964. service descriptors. Fixes bug 15296; bugfix on
  2965. o Minor bugfixes (Linux seccomp2 sandbox):
  2966. - Use the sandbox in tor_open_cloexec whether or not O_CLOEXEC is
  2967. defined. Patch by "teor". Fixes bug 16515; bugfix on
  2968. - Allow bridge authorities to run correctly under the seccomp2
  2969. sandbox. Fixes bug 16964; bugfix on
  2970. - Add the "hidserv-stats" filename to our sandbox filter for the
  2971. HiddenServiceStatistics option to work properly. Fixes bug 17354;
  2972. bugfix on Patch from David Goulet.
  2973. o Minor bugfixes (Linux seccomp2 sandbox, also in
  2974. - Allow pipe() and pipe2() syscalls in the seccomp2 sandbox: we need
  2975. these when eventfd2() support is missing. Fixes bug 16363; bugfix
  2976. on Patch from "teor".
  2977. o Minor bugfixes (Linux seccomp2 sandbox, also in
  2978. - Allow systemd connections to work with the Linux seccomp2 sandbox
  2979. code. Fixes bug 16212; bugfix on Patch by
  2980. Peter Palfrader.
  2981. - Fix sandboxing to work when running as a relay, by allowing the
  2982. renaming of secret_id_key, and allowing the eventfd2 and futex
  2983. syscalls. Fixes bug 16244; bugfix on Patch by
  2984. Peter Palfrader.
  2985. o Minor bugfixes (logging):
  2986. - When building Tor under Clang, do not include an extra set of
  2987. parentheses in log messages that include function names. Fixes bug
  2988. 15269; bugfix on every released version of Tor when compiled with
  2989. recent enough Clang.
  2990. o Minor bugfixes (network):
  2991. - When attempting to use fallback technique for network interface
  2992. lookup, disregard loopback and multicast addresses since they are
  2993. unsuitable for public communications.
  2994. o Minor bugfixes (open file limit):
  2995. - Fix set_max_file_descriptors() to set by default the max open file
  2996. limit to the current limit when setrlimit() fails. Fixes bug
  2997. 16274; bugfix on tor- Patch by dgoulet.
  2998. o Minor bugfixes (portability):
  2999. - Check correctly for Windows socket errors in the workqueue
  3000. backend. Fixes bug 16741; bugfix on
  3001. - Try harder to normalize the exit status of the Tor process to the
  3002. standard-provided range. Fixes bug 16975; bugfix on every version
  3003. of Tor ever.
  3004. - Use libexecinfo on FreeBSD to enable backtrace support. Fixes part
  3005. of bug 17151; bugfix on Patch from Marcin Cieślak.
  3006. o Minor bugfixes (relay):
  3007. - Ensure that worker threads actually exit when a fatal error or
  3008. shutdown is indicated. This fix doesn't currently affect the
  3009. behavior of Tor, because Tor workers never indicates fatal error
  3010. or shutdown except in the unit tests. Fixes bug 16868; bugfix
  3011. on
  3012. - Fix a rarely-encountered memory leak when failing to initialize
  3013. the thread pool. Fixes bug 16631; bugfix on Patch
  3014. from "cypherpunks".
  3015. - Unblock threads before releasing the work queue mutex to ensure
  3016. predictable scheduling behavior. Fixes bug 16644; bugfix
  3017. on
  3018. o Minor bugfixes (security, exit policies):
  3019. - ExitPolicyRejectPrivate now also rejects the relay's published
  3020. IPv6 address (if any), and any publicly routable IPv4 or IPv6
  3021. addresses on any local interfaces. ticket 17027. Patch by "teor".
  3022. Fixes bug 17027; bugfix on
  3023. o Minor bugfixes (statistics):
  3024. - Disregard the ConnDirectionStatistics torrc options when Tor is
  3025. not a relay since in that mode of operation no sensible data is
  3026. being collected and because Tor might run into measurement hiccups
  3027. when running as a client for some time, then becoming a relay.
  3028. Fixes bug 15604; bugfix on
  3029. o Minor bugfixes (systemd):
  3030. - Tor's systemd unit file no longer contains extraneous spaces.
  3031. These spaces would sometimes confuse tools like deb-systemd-
  3032. helper. Fixes bug 16162; bugfix on
  3033. o Minor bugfixes (test networks):
  3034. - When self-testing reachability, use ExtendAllowPrivateAddresses to
  3035. determine if local/private addresses imply reachability. The
  3036. previous fix used TestingTorNetwork, which implies
  3037. ExtendAllowPrivateAddresses, but this excluded rare configurations
  3038. where ExtendAllowPrivateAddresses is set but TestingTorNetwork is
  3039. not. Fixes bug 15771; bugfix on Patch by "teor",
  3040. issue discovered by CJ Ess.
  3041. o Minor bugfixes (tests, also in
  3042. - Fix a crash in the unit tests when built with MSVC2013. Fixes bug
  3043. 16030; bugfix on Patch from "NewEraCracker".
  3044. o Code simplification and refactoring:
  3045. - Change the function that's called when we need to retry all
  3046. downloads so that it only reschedules the downloads to happen
  3047. immediately, rather than launching them all at once itself. This
  3048. further simplifies Tor's callgraph.
  3049. - Define WINVER and _WIN32_WINNT centrally, in orconfig.h, in order
  3050. to ensure they remain consistent and visible everywhere.
  3051. - Move some format-parsing functions out of crypto.c and
  3052. crypto_curve25519.c into crypto_format.c and/or util_format.c.
  3053. - Move the client-only parts of init_keys() into a separate
  3054. function. Closes ticket 16763.
  3055. - Move the hacky fallback code out of get_interface_address6() into
  3056. separate function and get it covered with unit-tests. Resolves
  3057. ticket 14710.
  3058. - Refactor hidden service client-side cache lookup to intelligently
  3059. report its various failure cases, and disentangle failure cases
  3060. involving a lack of introduction points. Closes ticket 14391.
  3061. - Remove some vestigial workarounds for the MSVC6 compiler. We
  3062. haven't supported that in ages.
  3063. - Remove the unused "nulterminate" argument from buf_pullup().
  3064. - Simplify the microdesc_free() implementation so that it no longer
  3065. appears (to code analysis tools) to potentially invoke a huge
  3066. suite of other microdesc functions.
  3067. - Simply the control graph further by deferring the inner body of
  3068. directory_all_unreachable() into a callback. Closes ticket 16762.
  3069. - The link authentication code has been refactored for better
  3070. testability and reliability. It now uses code generated with the
  3071. "trunnel" binary encoding generator, to reduce the risk of bugs
  3072. due to programmer error. Done as part of ticket 12498.
  3073. - Treat the loss of an owning controller as equivalent to a SIGTERM
  3074. signal. This removes a tiny amount of duplicated code, and
  3075. simplifies our callgraph. Closes ticket 16788.
  3076. - Use our own Base64 encoder instead of OpenSSL's, to allow more
  3077. control over the output. Part of ticket 15652.
  3078. - When generating an event to send to the controller, we no longer
  3079. put the event over the network immediately. Instead, we queue
  3080. these events, and use a Libevent callback to deliver them. This
  3081. change simplifies Tor's callgraph by reducing the number of
  3082. functions from which all other Tor functions are reachable. Closes
  3083. ticket 16695.
  3084. - Wrap Windows-only C files inside '#ifdef _WIN32' so that tools
  3085. that try to scan or compile every file on Unix won't decide that
  3086. they are broken.
  3087. o Documentation:
  3088. - Fix capitalization of SOCKS in sample torrc. Closes ticket 15609.
  3089. - Improve the descriptions of statistics-related torrc options in
  3090. the manpage to describe rationale and possible uses cases. Fixes
  3091. issue 15550.
  3092. - Improve the layout and formatting of ./configure --help messages.
  3093. Closes ticket 15024. Patch from "cypherpunks".
  3094. - Include a specific and (hopefully) accurate documentation of the
  3095. torrc file's meta-format in doc/torrc_format.txt. This is mainly
  3096. of interest to people writing programs to parse or generate torrc
  3097. files. This document is not a commitment to long-term
  3098. compatibility; some aspects of the current format are a bit
  3099. ridiculous. Closes ticket 2325.
  3100. - Include the TUNING document in our source tarball. It is referred
  3101. to in the ChangeLog and an error message. Fixes bug 16929; bugfix
  3102. on
  3103. - Note that HiddenServicePorts can take a unix domain socket. Closes
  3104. ticket 17364.
  3105. - Recommend a 40 GB example AccountingMax in torrc.sample rather
  3106. than a 4 GB max. Closes ticket 16742.
  3107. - Standardize on the term "server descriptor" in the manual page.
  3108. Previously, we had used "router descriptor", "server descriptor",
  3109. and "relay descriptor" interchangeably. Part of ticket 14987.
  3110. - Advise users on how to configure separate IPv4 and IPv6 exit
  3111. policies in the manpage and sample torrcs. Related to ticket 16069.
  3112. - Fix an error in the manual page and comments for
  3113. TestingDirAuthVoteHSDir[IsStrict], which suggested that a HSDir
  3114. required "ORPort connectivity". While this is true, it is in no
  3115. way unique to the HSDir flag. Of all the flags, only HSDirs need a
  3116. DirPort configured in order for the authorities to assign that
  3117. particular flag. Patch by "teor". Fixed as part of 14882; bugfix
  3118. on
  3119. - Fix the usage message of tor-resolve(1) so that it no longer lists
  3120. the removed -F option. Fixes bug 16913; bugfix on
  3121. o Removed code:
  3122. - Remove `USE_OPENSSL_BASE64` and the corresponding fallback code
  3123. and always use the internal Base64 decoder. The internal decoder
  3124. has been part of tor since, and no one should
  3125. be using the OpenSSL one. Part of ticket 15652.
  3126. - Remove the 'tor_strclear()' function; use memwipe() instead.
  3127. Closes ticket 14922.
  3128. - Remove the code that would try to aggressively flush controller
  3129. connections while writing to them. This code was introduced in
  3130., in order to keep output buffers from exceeding
  3131. their limits. But there is no longer a maximum output buffer size,
  3132. and flushing data in this way caused some undesirable recursions
  3133. in our call graph. Closes ticket 16480.
  3134. - The internal pure-C tor-fw-helper tool is now removed from the Tor
  3135. distribution, in favor of the pure-Go clone available from
  3136. . The libraries
  3137. used by the C tor-fw-helper are not, in our opinion, very
  3138. confidence- inspiring in their secure-programming techniques.
  3139. Closes ticket 13338.
  3140. o Removed features:
  3141. - Remove the (seldom-used) DynamicDHGroups feature. For anti-
  3142. fingerprinting we now recommend pluggable transports; for forward-
  3143. secrecy in TLS, we now use the P-256 group. Closes ticket 13736.
  3144. - Remove the HidServDirectoryV2 option. Now all relays offer to
  3145. store hidden service descriptors. Related to 16543.
  3146. - Remove the VoteOnHidServDirectoriesV2 option, since all
  3147. authorities have long set it to 1. Closes ticket 16543.
  3148. - Remove the undocumented "--digests" command-line option. It
  3149. complicated our build process, caused subtle build issues on
  3150. multiple platforms, and is now redundant since we started
  3151. including git version identifiers. Closes ticket 14742.
  3152. - Tor no longer contains checks for ancient directory cache versions
  3153. that didn't know about microdescriptors.
  3154. - Tor no longer contains workarounds for stat files generated by
  3155. super-old versions of Tor that didn't choose guards sensibly.
  3156. o Testing:
  3157. - The script now supports performance testing.
  3158. Requires corresponding chutney performance testing changes. Patch
  3159. by "teor". Closes ticket 14175.
  3160. - Add a new set of callgraph analysis scripts that use clang to
  3161. produce a list of which Tor functions are reachable from which
  3162. other Tor functions. We're planning to use these to help simplify
  3163. our code structure by identifying illogical dependencies.
  3164. - Add new 'test-full' and 'test-full-online' targets to run all
  3165. tests, including integration tests with stem and chutney.
  3166. - Autodetect CHUTNEY_PATH if the chutney and Tor sources are side-
  3167. by-side in the same parent directory. Closes ticket 16903. Patch
  3168. by "teor".
  3169. - Document use of coverity, clang static analyzer, and clang dynamic
  3170. undefined behavior and address sanitizers in doc/HACKING. Include
  3171. detailed usage instructions in the blacklist. Patch by "teor".
  3172. Closes ticket 15817.
  3173. - Make "bridges+hs" the default test network. This tests almost all
  3174. tor functionality during make test-network, while allowing tests
  3175. to succeed on non-IPv6 systems. Requires chutney commit 396da92 in
  3176. test-network-bridges-hs. Closes tickets 16945 (tor) and 16946
  3177. (chutney). Patches by "teor".
  3178. - Make the test-workqueue test work on Windows by initializing the
  3179. network before we begin.
  3180. - New make target (make test-network-all) to run multiple applicable
  3181. chutney test cases. Patch from Teor; closes 16953.
  3182. - Now that OpenSSL has its own scrypt implementation, add an unit
  3183. test that checks for interoperability between libscrypt_scrypt()
  3184. and OpenSSL's EVP_PBE_scrypt() so that we could not use libscrypt
  3185. and rely on EVP_PBE_scrypt() whenever possible. Resolves
  3186. ticket 16189.
  3187. - The link authentication protocol code now has extensive tests.
  3188. - The relay descriptor signature testing code now has
  3189. extensive tests.
  3190. - The test_workqueue program now runs faster, and is enabled by
  3191. default as a part of "make check".
  3192. - Unit test dns_resolve(), dns_clip_ttl() and dns_get_expiry_ttl()
  3193. functions in dns.c. Implements a portion of ticket 16831.
  3194. - Use environment variables rather than autoconf substitutions to
  3195. send variables from the build system to the test scripts. This
  3196. change should be easier to maintain, and cause 'make distcheck' to
  3197. work better than before. Fixes bug 17148.
  3198. - When building Tor with testing coverage enabled, run Chutney tests
  3199. (if any) using the 'tor-cov' coverage binary.
  3200. - When running test-network or test-stem, check for the absence of
  3201. stem/chutney before doing any build operations.
  3202. - Add a test to verify that the compiler does not eliminate our
  3203. memwipe() implementation. Closes ticket 15377.
  3204. - Add make rule `check-changes` to verify the format of changes
  3205. files. Closes ticket 15180.
  3206. - Add unit tests for control_event_is_interesting(). Add a compile-
  3207. time check that the number of events doesn't exceed the capacity
  3208. of control_event_t.event_mask. Closes ticket 15431, checks for
  3209. bugs similar to 13085. Patch by "teor".
  3210. - Command-line argument tests moved to Stem. Resolves ticket 14806.
  3211. - Integrate the ntor, backtrace, and zero-length keys tests into the
  3212. automake test suite. Closes ticket 15344.
  3213. - Remove assertions during builds to determine Tor's test coverage.
  3214. We don't want to trigger these even in assertions, so including
  3215. them artificially makes our branch coverage look worse than it is.
  3216. This patch provides the new test-stem-full and coverage-html-full
  3217. configure options. Implements ticket 15400.
  3218. - New TestingDirAuthVote{Exit,Guard,HSDir}IsStrict flags to
  3219. explicitly manage consensus flags in testing networks. Patch by
  3220. "robgjansen", modified by "teor". Implements part of ticket 14882.
  3221. - Check for matching value in server response in Fixes
  3222. bug 15591; bugfix on Reported and fixed
  3223. by "joelanders".
  3224. - Set the severity correctly when testing
  3225. get_interface_addresses_ifaddrs() and
  3226. get_interface_addresses_win32(), so that the tests fail gracefully
  3227. instead of triggering an assertion. Fixes bug 15759; bugfix on
  3228. Reported by Nicolas Derive.
  3229. Changes in version - 2015-07-12
  3230. Tor version fixes some significant stability and hidden
  3231. service client bugs, bulletproofs the cryptography init process, and
  3232. fixes a bug when using the sandbox code with some older versions of
  3233. Linux. Everyone running an older version, especially an older version
  3234. of 0.2.6, should upgrade.
  3235. o Major bugfixes (hidden service clients, stability):
  3236. - Stop refusing to store updated hidden service descriptors on a
  3237. client. This reverts commit 9407040c59218 (which indeed fixed bug
  3238. 14219, but introduced a major hidden service reachability
  3239. regression detailed in bug 16381). This is a temporary fix since
  3240. we can live with the minor issue in bug 14219 (it just results in
  3241. some load on the network) but the regression of 16381 is too much
  3242. of a setback. First-round fix for bug 16381; bugfix
  3243. on
  3244. o Major bugfixes (stability):
  3245. - Stop crashing with an assertion failure when parsing certain kinds
  3246. of malformed or truncated microdescriptors. Fixes bug 16400;
  3247. bugfix on Found by "torkeln"; fix based on a patch
  3248. by "cypherpunks_backup".
  3249. - Stop random client-side assertion failures that could occur when
  3250. connecting to a busy hidden service, or connecting to a hidden
  3251. service while a NEWNYM is in progress. Fixes bug 16013; bugfix
  3252. on
  3253. o Minor features (geoip):
  3254. - Update geoip to the June 3 2015 Maxmind GeoLite2 Country database.
  3255. - Update geoip6 to the June 3 2015 Maxmind GeoLite2 Country database.
  3256. o Minor bugfixes (crypto error-handling):
  3257. - Check for failures from crypto_early_init, and refuse to continue.
  3258. A previous typo meant that we could keep going with an
  3259. uninitialized crypto library, and would have OpenSSL initialize
  3260. its own PRNG. Fixes bug 16360; bugfix on, introduced
  3261. when implementing ticket 4900. Patch by "teor".
  3262. o Minor bugfixes (Linux seccomp2 sandbox):
  3263. - Allow pipe() and pipe2() syscalls in the seccomp2 sandbox: we need
  3264. these when eventfd2() support is missing. Fixes bug 16363; bugfix
  3265. on Patch from "teor".
  3266. Changes in version - 2015-06-11
  3267. Tor fixes a regression in the circuit isolation code, increases the
  3268. requirements for receiving an HSDir flag, and addresses some other small
  3269. bugs in the systemd and sandbox code. Clients using circuit isolation
  3270. should upgrade; all directory authorities should upgrade.
  3271. o Major bugfixes (client-side privacy):
  3272. - Properly separate out each SOCKSPort when applying stream
  3273. isolation. The error occurred because each port's session group was
  3274. being overwritten by a default value when the listener connection
  3275. was initialized. Fixes bug 16247; bugfix on Patch
  3276. by "jojelino".
  3277. o Minor feature (directory authorities, security):
  3278. - The HSDir flag given by authorities now requires the Stable flag.
  3279. For the current network, this results in going from 2887 to 2806
  3280. HSDirs. Also, it makes it harder for an attacker to launch a sybil
  3281. attack by raising the effort for a relay to become Stable which
  3282. takes at the very least 7 days to do so and by keeping the 96
  3283. hours uptime requirement for HSDir. Implements ticket 8243.
  3284. o Minor bugfixes (compilation):
  3285. - Build with --enable-systemd correctly when libsystemd is
  3286. installed, but systemd is not. Fixes bug 16164; bugfix on
  3287. Patch from Peter Palfrader.
  3288. o Minor bugfixes (Linux seccomp2 sandbox):
  3289. - Fix sandboxing to work when running as a relaymby renaming of
  3290. secret_id_key, and allowing the eventfd2 and futex syscalls. Fixes
  3291. bug 16244; bugfix on Patch by Peter Palfrader.
  3292. - Allow systemd connections to work with the Linux seccomp2 sandbox
  3293. code. Fixes bug 16212; bugfix on Patch by
  3294. Peter Palfrader.
  3295. o Minor bugfixes (tests):
  3296. - Fix a crash in the unit tests when built with MSVC2013. Fixes bug
  3297. 16030; bugfix on Patch from "NewEraCracker".
  3298. Changes in version - 2015-05-21
  3299. Tor fixes a bit of dodgy code in parsing INTRODUCE2 cells, and
  3300. fixes an authority-side bug in assigning the HSDir flag. All directory
  3301. authorities should upgrade.
  3302. o Major bugfixes (hidden services, backport from
  3303. - Revert commit that made directory authorities assign the HSDir
  3304. flag to relay without a DirPort; this was bad because such relays
  3305. can't handle BEGIN_DIR cells. Fixes bug 15850; bugfix
  3306. on
  3307. o Minor bugfixes (hidden service, backport from
  3308. - Fix an out-of-bounds read when parsing invalid INTRODUCE2 cells on
  3309. a client authorized hidden service. Fixes bug 15823; bugfix
  3310. on
  3311. o Minor features (geoip):
  3312. - Update geoip to the April 8 2015 Maxmind GeoLite2 Country database.
  3313. - Update geoip6 to the April 8 2015 Maxmind GeoLite2
  3314. Country database.
  3315. Changes in version - 2015-04-06
  3316. Tor fixes two security issues that could be used by an
  3317. attacker to crash hidden services, or crash clients visiting hidden
  3318. services. Hidden services should upgrade as soon as possible; clients
  3319. should upgrade whenever packages become available.
  3320. This release also contains two simple improvements to make hidden
  3321. services a bit less vulnerable to denial-of-service attacks.
  3322. o Major bugfixes (security, hidden service):
  3323. - Fix an issue that would allow a malicious client to trigger an
  3324. assertion failure and halt a hidden service. Fixes bug 15600;
  3325. bugfix on Reported by "disgleirio".
  3326. - Fix a bug that could cause a client to crash with an assertion
  3327. failure when parsing a malformed hidden service descriptor. Fixes
  3328. bug 15601; bugfix on Found by "DonnchaC".
  3329. o Minor features (DoS-resistance, hidden service):
  3330. - Introduction points no longer allow multiple INTRODUCE1 cells to
  3331. arrive on the same circuit. This should make it more expensive for
  3332. attackers to overwhelm hidden services with introductions.
  3333. Resolves ticket 15515.
  3334. - Decrease the amount of reattempts that a hidden service performs
  3335. when its rendezvous circuits fail. This reduces the computational
  3336. cost for running a hidden service under heavy load. Resolves
  3337. ticket 11447.
  3338. Changes in version - 2015-04-06
  3339. Tor backports two fixes from for security issues that
  3340. could be used by an attacker to crash hidden services, or crash clients
  3341. visiting hidden services. Hidden services should upgrade as soon as
  3342. possible; clients should upgrade whenever packages become available.
  3343. This release also backports a simple improvement to make hidden
  3344. services a bit less vulnerable to denial-of-service attacks.
  3345. o Major bugfixes (security, hidden service):
  3346. - Fix an issue that would allow a malicious client to trigger an
  3347. assertion failure and halt a hidden service. Fixes bug 15600;
  3348. bugfix on Reported by "disgleirio".
  3349. - Fix a bug that could cause a client to crash with an assertion
  3350. failure when parsing a malformed hidden service descriptor. Fixes
  3351. bug 15601; bugfix on Found by "DonnchaC".
  3352. o Minor features (DoS-resistance, hidden service):
  3353. - Introduction points no longer allow multiple INTRODUCE1 cells to
  3354. arrive on the same circuit. This should make it more expensive for
  3355. attackers to overwhelm hidden services with introductions.
  3356. Resolves ticket 15515.
  3357. Changes in version - 2015-04-06
  3358. Tor backports two fixes from for security issues that
  3359. could be used by an attacker to crash hidden services, or crash clients
  3360. visiting hidden services. Hidden services should upgrade as soon as
  3361. possible; clients should upgrade whenever packages become available.
  3362. This release also backports a simple improvement to make hidden
  3363. services a bit less vulnerable to denial-of-service attacks.
  3364. o Major bugfixes (security, hidden service):
  3365. - Fix an issue that would allow a malicious client to trigger an
  3366. assertion failure and halt a hidden service. Fixes bug 15600;
  3367. bugfix on Reported by "disgleirio".
  3368. - Fix a bug that could cause a client to crash with an assertion
  3369. failure when parsing a malformed hidden service descriptor. Fixes
  3370. bug 15601; bugfix on Found by "DonnchaC".
  3371. o Minor features (DoS-resistance, hidden service):
  3372. - Introduction points no longer allow multiple INTRODUCE1 cells to
  3373. arrive on the same circuit. This should make it more expensive for
  3374. attackers to overwhelm hidden services with introductions.
  3375. Resolves ticket 15515.
  3376. Changes in version - 2015-03-24
  3377. Tor is the first stable release in the 0.2.6 series.
  3378. It adds numerous safety, security, correctness, and performance
  3379. improvements. Client programs can be configured to use more kinds of
  3380. sockets, AutomapHosts works better, the multithreading backend is
  3381. improved, cell transmission is refactored, test coverage is much
  3382. higher, more denial-of-service attacks are handled, guard selection is
  3383. improved to handle long-term guards better, pluggable transports
  3384. should work a bit better, and some annoying hidden service performance
  3385. bugs should be addressed.
  3386. o New compiler and system requirements:
  3387. - Tor 0.2.6.x requires that your compiler support more of the C99
  3388. language standard than before. The 'configure' script now detects
  3389. whether your compiler supports C99 mid-block declarations and
  3390. designated initializers. If it does not, Tor will not compile.
  3391. We may revisit this requirement if it turns out that a significant
  3392. number of people need to build Tor with compilers that don't
  3393. bother implementing a 15-year-old standard. Closes ticket 13233.
  3394. - Tor no longer supports systems without threading support. When we
  3395. began working on Tor, there were several systems that didn't have
  3396. threads, or where the thread support wasn't able to run the
  3397. threads of a single process on multiple CPUs. That no longer
  3398. holds: every system where Tor needs to run well now has threading
  3399. support. Resolves ticket 12439.
  3400. o Deprecated versions and removed support:
  3401. - Tor relays older than are no longer allowed to
  3402. advertise themselves on the network. Closes ticket 13555.
  3403. - Tor clients no longer support connecting to hidden services
  3404. running on Tor 0.2.2.x and earlier; the Support022HiddenServices
  3405. option has been removed. (There shouldn't be any hidden services
  3406. running these versions on the network.) Closes ticket 7803.
  3407. o Directory authority changes:
  3408. - The directory authority Faravahar has a new IP address. This
  3409. closes ticket 14487.
  3410. - Remove turtles as a directory authority.
  3411. - Add longclaw as a new (v3) directory authority. This implements
  3412. ticket 13296. This keeps the directory authority count at 9.
  3413. o Major features (bridges):
  3414. - Expose the outgoing upstream HTTP/SOCKS proxy to pluggable
  3415. transports if they are configured via the "TOR_PT_PROXY"
  3416. environment variable. Implements proposal 232. Resolves
  3417. ticket 8402.
  3418. o Major features (changed defaults):
  3419. - Prevent relay operators from unintentionally running exits: When a
  3420. relay is configured as an exit node, we now warn the user unless
  3421. the "ExitRelay" option is set to 1. We warn even more loudly if
  3422. the relay is configured with the default exit policy, since this
  3423. can indicate accidental misconfiguration. Setting "ExitRelay 0"
  3424. stops Tor from running as an exit relay. Closes ticket 10067.
  3425. o Major features (client performance, hidden services):
  3426. - Allow clients to use optimistic data when connecting to a hidden
  3427. service, which should remove a round-trip from hidden service
  3428. initialization. See proposal 181 for details. Implements
  3429. ticket 13211.
  3430. o Major features (directory system):
  3431. - Upon receiving an unparseable directory object, if its digest
  3432. matches what we expected, then don't try to download it again.
  3433. Previously, when we got a descriptor we didn't like, we would keep
  3434. trying to download it over and over. Closes ticket 11243.
  3435. - When downloading server- or microdescriptors from a directory
  3436. server, we no longer launch multiple simultaneous requests to the
  3437. same server. This reduces load on the directory servers,
  3438. especially when directory guards are in use. Closes ticket 9969.
  3439. - When downloading server- or microdescriptors over a tunneled
  3440. connection, do not limit the length of our requests to what the
  3441. Squid proxy is willing to handle. Part of ticket 9969.
  3442. - Authorities can now vote on the correct digests and latest
  3443. versions for different software packages. This allows packages
  3444. that include Tor to use the Tor authority system as a way to get
  3445. notified of updates and their correct digests. Implements proposal
  3446. 227. Closes ticket 10395.
  3447. o Major features (guards):
  3448. - Introduce the Guardfraction feature to improves load balancing on
  3449. guard nodes. Specifically, it aims to reduce the traffic gap that
  3450. guard nodes experience when they first get the Guard flag. This is
  3451. a required step if we want to increase the guard lifetime to 9
  3452. months or greater. Closes ticket 9321.
  3453. o Major features (hidden services):
  3454. - Make HS port scanning more difficult by immediately closing the
  3455. circuit when a user attempts to connect to a nonexistent port.
  3456. Closes ticket 13667.
  3457. - Add a HiddenServiceStatistics option that allows Tor relays to
  3458. gather and publish statistics about the overall size and volume of
  3459. hidden service usage. Specifically, when this option is turned on,
  3460. an HSDir will publish an approximate number of hidden services
  3461. that have published descriptors to it the past 24 hours. Also, if
  3462. a relay has acted as a hidden service rendezvous point, it will
  3463. publish the approximate amount of rendezvous cells it has relayed
  3464. the past 24 hours. The statistics themselves are obfuscated so
  3465. that the exact values cannot be derived. For more details see
  3466. proposal 238, "Better hidden service stats from Tor relays". This
  3467. feature is currently disabled by default. Implements feature 13192.
  3468. o Major features (performance):
  3469. - Make the CPU worker implementation more efficient by avoiding the
  3470. kernel and lengthening pipelines. The original implementation used
  3471. sockets to transfer data from the main thread to the workers, and
  3472. didn't allow any thread to be assigned more than a single piece of
  3473. work at once. The new implementation avoids communications
  3474. overhead by making requests in shared memory, avoiding kernel IO
  3475. where possible, and keeping more requests in flight at once.
  3476. Implements ticket 9682.
  3477. o Major features (relay):
  3478. - Raise the minimum acceptable configured bandwidth rate for bridges
  3479. to 50 KiB/sec and for relays to 75 KiB/sec. (The old values were
  3480. 20 KiB/sec.) Closes ticket 13822.
  3481. - Complete revision of the code that relays use to decide which cell
  3482. to send next. Formerly, we selected the best circuit to write on
  3483. each channel, but we didn't select among channels in any
  3484. sophisticated way. Now, we choose the best circuits globally from
  3485. among those whose channels are ready to deliver traffic.
  3486. This patch implements a new inter-cmux comparison API, a global
  3487. high/low watermark mechanism and a global scheduler loop for
  3488. transmission prioritization across all channels as well as among
  3489. circuits on one channel. This schedule is currently tuned to
  3490. (tolerantly) avoid making changes in network performance, but it
  3491. should form the basis for major circuit performance increases in
  3492. the future. Code by Andrea; tuning by Rob Jansen; implements
  3493. ticket 9262.
  3494. o Major features (sample torrc):
  3495. - Add a new, infrequently-changed "torrc.minimal". This file is
  3496. similar to torrc.sample, but it will change as infrequently as
  3497. possible, for the benefit of users whose systems prompt them for
  3498. intervention whenever a default configuration file is changed.
  3499. Making this change allows us to update torrc.sample to be a more
  3500. generally useful "sample torrc".
  3501. o Major features (security, unix domain sockets):
  3502. - Allow SocksPort to be an AF_UNIX Unix Domain Socket. Now high risk
  3503. applications can reach Tor without having to create AF_INET or
  3504. AF_INET6 sockets, meaning they can completely disable their
  3505. ability to make non-Tor network connections. To create a socket of
  3506. this type, use "SocksPort unix:/path/to/socket". Implements
  3507. ticket 12585.
  3508. - Support mapping hidden service virtual ports to AF_UNIX sockets.
  3509. The syntax is "HiddenServicePort 80 unix:/path/to/socket".
  3510. Implements ticket 11485.
  3511. o Major bugfixes (client, automap):
  3512. - Repair automapping with IPv6 addresses. This automapping should
  3513. have worked previously, but one piece of debugging code that we
  3514. inserted to detect a regression actually caused the regression to
  3515. manifest itself again. Fixes bug 13811 and bug 12831; bugfix on
  3516. Diagnosed and fixed by Francisco Blas
  3517. Izquierdo Riera.
  3518. o Major bugfixes (crash, OSX, security):
  3519. - Fix a remote denial-of-service opportunity caused by a bug in
  3520. OSX's _strlcat_chk() function. Fixes bug 15205; bug first appeared
  3521. in OSX 10.9.
  3522. o Major bugfixes (directory authorities):
  3523. - Do not assign the HSDir flag to relays if they are not Valid, or
  3524. currently hibernating. Fixes 12573; bugfix on
  3525. o Major bugfixes (directory bandwidth performance):
  3526. - Don't flush the zlib buffer aggressively when compressing
  3527. directory information for clients. This should save about 7% of
  3528. the bandwidth currently used for compressed descriptors and
  3529. microdescriptors. Fixes bug 11787; bugfix on
  3530. o Major bugfixes (exit node stability):
  3531. - Fix an assertion failure that could occur under high DNS load.
  3532. Fixes bug 14129; bugfix on Tor 0.0.7rc1. Found by "jowr";
  3533. diagnosed and fixed by "cypherpunks".
  3534. o Major bugfixes (FreeBSD IPFW transparent proxy):
  3535. - Fix address detection with FreeBSD transparent proxies, when
  3536. "TransProxyType ipfw" is in use. Fixes bug 15064; bugfix
  3537. on
  3538. o Major bugfixes (hidden services):
  3539. - When closing an introduction circuit that was opened in parallel
  3540. with others, don't mark the introduction point as unreachable.
  3541. Previously, the first successful connection to an introduction
  3542. point would make the other introduction points get marked as
  3543. having timed out. Fixes bug 13698; bugfix on 0.0.6rc2.
  3544. o Major bugfixes (Linux seccomp2 sandbox):
  3545. - Upon receiving sighup with the seccomp2 sandbox enabled, do not
  3546. crash during attempts to call wait4. Fixes bug 15088; bugfix on
  3547. Patch from "sanic".
  3548. o Major bugfixes (mixed relay-client operation):
  3549. - When running as a relay and client at the same time (not
  3550. recommended), if we decide not to use a new guard because we want
  3551. to retry older guards, only close the locally-originating circuits
  3552. passing through that guard. Previously we would close all the
  3553. circuits through that guard. Fixes bug 9819; bugfix on
  3554. Reported by "skruffy".
  3555. o Major bugfixes (pluggable transports):
  3556. - Initialize the extended OR Port authentication cookie before
  3557. launching pluggable transports. This prevents a race condition
  3558. that occured when server-side pluggable transports would cache the
  3559. authentication cookie before it has been (re)generated. Fixes bug
  3560. 15240; bugfix on
  3561. o Major bugfixes (relay, stability, possible security):
  3562. - Fix a bug that could lead to a relay crashing with an assertion
  3563. failure if a buffer of exactly the wrong layout is passed to
  3564. buf_pullup() at exactly the wrong time. Fixes bug 15083; bugfix on
  3565. Patch from "cypherpunks".
  3566. - Do not assert if the 'data' pointer on a buffer is advanced to the
  3567. very end of the buffer; log a BUG message instead. Only assert if
  3568. it is past that point. Fixes bug 15083; bugfix on
  3569. o Minor features (build):
  3570. - New --disable-system-torrc compile-time option to prevent Tor from
  3571. looking for the system-wide torrc or torrc-defaults files.
  3572. Resolves ticket 13037.
  3573. o Minor features (client):
  3574. - Clients are now willing to send optimistic data (before they
  3575. receive a 'connected' cell) to relays of any version. (Relays
  3576. without support for optimistic data are no longer supported on the
  3577. Tor network.) Resolves ticket 13153.
  3578. o Minor features (client):
  3579. - Validate hostnames in SOCKS5 requests more strictly. If SafeSocks
  3580. is enabled, reject requests with IP addresses as hostnames.
  3581. Resolves ticket 13315.
  3582. o Minor features (controller):
  3583. - Add a "SIGNAL HEARTBEAT" controller command that tells Tor to
  3584. write an unscheduled heartbeat message to the log. Implements
  3585. feature 9503.
  3586. - Include SOCKS_USERNAME and SOCKS_PASSWORD values in controller
  3587. events so controllers can observe circuit isolation inputs. Closes
  3588. ticket 8405.
  3589. - ControlPort now supports the unix:/path/to/socket syntax as an
  3590. alternative to the ControlSocket option, for consistency with
  3591. SocksPort and HiddenServicePort. Closes ticket 14451.
  3592. - New "GETINFO bw-event-cache" to get information about recent
  3593. bandwidth events. Closes ticket 14128. Useful for controllers to
  3594. get recent bandwidth history after the fix for ticket 13988.
  3595. - Messages about problems in the bootstrap process now include
  3596. information about the server we were trying to connect to when we
  3597. noticed the problem. Closes ticket 15006.
  3598. o Minor features (Denial of service resistance):
  3599. - Count the total number of bytes used storing hidden service
  3600. descriptors against the value of MaxMemInQueues. If we're low on
  3601. memory, and more than 20% of our memory is used holding hidden
  3602. service descriptors, free them until no more than 10% of our
  3603. memory holds hidden service descriptors. Free the least recently
  3604. fetched descriptors first. Resolves ticket 13806.
  3605. - When we have recently been under memory pressure (over 3/4 of
  3606. MaxMemInQueues is allocated), then allocate smaller zlib objects
  3607. for small requests. Closes ticket 11791.
  3608. o Minor features (directory authorities):
  3609. - Don't list relays with a bandwidth estimate of 0 in the consensus.
  3610. Implements a feature proposed during discussion of bug 13000.
  3611. - In tor-gencert, report an error if the user provides the same
  3612. argument more than once.
  3613. - If a directory authority can't find a best consensus method in the
  3614. votes that it holds, it now falls back to its favorite consensus
  3615. method. Previously, it fell back to method 1. Neither of these is
  3616. likely to get enough signatures, but "fall back to favorite"
  3617. doesn't require us to maintain support an obsolete consensus
  3618. method. Implements part of proposal 215.
  3619. o Minor features (geoip):
  3620. - Update geoip to the March 3 2015 Maxmind GeoLite2 Country database.
  3621. - Update geoip6 to the March 3 2015 Maxmind GeoLite2
  3622. Country database.
  3623. o Minor features (guard nodes):
  3624. - Reduce the time delay before saving guard status to disk from 10
  3625. minutes to 30 seconds (or from one hour to 10 minutes if
  3626. AvoidDiskWrites is set). Closes ticket 12485.
  3627. o Minor features (heartbeat):
  3628. - On relays, report how many connections we negotiated using each
  3629. version of the Tor link protocols. This information will let us
  3630. know if removing support for very old versions of the Tor
  3631. protocols is harming the network. Closes ticket 15212.
  3632. o Minor features (hidden service):
  3633. - Make Sybil attacks against hidden services harder by changing the
  3634. minimum time required to get the HSDir flag from 25 hours up to 96
  3635. hours. Addresses ticket 14149.
  3636. - New option "HiddenServiceAllowUnknownPorts" to allow hidden
  3637. services to disable the anti-scanning feature introduced in
  3638. With this option not set, a connection to an
  3639. unlisted port closes the circuit. With this option set, only a
  3640. RELAY_DONE cell is sent. Closes ticket 14084.
  3641. - When re-enabling the network, don't try to build introduction
  3642. circuits until we have successfully built a circuit. This makes
  3643. hidden services come up faster when the network is re-enabled.
  3644. Patch from "akwizgran". Closes ticket 13447.
  3645. - When we fail to retrieve a hidden service descriptor, send the
  3646. controller an "HS_DESC FAILED" controller event. Implements
  3647. feature 13212.
  3648. - New HiddenServiceDirGroupReadable option to cause hidden service
  3649. directories and hostname files to be created group-readable. Patch
  3650. from "anon", David Stainton, and "meejah". Closes ticket 11291.
  3651. o Minor features (interface):
  3652. - Implement "-f -" command-line option to read torrc configuration
  3653. from standard input, if you don't want to store the torrc file in
  3654. the file system. Implements feature 13865.
  3655. o Minor features (logging):
  3656. - Add a count of unique clients to the bridge heartbeat message.
  3657. Resolves ticket 6852.
  3658. - Suppress "router info incompatible with extra info" message when
  3659. reading extrainfo documents from cache. (This message got loud
  3660. around when we closed bug 9812 in Closes
  3661. ticket 13762.
  3662. - Elevate hidden service authorized-client message from DEBUG to
  3663. INFO. Closes ticket 14015.
  3664. - On Unix-like systems, you can now use named pipes as the target of
  3665. the Log option, and other options that try to append to files.
  3666. Closes ticket 12061. Patch from "carlo von lynX".
  3667. - When opening a log file at startup, send it every log message that
  3668. we generated between startup and opening it. Previously, log
  3669. messages that were generated before opening the log file were only
  3670. logged to stdout. Closes ticket 6938.
  3671. - Add a TruncateLogFile option to overwrite logs instead of
  3672. appending to them. Closes ticket 5583.
  3673. - Quiet some log messages in the heartbeat and at startup. Closes
  3674. ticket 14950.
  3675. o Minor features (portability, Solaris):
  3676. - Threads are no longer disabled by default on Solaris; we believe
  3677. that the versions of Solaris with broken threading support are all
  3678. obsolete by now. Resolves ticket 9495.
  3679. o Minor features (relay):
  3680. - Re-check our address after we detect a changed IP address from
  3681. getsockname(). This ensures that the controller command "GETINFO
  3682. address" will report the correct value. Resolves ticket 11582.
  3683. Patch from "ra".
  3684. - A new AccountingRule option lets Relays set whether they'd like
  3685. AccountingMax to be applied separately to inbound and outbound
  3686. traffic, or applied to the sum of inbound and outbound traffic.
  3687. Resolves ticket 961. Patch by "chobe".
  3688. - When identity keypair is generated for first time, log a
  3689. congratulatory message that links to the new relay lifecycle
  3690. document. Implements feature 10427.
  3691. o Minor features (security, memory wiping):
  3692. - Ensure we securely wipe keys from memory after
  3693. crypto_digest_get_digest and init_curve25519_keypair_from_file
  3694. have finished using them. Resolves ticket 13477.
  3695. o Minor features (security, out-of-memory handling):
  3696. - When handling an out-of-memory condition, allocate less memory for
  3697. temporary data structures. Fixes issue 10115.
  3698. - When handling an out-of-memory condition, consider more types of
  3699. buffers, including those on directory connections, and zlib
  3700. buffers. Resolves ticket 11792.
  3701. o Minor features (stability):
  3702. - Add assertions in our hash-table iteration code to check for
  3703. corrupted values that could cause infinite loops. Closes
  3704. ticket 11737.
  3705. o Minor features (systemd):
  3706. - Various improvements and modernizations in systemd hardening
  3707. support. Closes ticket 13805. Patch from Craig Andrews.
  3708. - Where supported, when running with systemd, report successful
  3709. startup to systemd. Part of ticket 11016. Patch by Michael Scherer.
  3710. - When running with systemd, support systemd watchdog messages. Part
  3711. of ticket 11016. Patch by Michael Scherer.
  3712. o Minor features (testing networks):
  3713. - Add the TestingDirAuthVoteExit option, which lists nodes to assign
  3714. the "Exit" flag regardless of their uptime, bandwidth, or exit
  3715. policy. TestingTorNetwork must be set for this option to have any
  3716. effect. Previously, authorities would take up to 35 minutes to
  3717. give nodes the Exit flag in a test network. Partially implements
  3718. ticket 13161.
  3719. - Drop the minimum RendPostPeriod on a testing network to 5 seconds,
  3720. and the default on a testing network to 2 minutes. Drop the
  3721. MIN_REND_INITIAL_POST_DELAY on a testing network to 5 seconds, but
  3722. keep the default on a testing network at 30 seconds. This reduces
  3723. HS bootstrap time to around 25 seconds. Also, change the default
  3724. time in to match. Closes ticket 13401. Patch
  3725. by "teor".
  3726. - Create TestingDirAuthVoteHSDir to correspond to
  3727. TestingDirAuthVoteExit/Guard. Ensures that authorities vote the
  3728. HSDir flag for the listed relays regardless of uptime or ORPort
  3729. connectivity. Respects the value of VoteOnHidServDirectoriesV2.
  3730. Partial implementation for ticket 14067. Patch by "teor".
  3731. o Minor features (tor2web mode):
  3732. - Introduce the config option Tor2webRendezvousPoints, which allows
  3733. clients in Tor2webMode to select a specific Rendezvous Point to be
  3734. used in HS circuits. This might allow better performance for
  3735. Tor2Web nodes. Implements ticket 12844.
  3736. o Minor features (transparent proxy):
  3737. - Update the transparent proxy option checks to allow for both ipfw
  3738. and pf on OS X. Closes ticket 14002.
  3739. - Use the correct option when using IPv6 with transparent proxy
  3740. support on Linux. Resolves 13808. Patch by Francisco Blas
  3741. Izquierdo Riera.
  3742. o Minor features (validation):
  3743. - Check all date/time values passed to tor_timegm and
  3744. parse_rfc1123_time for validity, taking leap years into account.
  3745. Improves HTTP header validation. Implemented with bug 13476.
  3746. - In correct_tm(), limit the range of values returned by system
  3747. localtime(_r) and gmtime(_r) to be between the years 1 and 8099.
  3748. This means we don't have to deal with negative or too large dates,
  3749. even if a clock is wrong. Otherwise we might fail to read a file
  3750. written by us which includes such a date. Fixes bug 13476.
  3751. - Stop allowing invalid address patterns like "*/24" that contain
  3752. both a wildcard address and a bit prefix length. This affects all
  3753. our address-range parsing code. Fixes bug 7484; bugfix
  3754. on 0.0.2pre14.
  3755. o Minor bugfixes (bridge clients):
  3756. - When configured to use a bridge without an identity digest (not
  3757. recommended), avoid launching an extra channel to it when
  3758. bootstrapping. Fixes bug 7733; bugfix on
  3759. o Minor bugfixes (bridges):
  3760. - When DisableNetwork is set, do not launch pluggable transport
  3761. plugins, and if any are running, terminate them. Fixes bug 13213;
  3762. bugfix on
  3763. o Minor bugfixes (C correctness):
  3764. - Fix several instances of possible integer overflow/underflow/NaN.
  3765. Fixes bug 13104; bugfix on and later. Patches
  3766. from "teor".
  3767. - In circuit_build_times_calculate_timeout() in circuitstats.c,
  3768. avoid dividing by zero in the pareto calculations. This traps
  3769. under clang's "undefined-trap" sanitizer. Fixes bug 13290; bugfix
  3770. on
  3771. - Fix an integer overflow in format_time_interval(). Fixes bug
  3772. 13393; bugfix on
  3773. - Set the correct day of year value when the system's localtime(_r)
  3774. or gmtime(_r) functions fail to set struct tm. Not externally
  3775. visible. Fixes bug 13476; bugfix on 0.0.2pre14.
  3776. - Avoid unlikely signed integer overflow in tor_timegm on systems
  3777. with 32-bit time_t. Fixes bug 13476; bugfix on 0.0.2pre14.
  3778. o Minor bugfixes (certificate handling):
  3779. - If an authority operator accidentally makes a signing certificate
  3780. with a future publication time, do not discard its real signing
  3781. certificates. Fixes bug 11457; bugfix on
  3782. - Remove any old authority certificates that have been superseded
  3783. for at least two days. Previously, we would keep superseded
  3784. certificates until they expired, if they were published close in
  3785. time to the certificate that superseded them. Fixes bug 11454;
  3786. bugfix on
  3787. o Minor bugfixes (client):
  3788. - Fix smartlist_choose_node_by_bandwidth() so that relays with the
  3789. BadExit flag are not considered worthy candidates. Fixes bug
  3790. 13066; bugfix on
  3791. - Use the consensus schedule for downloading consensuses, and not
  3792. the generic schedule. Fixes bug 11679; bugfix on
  3793. - Handle unsupported or malformed SOCKS5 requests properly by
  3794. responding with the appropriate error message before closing the
  3795. connection. Fixes bugs 12971 and 13314; bugfix on 0.0.2pre13.
  3796. o Minor bugfixes (client, automapping):
  3797. - Avoid crashing on torrc lines for VirtualAddrNetworkIPv[4|6] when
  3798. no value follows the option. Fixes bug 14142; bugfix on
  3799. Patch by "teor".
  3800. - Fix a memory leak when using AutomapHostsOnResolve. Fixes bug
  3801. 14195; bugfix on
  3802. - Prevent changes to other options from removing the wildcard value
  3803. "." from "AutomapHostsSuffixes". Fixes bug 12509; bugfix
  3804. on
  3805. - Allow MapAddress and AutomapHostsOnResolve to work together when
  3806. an address is mapped into another address type (like .onion) that
  3807. must be automapped at resolve time. Fixes bug 7555; bugfix
  3808. on
  3809. o Minor bugfixes (client, bridges):
  3810. - When we are using bridges and we had a network connectivity
  3811. problem, only retry connecting to our currently configured
  3812. bridges, not all bridges we know about and remember using. Fixes
  3813. bug 14216; bugfix on
  3814. o Minor bugfixes (client, DNS):
  3815. - Report the correct cached DNS expiration times on SOCKS port or in
  3816. DNS replies. Previously, we would report everything as "never
  3817. expires." Fixes bug 14193; bugfix on
  3818. - Avoid a small memory leak when we find a cached answer for a
  3819. reverse DNS lookup in a client-side DNS cache. (Remember, client-
  3820. side DNS caching is off by default, and is not recommended.) Fixes
  3821. bug 14259; bugfix on
  3822. o Minor bugfixes (client, IPv6):
  3823. - Reject socks requests to literal IPv6 addresses when IPv6Traffic
  3824. flag is not set; and not because the NoIPv4Traffic flag was set.
  3825. Previously we'd looked at the NoIPv4Traffic flag for both types of
  3826. literal addresses. Fixes bug 14280; bugfix on
  3827. o Minor bugfixes (client, microdescriptors):
  3828. - Use a full 256 bits of the SHA256 digest of a microdescriptor when
  3829. computing which microdescriptors to download. This keeps us from
  3830. erroneous download behavior if two microdescriptor digests ever
  3831. have the same first 160 bits. Fixes part of bug 13399; bugfix
  3832. on
  3833. - Reset a router's status if its microdescriptor digest changes,
  3834. even if the first 160 bits remain the same. Fixes part of bug
  3835. 13399; bugfix on
  3836. o Minor bugfixes (client, torrc):
  3837. - Stop modifying the value of our DirReqStatistics torrc option just
  3838. because we're not a bridge or relay. This bug was causing Tor
  3839. Browser users to write "DirReqStatistics 0" in their torrc files
  3840. as if they had chosen to change the config. Fixes bug 4244; bugfix
  3841. on
  3842. - When GeoIPExcludeUnknown is enabled, do not incorrectly decide
  3843. that our options have changed every time we SIGHUP. Fixes bug
  3844. 9801; bugfix on Patch from "qwerty1".
  3845. o Minor bugfixes (compilation):
  3846. - Fix a compilation warning on s390. Fixes bug 14988; bugfix
  3847. on
  3848. - Silence clang warnings under --enable-expensive-hardening,
  3849. including implicit truncation of 64 bit values to 32 bit, const
  3850. char assignment to self, tautological compare, and additional
  3851. parentheses around equality tests. Fixes bug 13577; bugfix
  3852. on
  3853. - Fix a clang warning about checking whether an address in the
  3854. middle of a structure is NULL. Fixes bug 14001; bugfix
  3855. on
  3856. - The address of an array in the middle of a structure will always
  3857. be non-NULL. clang recognises this and complains. Disable the
  3858. tautologous and redundant check to silence this warning. Fixes bug
  3859. 14001; bugfix on
  3860. - Compile correctly with (unreleased) OpenSSL 1.1.0 headers.
  3861. Addresses ticket 14188.
  3862. - Build without warnings with the stock OpenSSL srtp.h header, which
  3863. has a duplicate declaration of SSL_get_selected_srtp_profile().
  3864. Fixes bug 14220; this is OpenSSL's bug, not ours.
  3865. - Do not compile any code related to Tor2Web mode when Tor2Web mode
  3866. is not enabled at compile time. Previously, this code was included
  3867. in a disabled state. See discussion on ticket 12844.
  3868. - Allow our configure script to build correctly with autoconf 2.62
  3869. again. Fixes bug 12693; bugfix on
  3870. - Improve the error message from ./configure to make it clear that
  3871. when asciidoc has not been found, the user will have to either add
  3872. --disable-asciidoc argument or install asciidoc. Resolves
  3873. ticket 13228.
  3874. o Minor bugfixes (controller):
  3875. - Report "down" in response to the "GETINFO entry-guards" command
  3876. when relays are down with an unreachable_since value. Previously,
  3877. we would report "up". Fixes bug 14184; bugfix on
  3878. - Avoid crashing on a malformed EXTENDCIRCUIT command. Fixes bug
  3879. 14116; bugfix on
  3880. o Minor bugfixes (controller):
  3881. - Return an error when the second or later arguments of the
  3882. "setevents" controller command are invalid events. Previously we
  3883. would return success while silently skipping invalid events. Fixes
  3884. bug 13205; bugfix on Reported by "fpxnns".
  3885. o Minor bugfixes (directory authority):
  3886. - Allow directory authorities to fetch more data from one another if
  3887. they find themselves missing lots of votes. Previously, they had
  3888. been bumping against the 10 MB queued data limit. Fixes bug 14261;
  3889. bugfix on
  3890. - Do not attempt to download extrainfo documents which we will be
  3891. unable to validate with a matching server descriptor. Fixes bug
  3892. 13762; bugfix on
  3893. - Fix a bug that was truncating AUTHDIR_NEWDESC events sent to the
  3894. control port. Fixes bug 14953; bugfix on
  3895. - Enlarge the buffer to read bwauth generated files to avoid an
  3896. issue when parsing the file in dirserv_read_measured_bandwidths().
  3897. Fixes bug 14125; bugfix on
  3898. - When running as a v3 directory authority, advertise that you serve
  3899. extra-info documents so that clients who want them can find them
  3900. from you too. Fixes part of bug 11683; bugfix on
  3901. o Minor bugfixes (directory system):
  3902. - Always believe that v3 directory authorities serve extra-info
  3903. documents, whether they advertise "caches-extra-info" or not.
  3904. Fixes part of bug 11683; bugfix on
  3905. - Check the BRIDGE_DIRINFO flag bitwise rather than using equality.
  3906. Previously, directories offering BRIDGE_DIRINFO and some other
  3907. flag (i.e. microdescriptors or extrainfo) would be ignored when
  3908. looking for bridges. Partially fixes bug 13163; bugfix
  3909. on
  3910. o Minor bugfixes (file handling):
  3911. - Stop failing when key files are zero-length. Instead, generate new
  3912. keys, and overwrite the empty key files. Fixes bug 13111; bugfix
  3913. on all versions of Tor. Patch by "teor".
  3914. - Stop generating a fresh .old RSA onion key file when the .old file
  3915. is missing. Fixes part of 13111; bugfix on 0.0.6rc1.
  3916. - Avoid overwriting .old key files with empty key files.
  3917. - Skip loading zero-length extrainfo store, router store, stats,
  3918. state, and key files.
  3919. - Avoid crashing when trying to reload a torrc specified as a
  3920. relative path with RunAsDaemon turned on. Fixes bug 13397; bugfix
  3921. on
  3922. o Minor bugfixes (hidden services):
  3923. - Close the introduction circuit when we have no more usable intro
  3924. points, instead of waiting for it to time out. This also ensures
  3925. that no follow-up HS descriptor fetch is triggered when the
  3926. circuit eventually times out. Fixes bug 14224; bugfix on 0.0.6.
  3927. - When fetching a hidden service descriptor for a down service that
  3928. was recently up, do not keep refetching until we try the same
  3929. replica twice in a row. Fixes bug 14219; bugfix on
  3930. - Correctly send a controller event when we find that a rendezvous
  3931. circuit has finished. Fixes bug 13936; bugfix on
  3932. - Pre-check directory permissions for new hidden-services to avoid
  3933. at least one case of "Bug: Acting on config options left us in a
  3934. broken state. Dying." Fixes bug 13942; bugfix on 0.0.6pre1.
  3935. - When fetching hidden service descriptors, we now check not only
  3936. for whether we got the hidden service we had in mind, but also
  3937. whether we got the particular descriptors we wanted. This prevents
  3938. a class of inefficient but annoying DoS attacks by hidden service
  3939. directories. Fixes bug 13214; bugfix on Reported
  3940. by "special".
  3941. o Minor bugfixes (Linux seccomp2 sandbox):
  3942. - Make transparent proxy support work along with the seccomp2
  3943. sandbox. Fixes part of bug 13808; bugfix on Patch
  3944. by Francisco Blas Izquierdo Riera.
  3945. - Fix a memory leak in tor-resolve when running with the sandbox
  3946. enabled. Fixes bug 14050; bugfix on
  3947. - Allow glibc fatal errors to be sent to stderr before Tor exits.
  3948. Previously, glibc would try to write them to /dev/tty, and the
  3949. sandbox would trap the call and make Tor exit prematurely. Fixes
  3950. bug 14759; bugfix on
  3951. o Minor bugfixes (logging):
  3952. - Avoid crashing when there are more log domains than entries in
  3953. domain_list. Bugfix on
  3954. - Downgrade warnings about RSA signature failures to info log level.
  3955. Emit a warning when an extra info document is found incompatible
  3956. with a corresponding router descriptor. Fixes bug 9812; bugfix
  3957. on 0.0.6rc3.
  3958. - Make connection_ap_handshake_attach_circuit() log the circuit ID
  3959. correctly. Fixes bug 13701; bugfix on 0.0.6.
  3960. o Minor bugfixes (networking):
  3961. - Check for orconns and use connection_or_close_for_error() rather
  3962. than connection_mark_for_close() directly in the getsockopt()
  3963. failure case of connection_handle_write_impl(). Fixes bug 11302;
  3964. bugfix on
  3965. o Minor bugfixes (parsing):
  3966. - Stop accepting milliseconds (or other junk) at the end of
  3967. descriptor publication times. Fixes bug 9286; bugfix on 0.0.2pre25.
  3968. - Support two-number and three-number version numbers correctly, in
  3969. case we change the Tor versioning system in the future. Fixes bug
  3970. 13661; bugfix on 0.0.8pre1.
  3971. o Minor bugfixes (portability):
  3972. - Fix the ioctl()-based network interface lookup code so that it
  3973. will work on systems that have variable-length struct ifreq, for
  3974. example Mac OS X.
  3975. - Use the correct datatype in the SipHash-2-4 function to prevent
  3976. compilers from assuming any sort of alignment. Fixes bug 15436;
  3977. bugfix on
  3978. o Minor bugfixes (preventative security, C safety):
  3979. - When reading a hexadecimal, base-32, or base-64 encoded value from
  3980. a string, always overwrite the whole output buffer. This prevents
  3981. some bugs where we would look at (but fortunately, not reveal)
  3982. uninitialized memory on the stack. Fixes bug 14013; bugfix on all
  3983. versions of Tor.
  3984. - Clear all memory targetted by tor_addr_{to,from}_sockaddr(), not
  3985. just the part that's used. This makes it harder for data leak bugs
  3986. to occur in the event of other programming failures. Resolves
  3987. ticket 14041.
  3988. o Minor bugfixes (relay):
  3989. - When generating our family list, remove spaces from around the
  3990. entries. Fixes bug 12728; bugfix on
  3991. - If our previous bandwidth estimate was 0 bytes, allow publishing a
  3992. new relay descriptor immediately. Fixes bug 13000; bugfix
  3993. on
  3994. o Minor bugfixes (shutdown):
  3995. - When shutting down, always call event_del() on lingering read or
  3996. write events before freeing them. Otherwise, we risk double-frees
  3997. or read-after-frees in event_base_free(). Fixes bug 12985; bugfix
  3998. on
  3999. o Minor bugfixes (small memory leaks):
  4000. - Avoid leaking memory when using IPv6 virtual address mappings.
  4001. Fixes bug 14123; bugfix on Patch by Tom van
  4002. der Woerdt.
  4003. o Minor bugfixes (statistics):
  4004. - Increase period over which bandwidth observations are aggregated
  4005. from 15 minutes to 4 hours. Fixes bug 13988; bugfix on 0.0.8pre1.
  4006. o Minor bugfixes (systemd support):
  4007. - Run correctly under systemd with the RunAsDaemon option set. Fixes
  4008. part of bug 14141; bugfix on Patch from Tomasz Torcz.
  4009. - Inform the systemd supervisor about more changes in the Tor
  4010. process status. Implements part of ticket 14141. Patch from
  4011. Tomasz Torcz.
  4012. o Minor bugfixes (testing networks):
  4013. - Fix TestingDirAuthVoteGuard to properly give out Guard flags in a
  4014. testing network. Fixes bug 13064; bugfix on
  4015. - Stop using the default authorities in networks which provide both
  4016. AlternateDirAuthority and AlternateBridgeAuthority. Partially
  4017. fixes bug 13163; bugfix on
  4018. o Minor bugfixes (testing networks, fast startup):
  4019. - Allow Tor to build circuits using a consensus with no exits. If
  4020. the consensus has no exits (typical of a bootstrapping test
  4021. network), allow Tor to build circuits once enough descriptors have
  4022. been downloaded. This assists in bootstrapping a testing Tor
  4023. network. Fixes bug 13718; bugfix on Patch
  4024. by "teor".
  4025. - When V3AuthVotingInterval is low, give a lower If-Modified-Since
  4026. header to directory servers. This allows us to obtain consensuses
  4027. promptly when the consensus interval is very short. This assists
  4028. in bootstrapping a testing Tor network. Fixes parts of bugs 13718
  4029. and 13963; bugfix on Patch by "teor".
  4030. - Stop assuming that private addresses are local when checking
  4031. reachability in a TestingTorNetwork. Instead, when testing, assume
  4032. all OR connections are remote. (This is necessary due to many test
  4033. scenarios running all relays on localhost.) This assists in
  4034. bootstrapping a testing Tor network. Fixes bug 13924; bugfix on
  4035. Patch by "teor".
  4036. - Avoid building exit circuits from a consensus with no exits. Now
  4037. thanks to our fix for 13718, we accept a no-exit network as not
  4038. wholly lost, but we need to remember not to try to build exit
  4039. circuits on it. Closes ticket 13814; patch by "teor".
  4040. - Stop requiring exits to have non-zero bandwithcapacity in a
  4041. TestingTorNetwork. Instead, when TestingMinExitFlagThreshold is 0,
  4042. ignore exit bandwidthcapacity. This assists in bootstrapping a
  4043. testing Tor network. Fixes parts of bugs 13718 and 13839; bugfix
  4044. on Patch by "teor".
  4045. - Add "internal" to some bootstrap statuses when no exits are
  4046. available. If the consensus does not contain Exits, Tor will only
  4047. build internal circuits. In this case, relevant statuses will
  4048. contain the word "internal" as indicated in the Tor control-
  4049. spec.txt. When bootstrap completes, Tor will be ready to build
  4050. internal circuits. If a future consensus contains Exits, exit
  4051. circuits may become available. Fixes part of bug 13718; bugfix on
  4052. Patch by "teor".
  4053. - Decrease minimum consensus interval to 10 seconds when
  4054. TestingTorNetwork is set, or 5 seconds for the first consensus.
  4055. Fix assumptions throughout the code that assume larger intervals.
  4056. Fixes bugs 13718 and 13823; bugfix on Patch
  4057. by "teor".
  4058. - Avoid excluding guards from path building in minimal test
  4059. networks, when we're in a test network and excluding guards would
  4060. exclude all relays. This typically occurs in incredibly small tor
  4061. networks, and those using "TestingAuthVoteGuard *". Fixes part of
  4062. bug 13718; bugfix on Patch by "teor".
  4063. o Minor bugfixes (testing):
  4064. - Avoid a side-effect in a tor_assert() in the unit tests. Fixes bug
  4065. 15188; bugfix on Patch from Tom van der Woerdt.
  4066. - Stop spawn test failures due to a race condition between the
  4067. SIGCHLD handler updating the process status, and the test reading
  4068. it. Fixes bug 13291; bugfix on
  4069. - Avoid passing an extra backslash when creating a temporary
  4070. directory for running the unit tests on Windows. Fixes bug 12392;
  4071. bugfix on Patch from Gisle Vanem.
  4072. o Minor bugfixes (TLS):
  4073. - Check more thoroughly throughout the TLS code for possible
  4074. unlogged TLS errors. Possible diagnostic or fix for bug 13319.
  4075. o Minor bugfixes (transparent proxy):
  4076. - Use getsockname, not getsockopt, to retrieve the address for a
  4077. TPROXY-redirected connection. Fixes bug 13796; bugfix
  4078. on
  4079. o Minor bugfixes (windows):
  4080. - Remove code to special-case handling of NTE_BAD_KEYSET when
  4081. acquiring windows CryptoAPI context. This error can't actually
  4082. occur for the parameters we're providing. Fixes bug 10816; bugfix
  4083. on 0.0.2pre26.
  4084. o Minor bugfixes (zlib):
  4085. - Avoid truncating a zlib stream when trying to finalize it with an
  4086. empty output buffer. Fixes bug 11824; bugfix on
  4087. o Code simplification and refactoring:
  4088. - Change the entry_is_live() function to take named bitfield
  4089. elements instead of an unnamed list of booleans. Closes
  4090. ticket 12202.
  4091. - Refactor and unit-test entry_is_time_to_retry() in entrynodes.c.
  4092. Resolves ticket 12205.
  4093. - Use calloc and reallocarray functions instead of multiply-
  4094. then-malloc. This makes it less likely for us to fall victim to an
  4095. integer overflow attack when allocating. Resolves ticket 12855.
  4096. - Use the standard macro name SIZE_MAX, instead of our
  4097. own SIZE_T_MAX.
  4098. - Document usage of the NO_DIRINFO and ALL_DIRINFO flags clearly in
  4099. functions which take them as arguments. Replace 0 with NO_DIRINFO
  4100. in a function call for clarity. Seeks to prevent future issues
  4101. like 13163.
  4102. - Avoid 4 null pointer errors under clang static analysis by using
  4103. tor_assert() to prove that the pointers aren't null. Fixes
  4104. bug 13284.
  4105. - Rework the API of policies_parse_exit_policy() to use a bitmask to
  4106. represent parsing options, instead of a confusing mess of
  4107. booleans. Resolves ticket 8197.
  4108. - Introduce a helper function to parse ExitPolicy in
  4109. or_options_t structure.
  4110. - Move fields related to isolating and configuring client ports into
  4111. a shared structure. Previously, they were duplicated across
  4112. port_cfg_t, listener_connection_t, and edge_connection_t. Failure
  4113. to copy them correctly had been the cause of at least one bug in
  4114. the past. Closes ticket 8546.
  4115. - Refactor the get_interface_addresses_raw() doom-function into
  4116. multiple smaller and simpler subfunctions. Cover the resulting
  4117. subfunctions with unit-tests. Fixes a significant portion of
  4118. issue 12376.
  4119. - Remove workaround in dirserv_thinks_router_is_hs_dir() that was
  4120. only for version <= which is now deprecated. Closes
  4121. ticket 14202.
  4122. - Remove a test for a long-defunct broken version-one
  4123. directory server.
  4124. - Refactor main loop to extract the 'loop' part. This makes it
  4125. easier to run Tor under Shadow. Closes ticket 15176.
  4126. - Stop using can_complete_circuits as a global variable; access it
  4127. with a function instead.
  4128. - Avoid using operators directly as macro arguments: this lets us
  4129. apply coccinelle transformations to our codebase more directly.
  4130. Closes ticket 13172.
  4131. - Combine the functions used to parse ClientTransportPlugin and
  4132. ServerTransportPlugin into a single function. Closes ticket 6456.
  4133. - Add inline functions and convenience macros for inspecting channel
  4134. state. Refactor the code to use convenience macros instead of
  4135. checking channel state directly. Fixes issue 7356.
  4136. - Document all members of was_router_added_t and rename
  4138. confusable with ROUTER_WAS_TOO_OLD. Fixes issue 13644.
  4139. - In connection_exit_begin_conn(), use END_CIRC_REASON_TORPROTOCOL
  4140. constant instead of hardcoded value. Fixes issue 13840.
  4141. - Refactor our generic strmap and digestmap types into a single
  4142. implementation, so that we can add a new digest256map
  4143. type trivially.
  4144. o Documentation:
  4145. - Add a doc/TUNING document with tips for handling large numbers of
  4146. TCP connections when running busy Tor relay. Update the warning
  4147. message to point to this file when running out of sockets
  4148. operating system is allowing to use simultaneously. Resolves
  4149. ticket 9708.
  4150. - Adding section on OpenBSD to our TUNING document. Thanks to mmcc
  4151. for writing the OpenBSD-specific tips. Resolves ticket 13702.
  4152. - Make the tor-resolve documentation match its help string and its
  4153. options. Resolves part of ticket 14325.
  4154. - Log a more useful error message from tor-resolve when failing to
  4155. look up a hidden service address. Resolves part of ticket 14325.
  4156. - Document the bridge-authority-only 'networkstatus-bridges' file.
  4157. Closes ticket 13713; patch from "tom".
  4158. - Fix typo in PredictedPortsRelevanceTime option description in
  4159. manpage. Resolves issue 13707.
  4160. - Stop suggesting that users specify relays by nickname: it isn't a
  4161. good idea. Also, properly cross-reference how to specify relays in
  4162. all parts of manual documenting options that take a list of
  4163. relays. Closes ticket 13381.
  4164. - Clarify the HiddenServiceDir option description in manpage to make
  4165. it clear that relative paths are taken with respect to the current
  4166. working directory. Also clarify that this behavior is not
  4167. guaranteed to remain indefinitely. Fixes issue 13913.
  4168. o Distribution (systemd):
  4169. - systemd unit file: only allow tor to write to /var/lib/tor and
  4170. /var/log/tor. The rest of the filesystem is accessible for reading
  4171. only. Patch by intrigeri; resolves ticket 12751.
  4172. - systemd unit file: ensure that the process and all its children
  4173. can never gain new privileges. Patch by intrigeri; resolves
  4174. ticket 12939.
  4175. - systemd unit file: set up /var/run/tor as writable for the Tor
  4176. service. Patch by intrigeri; resolves ticket 13196.
  4177. o Downgraded warnings:
  4178. - Don't warn when we've attempted to contact a relay using the wrong
  4179. ntor onion key. Closes ticket 9635.
  4180. o Removed code:
  4181. - Remove some lingering dead code that once supported mempools.
  4182. Mempools were disabled by default in 0.2.5, and removed entirely
  4183. in Closes more of ticket 14848; patch
  4184. by "cypherpunks".
  4185. o Removed features (directory authorities):
  4186. - Remove code that prevented authorities from listing Tor relays
  4187. affected by CVE-2011-2769 as guards. These relays are already
  4188. rejected altogether due to the minimum version requirement of
  4189. Closes ticket 13152.
  4190. - The "AuthDirRejectUnlisted" option no longer has any effect, as
  4191. the fingerprints file (approved-routers) has been deprecated.
  4192. - Directory authorities do not support being Naming dirauths anymore.
  4193. The "NamingAuthoritativeDir" config option is now obsolete.
  4194. - Directory authorities do not support giving out the BadDirectory
  4195. flag anymore.
  4196. - Directory authorities no longer advertise or support consensus
  4197. methods 1 through 12 inclusive. These consensus methods were
  4198. obsolete and/or insecure: maintaining the ability to support them
  4199. served no good purpose. Implements part of proposal 215; closes
  4200. ticket 10163.
  4201. o Removed features:
  4202. - To avoid confusion with the "ExitRelay" option, "ExitNode" is no
  4203. longer silently accepted as an alias for "ExitNodes".
  4204. - The --enable-mempool and --enable-buf-freelists options, which
  4205. were originally created to work around bad malloc implementations,
  4206. no longer exist. They were off-by-default in 0.2.5. Closes
  4207. ticket 14848.
  4208. - We no longer remind the user about configuration options that have
  4209. been obsolete since 0.2.3.x or earlier. Patch by Adrien Bak.
  4210. - Remove our old, non-weighted bandwidth-based node selection code.
  4211. Previously, we used it as a fallback when we couldn't perform
  4212. weighted bandwidth-based node selection. But that would only
  4213. happen in the cases where we had no consensus, or when we had a
  4214. consensus generated by buggy or ancient directory authorities. In
  4215. either case, it's better to use the more modern, better maintained
  4216. algorithm, with reasonable defaults for the weights. Closes
  4217. ticket 13126.
  4218. - Remove the --disable-curve25519 configure option. Relays and
  4219. clients now are required to support curve25519 and the
  4220. ntor handshake.
  4221. - The old "StrictEntryNodes" and "StrictExitNodes" options, which
  4222. used to be deprecated synonyms for "StrictNodes", are now marked
  4223. obsolete. Resolves ticket 12226.
  4224. - Clients don't understand the BadDirectory flag in the consensus
  4225. anymore, and ignore it.
  4226. o Removed platform support:
  4227. - We no longer include special code to build on Windows CE; as far
  4228. as we know, nobody has used Tor on Windows CE in a very long time.
  4229. Closes ticket 11446.
  4230. o Testing (
  4231. - Stop using "echo -n", as some shells' built-in echo doesn't
  4232. support "-n". Instead, use "/bin/echo -n". Partially fixes
  4233. bug 13161.
  4234. - Stop an apparent test-network hang when used with make -j2. Fixes
  4235. bug 13331.
  4236. - Add a --delay option to, which configures the
  4237. delay before the chutney network tests for data transmission.
  4238. Partially implements ticket 13161.
  4239. o Testing:
  4240. - Test that tor does not fail when key files are zero-length. Check
  4241. that tor generates new keys, and overwrites the empty key files.
  4242. - Test that tor generates new keys when keys are missing
  4243. (existing behavior).
  4244. - Test that tor does not overwrite key files that already contain
  4245. data (existing behavior). Tests bug 13111. Patch by "teor".
  4246. - New "make test-stem" target to run stem integration tests.
  4247. Requires that the "STEM_SOURCE_DIR" environment variable be set.
  4248. Closes ticket 14107.
  4249. - Make the script work correctly on Windows.
  4250. Patch from Gisle Vanem.
  4251. - Move the slower unit tests into a new "./src/test/test-slow"
  4252. binary that can be run independently of the other tests. Closes
  4253. ticket 13243.
  4254. - New tests for many parts of channel, relay, and circuitmux
  4255. functionality. Code by Andrea; part of 9262.
  4256. - New tests for parse_transport_line(). Part of ticket 6456.
  4257. - In the unit tests, use chgrp() to change the group of the unit
  4258. test temporary directory to the current user, so that the sticky
  4259. bit doesn't interfere with tests that check directory groups.
  4260. Closes 13678.
  4261. - Add unit tests for resolve_my_addr(). Part of ticket 12376; patch
  4262. by 'rl1987'.
  4263. - Refactor the function that chooses guard nodes so that it can more
  4264. easily be tested; write some tests for it.
  4265. - Fix and re-enable the fgets_eagain unit test. Fixes bug 12503;
  4266. bugfix on Patch from "cypherpunks."
  4267. - Create unit tests for format_time_interval(). With bug 13393.
  4268. - Add unit tests for tor_timegm signed overflow, tor_timegm and
  4269. parse_rfc1123_time validity checks, correct_tm year clamping. Unit
  4270. tests (visible) fixes in bug 13476.
  4271. - Add a "coverage-html" make target to generate HTML-visualized
  4272. coverage results when building with --enable-coverage. (Requires
  4273. lcov.) Patch from Kevin Murray.
  4274. - Enable the backtrace handler (where supported) when running the
  4275. unit tests.
  4276. - Revise all unit tests that used the legacy test_* macros to
  4277. instead use the recommended tt_* macros. This patch was generated
  4278. with coccinelle, to avoid manual errors. Closes ticket 13119.
  4279. Changes in version - 2015-03-17
  4280. Tor is the second stable release in the 0.2.5 series.
  4281. It backports several bugfixes from the 0.2.6 branch, including a
  4282. couple of medium-level security fixes for relays and exit nodes.
  4283. It also updates the list of directory authorities.
  4284. o Directory authority changes:
  4285. - Remove turtles as a directory authority.
  4286. - Add longclaw as a new (v3) directory authority. This implements
  4287. ticket 13296. This keeps the directory authority count at 9.
  4288. - The directory authority Faravahar has a new IP address. This
  4289. closes ticket 14487.
  4290. o Major bugfixes (crash, OSX, security):
  4291. - Fix a remote denial-of-service opportunity caused by a bug in
  4292. OSX's _strlcat_chk() function. Fixes bug 15205; bug first appeared
  4293. in OSX 10.9.
  4294. o Major bugfixes (relay, stability, possible security):
  4295. - Fix a bug that could lead to a relay crashing with an assertion
  4296. failure if a buffer of exactly the wrong layout was passed to
  4297. buf_pullup() at exactly the wrong time. Fixes bug 15083; bugfix on
  4298. Patch from 'cypherpunks'.
  4299. - Do not assert if the 'data' pointer on a buffer is advanced to the
  4300. very end of the buffer; log a BUG message instead. Only assert if
  4301. it is past that point. Fixes bug 15083; bugfix on
  4302. o Major bugfixes (exit node stability):
  4303. - Fix an assertion failure that could occur under high DNS load.
  4304. Fixes bug 14129; bugfix on Tor 0.0.7rc1. Found by "jowr";
  4305. diagnosed and fixed by "cypherpunks".
  4306. o Major bugfixes (Linux seccomp2 sandbox):
  4307. - Upon receiving sighup with the seccomp2 sandbox enabled, do not
  4308. crash during attempts to call wait4. Fixes bug 15088; bugfix on
  4309. Patch from "sanic".
  4310. o Minor features (controller):
  4311. - New "GETINFO bw-event-cache" to get information about recent
  4312. bandwidth events. Closes ticket 14128. Useful for controllers to
  4313. get recent bandwidth history after the fix for ticket 13988.
  4314. o Minor features (geoip):
  4315. - Update geoip to the March 3 2015 Maxmind GeoLite2 Country database.
  4316. - Update geoip6 to the March 3 2015 Maxmind GeoLite2
  4317. Country database.
  4318. o Minor bugfixes (client, automapping):
  4319. - Avoid crashing on torrc lines for VirtualAddrNetworkIPv[4|6] when
  4320. no value follows the option. Fixes bug 14142; bugfix on
  4321. Patch by "teor".
  4322. - Fix a memory leak when using AutomapHostsOnResolve. Fixes bug
  4323. 14195; bugfix on
  4324. o Minor bugfixes (compilation):
  4325. - Build without warnings with the stock OpenSSL srtp.h header, which
  4326. has a duplicate declaration of SSL_get_selected_srtp_profile().
  4327. Fixes bug 14220; this is OpenSSL's bug, not ours.
  4328. o Minor bugfixes (directory authority):
  4329. - Allow directory authorities to fetch more data from one another if
  4330. they find themselves missing lots of votes. Previously, they had
  4331. been bumping against the 10 MB queued data limit. Fixes bug 14261;
  4332. bugfix on
  4333. - Enlarge the buffer to read bwauth generated files to avoid an
  4334. issue when parsing the file in dirserv_read_measured_bandwidths().
  4335. Fixes bug 14125; bugfix on
  4336. o Minor bugfixes (statistics):
  4337. - Increase period over which bandwidth observations are aggregated
  4338. from 15 minutes to 4 hours. Fixes bug 13988; bugfix on 0.0.8pre1.
  4339. o Minor bugfixes (preventative security, C safety):
  4340. - When reading a hexadecimal, base-32, or base-64 encoded value from
  4341. a string, always overwrite the whole output buffer. This prevents
  4342. some bugs where we would look at (but fortunately, not reveal)
  4343. uninitialized memory on the stack. Fixes bug 14013; bugfix on all
  4344. versions of Tor.
  4345. Changes in version - 2015-03-17
  4346. Tor includes an updated list of directory authorities. It
  4347. also backports a couple of stability and security bugfixes from 0.2.5
  4348. and beyond.
  4349. o Directory authority changes:
  4350. - Remove turtles as a directory authority.
  4351. - Add longclaw as a new (v3) directory authority. This implements
  4352. ticket 13296. This keeps the directory authority count at 9.
  4353. - The directory authority Faravahar has a new IP address. This
  4354. closes ticket 14487.
  4355. o Major bugfixes (exit node stability, also in
  4356. - Fix an assertion failure that could occur under high DNS load.
  4357. Fixes bug 14129; bugfix on Tor 0.0.7rc1. Found by "jowr";
  4358. diagnosed and fixed by "cypherpunks".
  4359. o Major bugfixes (relay, stability, possible security, also in
  4360. - Fix a bug that could lead to a relay crashing with an assertion
  4361. failure if a buffer of exactly the wrong layout was passed to
  4362. buf_pullup() at exactly the wrong time. Fixes bug 15083; bugfix on
  4363. Patch from 'cypherpunks'.
  4364. - Do not assert if the 'data' pointer on a buffer is advanced to the
  4365. very end of the buffer; log a BUG message instead. Only assert if
  4366. it is past that point. Fixes bug 15083; bugfix on
  4367. o Minor features (geoip):
  4368. - Update geoip to the March 3 2015 Maxmind GeoLite2 Country database.
  4369. - Update geoip6 to the March 3 2015 Maxmind GeoLite2
  4370. Country database.
  4371. Changes in version - 2014-10-24
  4372. Tor is the first stable release in the 0.2.5 series.
  4373. It adds several new security features, including improved
  4374. denial-of-service resistance for relays, new compiler hardening
  4375. options, and a system-call sandbox for hardened installations on Linux
  4376. (requires seccomp2). The controller protocol has several new features,
  4377. resolving IPv6 addresses should work better than before, and relays
  4378. should be a little more CPU-efficient. We've added support for more
  4379. OpenBSD and FreeBSD transparent proxy types. We've improved the build
  4380. system and testing infrastructure to allow unit testing of more parts
  4381. of the Tor codebase. Finally, we've addressed several nagging pluggable
  4382. transport usability issues, and included numerous other small bugfixes
  4383. and features mentioned below.
  4384. This release marks end-of-life for Tor 0.2.3.x; those Tor versions
  4385. have accumulated many known flaws; everyone should upgrade.
  4386. o Major features (security):
  4387. - The ntor handshake is now on-by-default, no matter what the
  4388. directory authorities recommend. Implements ticket 8561.
  4389. - Make the "tor-gencert" tool used by directory authority operators
  4390. create 2048-bit signing keys by default (rather than 1024-bit, since
  4391. 1024-bit is uncomfortably small these days). Addresses ticket 10324.
  4392. - Warn about attempts to run hidden services and relays in the same
  4393. process: that's probably not a good idea. Closes ticket 12908.
  4394. - Disable support for SSLv3. All versions of OpenSSL in use with Tor
  4395. today support TLS 1.0 or later, so we can safely turn off support
  4396. for this old (and insecure) protocol. Fixes bug 13426.
  4397. o Major features (relay security, DoS-resistance):
  4398. - When deciding whether we have run out of memory and we need to
  4399. close circuits, also consider memory allocated in buffers for
  4400. streams attached to each circuit.
  4401. This change, which extends an anti-DoS feature introduced in
  4402. and improved in, lets Tor exit relays
  4403. better resist more memory-based DoS attacks than before. Since the
  4404. MaxMemInCellQueues option now applies to all queues, it is renamed
  4405. to MaxMemInQueues. This feature fixes bug 10169.
  4406. - Avoid hash-flooding denial-of-service attacks by using the secure
  4407. SipHash-2-4 hash function for our hashtables. Without this
  4408. feature, an attacker could degrade performance of a targeted
  4409. client or server by flooding their data structures with a large
  4410. number of entries to be stored at the same hash table position,
  4411. thereby slowing down the Tor instance. With this feature, hash
  4412. table positions are derived from a randomized cryptographic key,
  4413. and an attacker cannot predict which entries will collide. Closes
  4414. ticket 4900.
  4415. - If you don't specify MaxMemInQueues yourself, Tor now tries to
  4416. pick a good value based on your total system memory. Previously,
  4417. the default was always 8 GB. You can still override the default by
  4418. setting MaxMemInQueues yourself. Resolves ticket 11396.
  4419. o Major features (bridges and pluggable transports):
  4420. - Add support for passing arguments to managed pluggable transport
  4421. proxies. Implements ticket 3594.
  4422. - Bridges now track GeoIP information and the number of their users
  4423. even when pluggable transports are in use, and report usage
  4424. statistics in their extra-info descriptors. Resolves tickets 4773
  4425. and 5040.
  4426. - Don't launch pluggable transport proxies if we don't have any
  4427. bridges configured that would use them. Now we can list many
  4428. pluggable transports, and Tor will dynamically start one when it
  4429. hears a bridge address that needs it. Resolves ticket 5018.
  4430. - The bridge directory authority now assigns status flags (Stable,
  4431. Guard, etc) to bridges based on thresholds calculated over all
  4432. Running bridges. Now bridgedb can finally make use of its features
  4433. to e.g. include at least one Stable bridge in its answers. Fixes
  4434. bug 9859.
  4435. o Major features (controller):
  4436. - Extend ORCONN controller event to include an "ID" parameter,
  4437. and add four new controller event types CONN_BW, CIRC_BW,
  4438. CELL_STATS, and TB_EMPTY that show connection and circuit usage.
  4439. The new events are emitted in private Tor networks only, with the
  4440. goal of being able to better track performance and load during
  4441. full-network simulations. Implements proposal 218 and ticket 7359.
  4442. o Major features (relay performance):
  4443. - Speed up server-side lookups of rendezvous and introduction point
  4444. circuits by using hashtables instead of linear searches. These
  4445. functions previously accounted between 3 and 7% of CPU usage on
  4446. some busy relays. Resolves ticket 9841.
  4447. - Avoid wasting CPU when extending a circuit over a channel that is
  4448. nearly out of circuit IDs. Previously, we would do a linear scan
  4449. over possible circuit IDs before finding one or deciding that we
  4450. had exhausted our possibilities. Now, we try at most 64 random
  4451. circuit IDs before deciding that we probably won't succeed. Fixes
  4452. a possible root cause of ticket 11553.
  4453. o Major features (seccomp2 sandbox, Linux only):
  4454. - Use the seccomp2 syscall filtering facility on Linux to limit
  4455. which system calls Tor can invoke. This is an experimental,
  4456. Linux-only feature to provide defense-in-depth against unknown
  4457. attacks. To try turning it on, set "Sandbox 1" in your torrc
  4458. file. Please be ready to report bugs. We hope to add support
  4459. for better sandboxing in the future, including more fine-grained
  4460. filters, better division of responsibility, and support for more
  4461. platforms. This work has been done by Cristian-Matei Toader for
  4462. Google Summer of Code. Resolves tickets 11351 and 11465.
  4463. o Major features (testing networks):
  4464. - Make testing Tor networks bootstrap better: lower directory fetch
  4465. retry schedules and maximum interval without directory requests,
  4466. and raise maximum download tries. Implements ticket 6752.
  4467. - Add make target 'test-network' to run tests on a Chutney network.
  4468. Implements ticket 8530.
  4469. o Major features (other):
  4470. - On some platforms (currently: recent OSX versions, glibc-based
  4471. platforms that support the ELF format, and a few other
  4472. Unix-like operating systems), Tor can now dump stack traces
  4473. when a crash occurs or an assertion fails. By default, traces
  4474. are dumped to stderr (if possible) and to any logs that are
  4475. reporting errors. Implements ticket 9299.
  4476. o Deprecated versions:
  4477. - Tor 0.2.3.x has reached end-of-life; it has received no patches or
  4478. attention for some while.
  4479. o Major bugfixes (security, directory authorities):
  4480. - Directory authorities now include a digest of each relay's
  4481. identity key as a part of its microdescriptor.
  4482. This is a workaround for bug 11743 (reported by "cypherpunks"),
  4483. where Tor clients do not support receiving multiple
  4484. microdescriptors with the same SHA256 digest in the same
  4485. consensus. When clients receive a consensus like this, they only
  4486. use one of the relays. Without this fix, a hostile relay could
  4487. selectively disable some client use of target relays by
  4488. constructing a router descriptor with a different identity and the
  4489. same microdescriptor parameters and getting the authorities to
  4490. list it in a microdescriptor consensus. This fix prevents an
  4491. attacker from causing a microdescriptor collision, because the
  4492. router's identity is not forgeable.
  4493. o Major bugfixes (openssl bug workaround):
  4494. - Avoid crashing when using OpenSSL version 0.9.8zc, 1.0.0o, or
  4495. 1.0.1j, built with the 'no-ssl3' configuration option. Fixes
  4496. bug 13471. This is a workaround for an OpenSSL bug.
  4497. o Major bugfixes (client):
  4498. - Perform circuit cleanup operations even when circuit
  4499. construction operations are disabled (because the network is
  4500. disabled, or because there isn't enough directory information).
  4501. Previously, when we were not building predictive circuits, we
  4502. were not closing expired circuits either. Fixes bug 8387; bugfix on
  4503. This bug became visible in when we
  4504. became more strict about when we have "enough directory information
  4505. to build circuits".
  4506. o Major bugfixes (client, pluggable transports):
  4507. - When managing pluggable transports, use OS notification facilities
  4508. to learn if they have crashed, and don't attempt to kill any
  4509. process that has already exited. Fixes bug 8746; bugfix
  4510. on
  4511. o Major bugfixes (relay denial of service):
  4512. - Instead of writing destroy cells directly to outgoing connection
  4513. buffers, queue them and intersperse them with other outgoing cells.
  4514. This can prevent a set of resource starvation conditions where too
  4515. many pending destroy cells prevent data cells from actually getting
  4516. delivered. Reported by "oftc_must_be_destroyed". Fixes bug 7912;
  4517. bugfix on
  4518. o Major bugfixes (relay):
  4519. - Avoid queuing or sending destroy cells for circuit ID zero when we
  4520. fail to send a CREATE cell. Fixes bug 12848; bugfix on 0.0.8pre1.
  4521. Found and fixed by "cypherpunks".
  4522. - Fix ORPort reachability detection on relays running behind a
  4523. proxy, by correctly updating the "local" mark on the controlling
  4524. channel when changing the address of an or_connection_t after the
  4525. handshake. Fixes bug 12160; bugfix on
  4526. - Use a direct dirport connection when uploading non-anonymous
  4527. descriptors to the directory authorities. Previously, relays would
  4528. incorrectly use tunnel connections under a fairly wide variety of
  4529. circumstances. Fixes bug 11469; bugfix on
  4530. - When a circuit accidentally has the same circuit ID for its
  4531. forward and reverse direction, correctly detect the direction of
  4532. cells using that circuit. Previously, this bug made roughly one
  4533. circuit in a million non-functional. Fixes bug 12195; this is a
  4534. bugfix on every version of Tor.
  4535. o Minor features (security):
  4536. - New --enable-expensive-hardening option to enable security
  4537. hardening options that consume nontrivial amounts of CPU and
  4538. memory. Right now, this includes AddressSanitizer and UbSan, which
  4539. are supported in newer versions of GCC and Clang. Closes ticket
  4540. 11477.
  4541. - Authorities now assign the Guard flag to the fastest 25% of the
  4542. network (it used to be the fastest 50%). Also raise the consensus
  4543. weight that guarantees the Guard flag from 250 to 2000. For the
  4544. current network, this results in about 1100 guards, down from 2500.
  4545. This step paves the way for moving the number of entry guards
  4546. down to 1 (proposal 236) while still providing reasonable expected
  4547. performance for most users. Implements ticket 12690.
  4548. o Minor features (security, memory management):
  4549. - Memory allocation tricks (mempools and buffer freelists) are now
  4550. disabled by default. You can turn them back on with
  4551. --enable-mempools and --enable-buf-freelists respectively. We're
  4552. disabling these features because malloc performance is good enough
  4553. on most platforms, and a similar feature in OpenSSL exacerbated
  4554. exploitation of the Heartbleed attack. Resolves ticket 11476.
  4555. o Minor features (bridge client):
  4556. - Report a more useful failure message when we can't connect to a
  4557. bridge because we don't have the right pluggable transport
  4558. configured. Resolves ticket 9665. Patch from Fábio J. Bertinatto.
  4559. o Minor features (bridge):
  4560. - Add an ExtORPortCookieAuthFileGroupReadable option to make the
  4561. cookie file for the ExtORPort g+r by default.
  4562. o Minor features (bridges, pluggable transports):
  4563. - Bridges now write the SHA1 digest of their identity key
  4564. fingerprint (that is, a hash of a hash of their public key) to
  4565. notice-level logs, and to a new hashed-fingerprint file. This
  4566. information will help bridge operators look up their bridge in
  4567. Globe and similar tools. Resolves ticket 10884.
  4568. - Improve the message that Tor displays when running as a bridge
  4569. using pluggable transports without an Extended ORPort listener.
  4570. Also, log the message in the log file too. Resolves ticket 11043.
  4571. - Add threshold cutoffs to the networkstatus document created by
  4572. the Bridge Authority. Fixes bug 1117.
  4573. - On Windows, spawn background processes using the CREATE_NO_WINDOW
  4574. flag. Now Tor Browser Bundle 3.5 with pluggable transports enabled
  4575. doesn't pop up a blank console window. (In Tor Browser Bundle 2.x,
  4576. Vidalia set this option for us.) Implements ticket 10297.
  4577. o Minor features (build):
  4578. - The configure script has a --disable-seccomp option to turn off
  4579. support for libseccomp on systems that have it, in case it (or
  4580. Tor's use of it) is broken. Resolves ticket 11628.
  4581. - Assume that a user using ./configure --host wants to cross-compile,
  4582. and give an error if we cannot find a properly named
  4583. tool-chain. Add a --disable-tool-name-check option to proceed
  4584. nevertheless. Addresses ticket 9869. Patch by Benedikt Gollatz.
  4585. - If we run ./configure and the compiler recognizes -fstack-protector
  4586. but the linker rejects it, warn the user about a potentially missing
  4587. libssp package. Addresses ticket 9948. Patch from Benedikt Gollatz.
  4588. - Add support for `--library-versions` flag. Implements ticket 6384.
  4589. - Return the "unexpected sendme" warnings to a warn severity, but make
  4590. them rate limited, to help diagnose ticket 8093.
  4591. - Detect a missing asciidoc, and warn the user about it, during
  4592. configure rather than at build time. Fixes issue 6506. Patch from
  4593. Arlo Breault.
  4594. o Minor features (client):
  4595. - Add a new option, PredictedPortsRelevanceTime, to control how long
  4596. after having received a request to connect to a given port Tor
  4597. will try to keep circuits ready in anticipation of future requests
  4598. for that port. Patch from "unixninja92"; implements ticket 9176.
  4599. o Minor features (config options and command line):
  4600. - Add an --allow-missing-torrc commandline option that tells Tor to
  4601. run even if the configuration file specified by -f is not available.
  4602. Implements ticket 10060.
  4603. - Add support for the TPROXY transparent proxying facility on Linux.
  4604. See documentation for the new TransProxyType option for more
  4605. details. Implementation by "thomo". Closes ticket 10582.
  4606. o Minor features (config options):
  4607. - Config (torrc) lines now handle fingerprints which are missing
  4608. their initial '$'. Resolves ticket 4341; improvement over 0.0.9pre5.
  4609. - Support a --dump-config option to print some or all of the
  4610. configured options. Mainly useful for debugging the command-line
  4611. option parsing code. Helps resolve ticket 4647.
  4612. - Raise awareness of safer logging: notify user of potentially
  4613. unsafe config options, like logging more verbosely than severity
  4614. "notice" or setting SafeLogging to 0. Resolves ticket 5584.
  4615. - Add a new configuration option TestingV3AuthVotingStartOffset
  4616. that bootstraps a network faster by changing the timing for
  4617. consensus votes. Addresses ticket 8532.
  4618. - Add a new torrc option "ServerTransportOptions" that allows
  4619. bridge operators to pass configuration parameters to their
  4620. pluggable transports. Resolves ticket 8929.
  4621. - The config (torrc) file now accepts bandwidth and space limits in
  4622. bits as well as bytes. (Anywhere that you can say "2 Kilobytes",
  4623. you can now say "16 kilobits", and so on.) Resolves ticket 9214.
  4624. Patch by CharlieB.
  4625. o Minor features (controller):
  4626. - Make the entire exit policy available from the control port via
  4627. GETINFO exit-policy/*. Implements enhancement 7952. Patch from
  4628. "rl1987".
  4629. - Because of the fix for ticket 11396, the real limit for memory
  4630. usage may no longer match the configured MaxMemInQueues value. The
  4631. real limit is now exposed via GETINFO limits/max-mem-in-queues.
  4632. - Add a new "HS_DESC" controller event that reports activities
  4633. related to hidden service descriptors. Resolves ticket 8510.
  4634. - New "DROPGUARDS" controller command to forget all current entry
  4635. guards. Not recommended for ordinary use, since replacing guards
  4636. too frequently makes several attacks easier. Resolves ticket 9934;
  4637. patch from "ra".
  4638. - Implement the TRANSPORT_LAUNCHED control port event that
  4639. notifies controllers about new launched pluggable
  4640. transports. Resolves ticket 5609.
  4641. o Minor features (diagnostic):
  4642. - When logging a warning because of bug 7164, additionally check the
  4643. hash table for consistency (as proposed on ticket 11737). This may
  4644. help diagnose bug 7164.
  4645. - When we log a heartbeat, log how many one-hop circuits we have
  4646. that are at least 30 minutes old, and log status information about
  4647. a few of them. This is an attempt to track down bug 8387.
  4648. - When encountering an unexpected CR while writing text to a file on
  4649. Windows, log the name of the file. Should help diagnosing
  4650. bug 11233.
  4651. - Give more specific warnings when a client notices that an onion
  4652. handshake has failed. Fixes ticket 9635.
  4653. - Add significant new logging code to attempt to diagnose bug 12184,
  4654. where relays seem to run out of available circuit IDs.
  4655. - Improve the diagnostic log message for bug 8387 even further to
  4656. try to improve our odds of figuring out why one-hop directory
  4657. circuits sometimes do not get closed.
  4658. - Add more log messages to diagnose bug 7164, which causes
  4659. intermittent "microdesc_free() called but md was still referenced"
  4660. warnings. We now include more information, to figure out why we
  4661. might be cleaning a microdescriptor for being too old if it's
  4662. still referenced by a live node_t object.
  4663. - Log current accounting state (bytes sent and received + remaining
  4664. time for the current accounting period) in the relay's heartbeat
  4665. message. Implements ticket 5526; patch from Peter Retzlaff.
  4666. o Minor features (geoip):
  4667. - Update geoip and geoip6 to the August 7 2014 Maxmind GeoLite2
  4668. Country database.
  4669. o Minor features (interface):
  4670. - Generate a warning if any ports are listed in the SocksPolicy,
  4671. DirPolicy, AuthDirReject, AuthDirInvalid, AuthDirBadDir, or
  4672. AuthDirBadExit options. (These options only support address
  4673. ranges.) Fixes part of ticket 11108.
  4674. o Minor features (kernel API usage):
  4675. - Use the SOCK_NONBLOCK socket type, if supported, to open nonblocking
  4676. sockets in a single system call. Implements ticket 5129.
  4677. o Minor features (log messages):
  4678. - When ServerTransportPlugin is set on a bridge, Tor can write more
  4679. useful statistics about bridge use in its extrainfo descriptors,
  4680. but only if the Extended ORPort ("ExtORPort") is set too. Add a
  4681. log message to inform the user in this case. Resolves ticket 9651.
  4682. - When receiving a new controller connection, log the origin address.
  4683. Resolves ticket 9698; patch from "sigpipe".
  4684. - When logging OpenSSL engine status at startup, log the status of
  4685. more engines. Fixes ticket 10043; patch from Joshua Datko.
  4686. o Minor features (log verbosity):
  4687. - Demote the message that we give when a flushing connection times
  4688. out for too long from NOTICE to INFO. It was usually meaningless.
  4689. Resolves ticket 5286.
  4690. - Don't log so many notice-level bootstrapping messages at startup
  4691. about downloading descriptors. Previously, we'd log a notice
  4692. whenever we learned about more routers. Now, we only log a notice
  4693. at every 5% of progress. Fixes bug 9963.
  4694. - Warn less verbosely when receiving a malformed
  4695. ESTABLISH_RENDEZVOUS cell. Fixes ticket 11279.
  4696. o Minor features (performance):
  4697. - If we're using the pure-C 32-bit curve25519_donna implementation
  4698. of curve25519, build it with the -fomit-frame-pointer option to
  4699. make it go faster on register-starved hosts. This improves our
  4700. handshake performance by about 6% on i386 hosts without nacl.
  4701. Closes ticket 8109.
  4702. o Minor features (relay):
  4703. - If a circuit timed out for at least 3 minutes, check if we have a
  4704. new external IP address, and publish a new descriptor with the new
  4705. IP address if it changed. Resolves ticket 2454.
  4706. o Minor features (testing):
  4707. - If Python is installed, "make check" now runs extra tests beyond
  4708. the unit test scripts.
  4709. - When bootstrapping a test network, sometimes very few relays get
  4710. the Guard flag. Now a new option "TestingDirAuthVoteGuard" can
  4711. specify a set of relays which should be voted Guard regardless of
  4712. their uptime or bandwidth. Addresses ticket 9206.
  4713. o Minor features (transparent proxy, *BSD):
  4714. - Support FreeBSD's ipfw firewall interface for TransPort ports on
  4715. FreeBSD. To enable it, set "TransProxyType ipfw". Resolves ticket
  4716. 10267; patch from "yurivict".
  4717. - Support OpenBSD's divert-to rules with the pf firewall for
  4718. transparent proxy ports. To enable it, set "TransProxyType
  4719. pf-divert". This allows Tor to run a TransPort transparent proxy
  4720. port on OpenBSD 4.4 or later without root privileges. See the
  4721. pf.conf(5) manual page for information on configuring pf to use
  4722. divert-to rules. Closes ticket 10896; patch from Dana Koch.
  4723. o Minor bugfixes (bridge client):
  4724. - Stop accepting bridge lines containing hostnames. Doing so would
  4725. cause clients to perform DNS requests on the hostnames, which was
  4726. not sensible behavior. Fixes bug 10801; bugfix on
  4727. o Minor bugfixes (bridges):
  4728. - Avoid potential crashes or bad behavior when launching a
  4729. server-side managed proxy with ORPort or ExtORPort temporarily
  4730. disabled. Fixes bug 9650; bugfix on
  4731. - Fix a bug where the first connection works to a bridge that uses a
  4732. pluggable transport with client-side parameters, but we don't send
  4733. the client-side parameters on subsequent connections. (We don't
  4734. use any pluggable transports with client-side parameters yet,
  4735. but ScrambleSuit will soon become the first one.) Fixes bug 9162;
  4736. bugfix on Based on a patch from "rl1987".
  4737. o Minor bugfixes (build, auxiliary programs):
  4738. - Stop preprocessing the "torify" script with autoconf, since
  4739. it no longer refers to LOCALSTATEDIR. Fixes bug 5505; patch
  4740. from Guilhem.
  4741. - The tor-fw-helper program now follows the standard convention and
  4742. exits with status code "0" on success. Fixes bug 9030; bugfix on
  4743. Patch by Arlo Breault.
  4744. - Corrected ./configure advice for what openssl dev package you should
  4745. install on Debian. Fixes bug 9207; bugfix on
  4746. o Minor bugfixes (client):
  4747. - Avoid "Tried to open a socket with DisableNetwork set" warnings
  4748. when starting a client with bridges configured and DisableNetwork
  4749. set. (Tor launcher starts Tor with DisableNetwork set the first
  4750. time it runs.) Fixes bug 10405; bugfix on
  4751. - Improve the log message when we can't connect to a hidden service
  4752. because all of the hidden service directory nodes hosting its
  4753. descriptor are excluded. Improves on our fix for bug 10722, which
  4754. was a bugfix on
  4755. - Raise a control port warning when we fail to connect to all of
  4756. our bridges. Previously, we didn't inform the controller, and
  4757. the bootstrap process would stall. Fixes bug 11069; bugfix on
  4759. - Exit immediately when a process-owning controller exits.
  4760. Previously, tor relays would wait for a little while after their
  4761. controller exited, as if they had gotten an INT signal -- but this
  4762. was problematic, since there was no feedback for the user. To do a
  4763. clean shutdown, controllers should send an INT signal and give Tor
  4764. a chance to clean up. Fixes bug 10449; bugfix on
  4765. - Stop attempting to connect to bridges before our pluggable
  4766. transports are configured (harmless but resulted in some erroneous
  4767. log messages). Fixes bug 11156; bugfix on
  4768. - Fix connections to IPv6 addresses over SOCKS5. Previously, we were
  4769. generating incorrect SOCKS5 responses, and confusing client
  4770. applications. Fixes bug 10987; bugfix on
  4771. o Minor bugfixes (client, DNSPort):
  4772. - When using DNSPort, try to respond to AAAA requests with AAAA
  4773. answers. Previously, we hadn't looked at the request type when
  4774. deciding which answer type to prefer. Fixes bug 10468; bugfix on
  4776. - When receiving a DNS query for an unsupported record type, reply
  4777. with no answer rather than with a NOTIMPL error. This behavior
  4778. isn't correct either, but it will break fewer client programs, we
  4779. hope. Fixes bug 10268; bugfix on Original patch
  4780. from "epoch".
  4781. o Minor bugfixes (client, logging during bootstrap):
  4782. - Only report the first fatal bootstrap error on a given OR
  4783. connection. This stops us from telling the controller bogus error
  4784. messages like "DONE". Fixes bug 10431; bugfix on
  4785. - Avoid generating spurious warnings when starting with
  4786. DisableNetwork enabled. Fixes bug 11200 and bug 10405; bugfix on
  4788. o Minor bugfixes (closing OR connections):
  4789. - If write_to_buf() in connection_write_to_buf_impl_() ever fails,
  4790. check if it's an or_connection_t and correctly call
  4791. connection_or_close_for_error() rather than
  4792. connection_mark_for_close() directly. Fixes bug 11304; bugfix on
  4794. - When closing all connections on setting DisableNetwork to 1, use
  4795. connection_or_close_normally() rather than closing OR connections
  4796. out from under the channel layer. Fixes bug 11306; bugfix on
  4798. o Minor bugfixes (code correctness):
  4799. - Previously we used two temporary files when writing descriptors to
  4800. disk; now we only use one. Fixes bug 1376.
  4801. - Remove an erroneous (but impossible and thus harmless) pointer
  4802. comparison that would have allowed compilers to skip a bounds
  4803. check in channeltls.c. Fixes bugs 10313 and 9980; bugfix on
  4804. Noticed by Jared L Wong and David Fifield.
  4805. - Fix an always-true assertion in pluggable transports code so it
  4806. actually checks what it was trying to check. Fixes bug 10046;
  4807. bugfix on Found by "dcb".
  4808. o Minor bugfixes (command line):
  4809. - Use a single command-line parser for parsing torrc options on the
  4810. command line and for finding special command-line options to avoid
  4811. inconsistent behavior for torrc option arguments that have the same
  4812. names as command-line options. Fixes bugs 4647 and 9578; bugfix on
  4813. 0.0.9pre5.
  4814. - No longer allow 'tor --hash-password' with no arguments. Fixes bug
  4815. 9573; bugfix on 0.0.9pre5.
  4816. o Minor bugfixes (compilation):
  4817. - Compile correctly with builds and forks of OpenSSL (such as
  4818. LibreSSL) that disable compression. Fixes bug 12602; bugfix on
  4819. Patch from "dhill".
  4820. - Restore the ability to compile Tor with V2_HANDSHAKE_SERVER
  4821. turned off (that is, without support for v2 link handshakes). Fixes
  4822. bug 4677; bugfix on Patch from "piet".
  4823. - In routerlist_assert_ok(), don't take the address of a
  4824. routerinfo's cache_info member unless that routerinfo is non-NULL.
  4825. Fixes bug 13096; bugfix on Patch by "teor".
  4826. - Fix a large number of false positive warnings from the clang
  4827. analyzer static analysis tool. This should make real warnings
  4828. easier for clang analyzer to find. Patch from "teor". Closes
  4829. ticket 13036.
  4830. - Resolve GCC complaints on OpenBSD about discarding constness in
  4831. TO_{ORIGIN,OR}_CIRCUIT functions. Fixes part of bug 11633; bugfix
  4832. on Patch from Dana Koch.
  4833. - Resolve clang complaints on OpenBSD with -Wshorten-64-to-32 due to
  4834. treatment of long and time_t as comparable types. Fixes part of
  4835. bug 11633. Patch from Dana Koch.
  4836. - When deciding whether to build the 64-bit curve25519
  4837. implementation, detect platforms where we can compile 128-bit
  4838. arithmetic but cannot link it. Fixes bug 11729; bugfix on
  4839. Patch from "conradev".
  4840. - Fix compilation when DNS_CACHE_DEBUG is enabled. Fixes bug 11761;
  4841. bugfix on Found by "cypherpunks".
  4842. - Fix compilation with dmalloc. Fixes bug 11605; bugfix
  4843. on
  4844. - Build and run correctly on systems like OpenBSD-current that have
  4845. patched OpenSSL to remove get_cipher_by_char and/or its
  4846. implementations. Fixes issue 13325.
  4847. o Minor bugfixes (controller and command-line):
  4848. - If changing a config option via "setconf" fails in a recoverable
  4849. way, we used to nonetheless write our new control ports to the
  4850. file described by the "ControlPortWriteToFile" option. Now we only
  4851. write out that file if we successfully switch to the new config
  4852. option. Fixes bug 5605; bugfix on Patch from "Ryman".
  4853. o Minor bugfixes (directory server):
  4854. - No longer accept malformed http headers when parsing urls from
  4855. headers. Now we reply with Bad Request ("400"). Fixes bug 2767;
  4856. bugfix on 0.0.6pre1.
  4857. - When sending a compressed set of descriptors or microdescriptors,
  4858. make sure to finalize the zlib stream. Previously, we would write
  4859. all the compressed data, but if the last descriptor we wanted to
  4860. send was missing or too old, we would not mark the stream as
  4861. finished. This caused problems for decompression tools. Fixes bug
  4862. 11648; bugfix on
  4863. o Minor bugfixes (hidden service):
  4864. - Only retry attempts to connect to a chosen rendezvous point 8
  4865. times, not 30. Fixes bug 4241; bugfix on
  4866. o Minor bugfixes (interface):
  4867. - Reject relative control socket paths and emit a warning. Previously,
  4868. single-component control socket paths would be rejected, but Tor
  4869. would not log why it could not validate the config. Fixes bug 9258;
  4870. bugfix on
  4871. o Minor bugfixes (log messages):
  4872. - Fix a bug where clients using bridges would report themselves
  4873. as 50% bootstrapped even without a live consensus document.
  4874. Fixes bug 9922; bugfix on
  4875. - Suppress a warning where, if there's only one directory authority
  4876. in the network, we would complain that votes and signatures cannot
  4877. be uploaded to other directory authorities. Fixes bug 10842;
  4878. bugfix on
  4879. - Report bootstrapping progress correctly when we're downloading
  4880. microdescriptors. We had updated our "do we have enough microdescs
  4881. to begin building circuits?" logic most recently in
  4882. (see bug 5956), but we left the bootstrap status event logic at
  4883. "how far through getting 1/4 of them are we?" Fixes bug 9958;
  4884. bugfix on, which is where they diverged (see bug 5343).
  4885. o Minor bugfixes (logging):
  4886. - Downgrade "Unexpected onionskin length after decryption" warning
  4887. to a protocol-warn, since there's nothing relay operators can do
  4888. about a client that sends them a malformed create cell. Resolves
  4889. bug 12996; bugfix on 0.0.6rc1.
  4890. - Log more specific warnings when we get an ESTABLISH_RENDEZVOUS
  4891. cell on a cannibalized or non-OR circuit. Resolves ticket 12997.
  4892. - When logging information about an EXTEND2 or EXTENDED2 cell, log
  4893. their names correctly. Fixes part of bug 12700; bugfix
  4894. on
  4895. - When logging information about a relay cell whose command we don't
  4896. recognize, log its command as an integer. Fixes part of bug 12700;
  4897. bugfix on
  4898. - Escape all strings from the directory connection before logging
  4899. them. Fixes bug 13071; bugfix on Patch from "teor".
  4900. - Squelch a spurious LD_BUG message "No origin circuit for
  4901. successful SOCKS stream" in certain hidden service failure cases;
  4902. fixes bug 10616.
  4903. - Downgrade the severity of the 'unexpected sendme cell from client'
  4904. from 'warn' to 'protocol warning'. Closes ticket 8093.
  4905. o Minor bugfixes (misc code correctness):
  4906. - In munge_extrainfo_into_routerinfo(), check the return value of
  4907. memchr(). This would have been a serious issue if we ever passed
  4908. it a non-extrainfo. Fixes bug 8791; bugfix on Patch
  4909. from Arlo Breault.
  4910. - On the chance that somebody manages to build Tor on a
  4911. platform where time_t is unsigned, correct the way that
  4912. microdesc_add_to_cache() handles negative time arguments.
  4913. Fixes bug 8042; bugfix on
  4914. - Fix various instances of undefined behavior in channeltls.c,
  4915. tor_memmem(), and eventdns.c that would cause us to construct
  4916. pointers to memory outside an allocated object. (These invalid
  4917. pointers were not accessed, but C does not even allow them to
  4918. exist.) Fixes bug 10363; bugfixes on,,
  4919., and Reported by "bobnomnom".
  4920. - Use the AddressSanitizer and Ubsan sanitizers (in clang-3.4) to
  4921. fix some miscellaneous errors in our tests and codebase. Fixes bug
  4922. 11232. Bugfixes on versions back as far as
  4923. - Always check return values for unlink, munmap, UnmapViewOfFile;
  4924. check strftime return values more often. In some cases all we can
  4925. do is report a warning, but this may help prevent deeper bugs from
  4926. going unnoticed. Closes ticket 8787; bugfixes on many, many tor
  4927. versions.
  4928. - Fix numerous warnings from the clang "scan-build" static analyzer.
  4929. Some of these are programming style issues; some of them are false
  4930. positives that indicated awkward code; some are undefined behavior
  4931. cases related to constructing (but not using) invalid pointers;
  4932. some are assumptions about API behavior; some are (harmlessly)
  4933. logging sizeof(ptr) bytes from a token when sizeof(*ptr) would be
  4934. correct; and one or two are genuine bugs that weren't reachable
  4935. from the rest of the program. Fixes bug 8793; bugfixes on many,
  4936. many tor versions.
  4937. o Minor bugfixes (node selection):
  4938. - If ExcludeNodes is set, consider non-excluded hidden service
  4939. directory servers before excluded ones. Do not consider excluded
  4940. hidden service directory servers at all if StrictNodes is
  4941. set. (Previously, we would sometimes decide to connect to those
  4942. servers, and then realize before we initiated a connection that
  4943. we had excluded them.) Fixes bug 10722; bugfix on
  4944. Reported by "mr-4".
  4945. - If we set the ExitNodes option but it doesn't include any nodes
  4946. that have the Exit flag, we would choose not to bootstrap. Now we
  4947. bootstrap so long as ExitNodes includes nodes which can exit to
  4948. some port. Fixes bug 10543; bugfix on
  4949. o Minor bugfixes (performance):
  4950. - Avoid a bug where every successful connection made us recompute
  4951. the flag telling us whether we have sufficient information to
  4952. build circuits. Previously, we would forget our cached value
  4953. whenever we successfully opened a channel (or marked a router as
  4954. running or not running for any other reason), regardless of
  4955. whether we had previously believed the router to be running. This
  4956. forced us to run an expensive update operation far too often.
  4957. Fixes bug 12170; bugfix on
  4958. - Avoid using tor_memeq() for checking relay cell integrity. This
  4959. removes a possible performance bottleneck. Fixes part of bug
  4960. 12169; bugfix on
  4961. o Minor bugfixes (platform-specific):
  4962. - When dumping a malformed directory object to disk, save it in
  4963. binary mode on Windows, not text mode. Fixes bug 11342; bugfix on
  4965. - Don't report failures from make_socket_reuseable() on incoming
  4966. sockets on OSX: this can happen when incoming connections close
  4967. early. Fixes bug 10081.
  4968. o Minor bugfixes (pluggable transports):
  4969. - Avoid another 60-second delay when starting Tor in a pluggable-
  4970. transport-using configuration when we already have cached
  4971. descriptors for our bridges. Fixes bug 11965; bugfix
  4972. on
  4973. o Minor bugfixes (protocol correctness):
  4974. - When receiving a VERSIONS cell with an odd number of bytes, close
  4975. the connection immediately since the cell is malformed. Fixes bug
  4976. 10365; bugfix on Spotted by "bobnomnom"; fix by
  4977. "rl1987".
  4978. o Minor bugfixes (relay, other):
  4979. - We now drop CREATE cells for already-existent circuit IDs and for
  4980. zero-valued circuit IDs, regardless of other factors that might
  4981. otherwise have called for DESTROY cells. Fixes bug 12191; bugfix
  4982. on 0.0.8pre1.
  4983. - When rejecting DATA cells for stream_id zero, still count them
  4984. against the circuit's deliver window so that we don't fail to send
  4985. a SENDME. Fixes bug 11246; bugfix on
  4986. o Minor bugfixes (relay, threading):
  4987. - Check return code on spawn_func() in cpuworker code, so that we
  4988. don't think we've spawned a nonworking cpuworker and write junk to
  4989. it forever. Fix related to bug 4345; bugfix on all released Tor
  4990. versions. Found by "skruffy".
  4991. - Use a pthread_attr to make sure that spawn_func() cannot return an
  4992. error while at the same time launching a thread. Fix related to
  4993. bug 4345; bugfix on all released Tor versions. Reported
  4994. by "cypherpunks".
  4995. o Minor bugfixes (relays and bridges):
  4996. - Avoid crashing on a malformed resolv.conf file when running a
  4997. relay using Libevent 1. Fixes bug 8788; bugfix on
  4998. - Non-exit relays no longer launch mock DNS requests to check for
  4999. DNS hijacking. This has been unnecessary since, when
  5000. non-exit relays stopped servicing DNS requests. Fixes bug 965;
  5001. bugfix on Patch from Matt Pagan.
  5002. - Bridges now report complete directory request statistics. Related
  5003. to bug 5824; bugfix on
  5004. - Bridges now never collect statistics that were designed for
  5005. relays. Fixes bug 5824; bugfix on
  5006. o Minor bugfixes (testing):
  5007. - Fix all valgrind warnings produced by the unit tests. There were
  5008. over a thousand memory leak warnings previously, mostly produced
  5009. by forgetting to free things in the unit test code. Fixes bug
  5010. 11618, bugfixes on many versions of Tor.
  5011. o Minor bugfixes (tor-fw-helper):
  5012. - Give a correct log message when tor-fw-helper fails to launch.
  5013. (Previously, we would say something like "tor-fw-helper sent us a
  5014. string we could not parse".) Fixes bug 9781; bugfix
  5015. on
  5016. o Minor bugfixes (trivial memory leaks):
  5017. - Fix a small memory leak when signing a directory object. Fixes bug
  5018. 11275; bugfix on
  5019. - Resolve some memory leaks found by coverity in the unit tests, on
  5020. exit in tor-gencert, and on a failure to compute digests for our
  5021. own keys when generating a v3 networkstatus vote. These leaks
  5022. should never have affected anyone in practice.
  5023. o Code simplification and refactoring:
  5024. - Remove some old fallback code designed to keep Tor clients working
  5025. in a network with only two working relays. Elsewhere in the code we
  5026. have long since stopped supporting such networks, so there wasn't
  5027. much point in keeping it around. Addresses ticket 9926.
  5028. - Reject 0-length EXTEND2 cells more explicitly. Fixes bug 10536;
  5029. bugfix on Reported by "cypherpunks".
  5030. - Extract the common duplicated code for creating a subdirectory
  5031. of the data directory and writing to a file in it. Fixes ticket
  5032. 4282; patch from Peter Retzlaff.
  5033. - Since OpenSSL 0.9.7, the i2d_*() functions support allocating output
  5034. buffer. Avoid calling twice: i2d_RSAPublicKey(), i2d_DHparams(),
  5035. i2d_X509(), and i2d_PublicKey(). Resolves ticket 5170.
  5036. - Add a set of accessor functions for the circuit timeout data
  5037. structure. Fixes ticket 6153; patch from "piet".
  5038. - Clean up exit paths from connection_listener_new(). Closes ticket
  5039. 8789. Patch from Arlo Breault.
  5040. - Since we rely on OpenSSL 0.9.8 now, we can use EVP_PKEY_cmp()
  5041. and drop our own custom pkey_eq() implementation. Fixes bug 9043.
  5042. - Use a doubly-linked list to implement the global circuit list.
  5043. Resolves ticket 9108. Patch from Marek Majkowski.
  5044. - Remove contrib/id_to_fp.c since it wasn't used anywhere.
  5045. - Remove constants and tests for PKCS1 padding; it's insecure and
  5046. shouldn't be used for anything new. Fixes bug 8792; patch
  5047. from Arlo Breault.
  5048. - Remove instances of strcpy() from the unit tests. They weren't
  5049. hurting anything, since they were only in the unit tests, but it's
  5050. embarassing to have strcpy() in the code at all, and some analysis
  5051. tools don't like it. Fixes bug 8790; bugfix on and
  5052. Patch from Arlo Breault.
  5053. - Remove is_internal_IP() function. Resolves ticket 4645.
  5054. - Remove unused function circuit_dump_by_chan from circuitlist.c.
  5055. Closes issue 9107; patch from "marek".
  5056. - Change our use of the ENUM_BF macro to avoid declarations that
  5057. confuse Doxygen.
  5058. - Get rid of router->address, since in all cases it was just the
  5059. string representation of router->addr. Resolves ticket 5528.
  5060. o Documentation:
  5061. - Adjust the URLs in the README to refer to the new locations of
  5062. several documents on the website. Fixes bug 12830. Patch from
  5063. Matt Pagan.
  5064. - Document 'reject6' and 'accept6' ExitPolicy entries. Resolves
  5065. ticket 12878.
  5066. - Update manpage to describe some of the files you can expect to
  5067. find in Tor's DataDirectory. Addresses ticket 9839.
  5068. - Clean up several option names in the manpage to match their real
  5069. names, add the missing documentation for a couple of testing and
  5070. directory authority options, remove the documentation for a
  5071. V2-directory fetching option that no longer exists. Resolves
  5072. ticket 11634.
  5073. - Correct the documenation so that it lists the correct directory
  5074. for the stats files. (They are in a subdirectory called "stats",
  5075. not "status".)
  5076. - In the manpage, move more authority-only options into the
  5077. directory authority section so that operators of regular directory
  5078. caches don't get confused.
  5079. - Fix the layout of the SOCKSPort flags in the manpage. Fixes bug
  5080. 11061; bugfix on
  5081. - Resolve warnings from Doxygen.
  5082. - Document in the manpage that "KBytes" may also be written as
  5083. "kilobytes" or "KB", that "Kbits" may also be written as
  5084. "kilobits", and so forth. Closes ticket 9222.
  5085. - Document that the ClientOnly config option overrides ORPort.
  5086. Our old explanation made ClientOnly sound as though it did
  5087. nothing at all. Resolves bug 9059.
  5088. - Explain that SocksPolicy, DirPolicy, and similar options don't
  5089. take port arguments. Fixes the other part of ticket 11108.
  5090. - Fix a comment about the rend_server_descriptor_t.protocols field
  5091. to more accurately describe its range. Also, make that field
  5092. unsigned, to more accurately reflect its usage. Fixes bug 9099;
  5093. bugfix on
  5094. - Fix the manpage's description of HiddenServiceAuthorizeClient:
  5095. the maximum client name length is 16, not 19. Fixes bug 11118;
  5096. bugfix on
  5097. o Package cleanup:
  5098. - The contrib directory has been sorted and tidied. Before, it was
  5099. an unsorted dumping ground for useful and not-so-useful things.
  5100. Now, it is divided based on functionality, and the items which
  5101. seemed to be nonfunctional or useless have been removed. Resolves
  5102. ticket 8966; based on patches from "rl1987".
  5103. o Removed code and features:
  5104. - Clients now reject any directory authority certificates lacking
  5105. a dir-key-crosscert element. These have been included since
  5106., so there's no real reason for them to be optional
  5107. any longer. Completes proposal 157. Resolves ticket 10162.
  5108. - Remove all code that existed to support the v2 directory system,
  5109. since there are no longer any v2 directory authorities. Resolves
  5110. ticket 10758.
  5111. - Remove the HSAuthoritativeDir and AlternateHSAuthority torrc
  5112. options, which were used for designating authorities as "Hidden
  5113. service authorities". There has been no use of hidden service
  5114. authorities since, when we stopped uploading or
  5115. downloading v0 hidden service descriptors. Fixes bug 10881; also
  5116. part of a fix for bug 10841.
  5117. - Remove /tor/dbg-stability.txt URL that was meant to help debug WFU
  5118. and MTBF calculations, but that nobody was using. Fixes bug 11742.
  5119. - The TunnelDirConns and PreferTunnelledDirConns options no longer
  5120. exist; tunneled directory connections have been available since
  5121., and turning them off is not a good idea. This is a
  5122. brute-force fix for 10849, where "TunnelDirConns 0" would break
  5123. hidden services.
  5124. - Remove all code for the long unused v1 directory protocol.
  5125. Resolves ticket 11070.
  5126. - Remove all remaining code related to version-0 hidden service
  5127. descriptors: they have not been in use since Fixes
  5128. the rest of bug 10841.
  5129. - Remove migration code from when we renamed the "cached-routers"
  5130. file to "cached-descriptors" back in This
  5131. incidentally resolves ticket 6502 by cleaning up the related code
  5132. a bit. Patch from Akshay Hebbar.
  5133. o Test infrastructure:
  5134. - Tor now builds each source file in two modes: a mode that avoids
  5135. exposing identifiers needlessly, and another mode that exposes
  5136. more identifiers for testing. This lets the compiler do better at
  5137. optimizing the production code, while enabling us to take more
  5138. radical measures to let the unit tests test things.
  5139. - The production builds no longer include functions used only in
  5140. the unit tests; all functions exposed from a module only for
  5141. unit-testing are now static in production builds.
  5142. - Add an --enable-coverage configuration option to make the unit
  5143. tests (and a new src/or/tor-cov target) to build with gcov test
  5144. coverage support.
  5145. - Update to the latest version of tinytest.
  5146. - Improve the tinytest implementation of string operation tests so
  5147. that comparisons with NULL strings no longer crash the tests; they
  5148. now just fail, normally. Fixes bug 9004; bugfix on
  5149. - New macros in test.h to simplify writing mock-functions for unit
  5150. tests. Part of ticket 11507. Patch from Dana Koch.
  5151. - We now have rudimentary function mocking support that our unit
  5152. tests can use to test functions in isolation. Function mocking
  5153. lets the tests temporarily replace a function's dependencies with
  5154. stub functions, so that the tests can check the function without
  5155. invoking the other functions it calls.
  5156. o Testing:
  5157. - Complete tests for the status.c module. Resolves ticket 11507.
  5158. Patch from Dana Koch.
  5159. - Add more unit tests for the <circid,channel>->circuit map, and
  5160. the destroy-cell-tracking code to fix bug 7912.
  5161. - Unit tests for failing cases of the TAP onion handshake.
  5162. - More unit tests for address-manipulation functions.
  5163. o Distribution (systemd):
  5164. - Include a tor.service file in contrib/dist for use with systemd.
  5165. Some distributions will be able to use this file unmodified;
  5166. others will need to tweak it, or write their own. Patch from Jamie
  5167. Nguyen; resolves ticket 8368.
  5168. - Verify configuration file via ExecStartPre in the systemd unit
  5169. file. Patch from intrigeri; resolves ticket 12730.
  5170. - Explicitly disable RunAsDaemon in the systemd unit file. Our
  5171. current systemd unit uses "Type = simple", so systemd does not
  5172. expect tor to fork. If the user has "RunAsDaemon 1" in their
  5173. torrc, then things won't work as expected. This is e.g. the case
  5174. on Debian (and derivatives), since there we pass "--defaults-torrc
  5175. /usr/share/tor/tor-service-defaults-torrc" (that contains
  5176. "RunAsDaemon 1") by default. Patch by intrigeri; resolves
  5177. ticket 12731.
  5178. Changes in version - 2014-10-20
  5179. Tor disables SSL3 in response to the recent "POODLE" attack
  5180. (even though POODLE does not affect Tor). It also works around a crash
  5181. bug caused by some operating systems' response to the "POODLE" attack
  5182. (which does affect Tor).
  5183. o Major security fixes (also in
  5184. - Disable support for SSLv3. All versions of OpenSSL in use with Tor
  5185. today support TLS 1.0 or later, so we can safely turn off support
  5186. for this old (and insecure) protocol. Fixes bug 13426.
  5187. o Major bugfixes (openssl bug workaround, also in
  5188. - Avoid crashing when using OpenSSL version 0.9.8zc, 1.0.0o, or
  5189. 1.0.1j, built with the 'no-ssl3' configuration option. Fixes bug
  5190. 13471. This is a workaround for an OpenSSL bug.
  5191. Changes in version - 2014-09-22
  5192. Tor fixes a bug that affects consistency and speed when
  5193. connecting to hidden services, and it updates the location of one of
  5194. the directory authorities.
  5195. o Major bugfixes:
  5196. - Clients now send the correct address for their chosen rendezvous
  5197. point when trying to access a hidden service. They used to send
  5198. the wrong address, which would still work some of the time because
  5199. they also sent the identity digest of the rendezvous point, and if
  5200. the hidden service happened to try connecting to the rendezvous
  5201. point from a relay that already had a connection open to it,
  5202. the relay would reuse that connection. Now connections to hidden
  5203. services should be more robust and faster. Also, this bug meant
  5204. that clients were leaking to the hidden service whether they were
  5205. on a little-endian (common) or big-endian (rare) system, which for
  5206. some users might have reduced their anonymity. Fixes bug 13151;
  5207. bugfix on
  5208. o Directory authority changes:
  5209. - Change IP address for gabelmoo (v3 directory authority).
  5210. o Minor features (geoip):
  5211. - Update geoip and geoip6 to the August 7 2014 Maxmind GeoLite2
  5212. Country database.
  5213. Changes in version - 2014-07-28
  5214. Tor brings us a big step closer to slowing down the risk from
  5215. guard rotation, and also backports several important fixes from the
  5216. Tor 0.2.5 alpha release series.
  5217. o Major features:
  5218. - Clients now look at the "usecreatefast" consensus parameter to
  5219. decide whether to use CREATE_FAST or CREATE cells for the first hop
  5220. of their circuit. This approach can improve security on connections
  5221. where Tor's circuit handshake is stronger than the available TLS
  5222. connection security levels, but the tradeoff is more computational
  5223. load on guard relays. Implements proposal 221. Resolves ticket 9386.
  5224. - Make the number of entry guards configurable via a new
  5225. NumEntryGuards consensus parameter, and the number of directory
  5226. guards configurable via a new NumDirectoryGuards consensus
  5227. parameter. Implements ticket 12688.
  5228. o Major bugfixes:
  5229. - Fix a bug in the bounds-checking in the 32-bit curve25519-donna
  5230. implementation that caused incorrect results on 32-bit
  5231. implementations when certain malformed inputs were used along with
  5232. a small class of private ntor keys. This bug does not currently
  5233. appear to allow an attacker to learn private keys or impersonate a
  5234. Tor server, but it could provide a means to distinguish 32-bit Tor
  5235. implementations from 64-bit Tor implementations. Fixes bug 12694;
  5236. bugfix on Bug found by Robert Ransom; fix from
  5237. Adam Langley.
  5238. o Minor bugfixes:
  5239. - Warn and drop the circuit if we receive an inbound 'relay early'
  5240. cell. Those used to be normal to receive on hidden service circuits
  5241. due to bug 1038, but the buggy Tor versions are long gone from
  5242. the network so we can afford to resume watching for them. Resolves
  5243. the rest of bug 1038; bugfix on
  5244. - Correct a confusing error message when trying to extend a circuit
  5245. via the control protocol but we don't know a descriptor or
  5246. microdescriptor for one of the specified relays. Fixes bug 12718;
  5247. bugfix on
  5248. - Avoid an illegal read from stack when initializing the TLS
  5249. module using a version of OpenSSL without all of the ciphers
  5250. used by the v2 link handshake. Fixes bug 12227; bugfix on
  5251. Found by "starlight".
  5252. o Minor features:
  5253. - Update geoip and geoip6 to the July 10 2014 Maxmind GeoLite2
  5254. Country database.
  5255. Changes in version - 2014-05-16
  5256. Tor backports numerous high-priority fixes from the Tor 0.2.5
  5257. alpha release series. These include blocking all authority signing
  5258. keys that may have been affected by the OpenSSL "heartbleed" bug,
  5259. choosing a far more secure set of TLS ciphersuites by default, closing
  5260. a couple of memory leaks that could be used to run a target relay out
  5261. of RAM, and several others.
  5262. o Major features (security, backport from
  5263. - Block authority signing keys that were used on authorities
  5264. vulnerable to the "heartbleed" bug in OpenSSL (CVE-2014-0160). (We
  5265. don't have any evidence that these keys _were_ compromised; we're
  5266. doing this to be prudent.) Resolves ticket 11464.
  5267. o Major bugfixes (security, OOM):
  5268. - Fix a memory leak that could occur if a microdescriptor parse
  5269. fails during the tokenizing step. This bug could enable a memory
  5270. exhaustion attack by directory servers. Fixes bug 11649; bugfix
  5271. on
  5272. o Major bugfixes (TLS cipher selection, backport from
  5273. - The relay ciphersuite list is now generated automatically based on
  5274. uniform criteria, and includes all OpenSSL ciphersuites with
  5275. acceptable strength and forward secrecy. Previously, we had left
  5276. some perfectly fine ciphersuites unsupported due to omission or
  5277. typo. Resolves bugs 11513, 11492, 11498, 11499. Bugs reported by
  5278. 'cypherpunks'. Bugfix on
  5279. - Relays now trust themselves to have a better view than clients of
  5280. which TLS ciphersuites are better than others. (Thanks to bug
  5281. 11513, the relay list is now well-considered, whereas the client
  5282. list has been chosen mainly for anti-fingerprinting purposes.)
  5283. Relays prefer: AES over 3DES; then ECDHE over DHE; then GCM over
  5284. CBC; then SHA384 over SHA256 over SHA1; and last, AES256 over
  5285. AES128. Resolves ticket 11528.
  5286. - Clients now try to advertise the same list of ciphersuites as
  5287. Firefox 28. This change enables selection of (fast) GCM
  5288. ciphersuites, disables some strange old ciphers, and stops
  5289. advertising the ECDH (not to be confused with ECDHE) ciphersuites.
  5290. Resolves ticket 11438.
  5291. o Minor bugfixes (configuration, security):
  5292. - When running a hidden service, do not allow TunneledDirConns 0:
  5293. trying to set that option together with a hidden service would
  5294. otherwise prevent the hidden service from running, and also make
  5295. it publish its descriptors directly over HTTP. Fixes bug 10849;
  5296. bugfix on
  5297. o Minor bugfixes (controller, backport from
  5298. - Avoid sending a garbage value to the controller when a circuit is
  5299. cannibalized. Fixes bug 11519; bugfix on
  5300. o Minor bugfixes (exit relay, backport from
  5301. - Stop leaking memory when we successfully resolve a PTR record.
  5302. Fixes bug 11437; bugfix on
  5303. o Minor bugfixes (bridge client, backport from
  5304. - Avoid 60-second delays in the bootstrapping process when Tor is
  5305. launching for a second time while using bridges. Fixes bug 9229;
  5306. bugfix on
  5307. o Minor bugfixes (relays and bridges, backport from
  5308. - Give the correct URL in the warning message when trying to run a
  5309. relay on an ancient version of Windows. Fixes bug 9393.
  5310. o Minor bugfixes (compilation):
  5311. - Fix a compilation error when compiling with --disable-curve25519.
  5312. Fixes bug 9700; bugfix on
  5313. o Minor bugfixes:
  5314. - Downgrade the warning severity for the the "md was still
  5315. referenced 1 node(s)" warning. Tor has better code
  5316. for trying to diagnose this bug, and the current warning in
  5317. earlier versions of tor achieves nothing useful. Addresses warning
  5318. from bug 7164.
  5319. o Minor features (log verbosity, backport from
  5320. - When we run out of usable circuit IDs on a channel, log only one
  5321. warning for the whole channel, and describe how many circuits
  5322. there were on the channel. Fixes part of ticket 11553.
  5323. o Minor features (security, backport from
  5324. - Decrease the lower limit of MaxMemInCellQueues to 256 MBytes (but
  5325. leave the default at 8GBytes), to better support Raspberry Pi
  5326. users. Fixes bug 9686; bugfix on
  5327. o Documentation (backport from
  5328. - Correctly document that we search for a system torrc file before
  5329. looking in ~/.torrc. Fixes documentation side of 9213; bugfix on
  5331. Changes in version - 2014-02-28
  5332. Tor further improves security against potential adversaries who
  5333. find breaking 1024-bit crypto doable, and backports several stability
  5334. and robustness patches from the 0.2.5 branch.
  5335. o Major features (client security):
  5336. - When we choose a path for a 3-hop circuit, make sure it contains
  5337. at least one relay that supports the NTor circuit extension
  5338. handshake. Otherwise, there is a chance that we're building
  5339. a circuit that's worth attacking by an adversary who finds
  5340. breaking 1024-bit crypto doable, and that chance changes the game
  5341. theory. Implements ticket 9777.
  5342. o Major bugfixes:
  5343. - Do not treat streams that fail with reason
  5344. END_STREAM_REASON_INTERNAL as indicating a definite circuit failure,
  5345. since it could also indicate an ENETUNREACH connection error. Fixes
  5346. part of bug 10777; bugfix on
  5347. o Code simplification and refactoring:
  5348. - Remove data structures which were introduced to implement the
  5349. CellStatistics option: they are now redundant with the new timestamp
  5350. field in the regular packed_cell_t data structure, which we did
  5351. in in order to resolve bug 9093. Resolves ticket 10870.
  5352. o Minor features:
  5353. - Always clear OpenSSL bignums before freeing them -- even bignums
  5354. that don't contain secrets. Resolves ticket 10793. Patch by
  5355. Florent Daigniere.
  5356. - Build without warnings under clang 3.4. (We have some macros that
  5357. define static functions only some of which will get used later in
  5358. the module. Starting with clang 3.4, these give a warning unless the
  5359. unused attribute is set on them.) Resolves ticket 10904.
  5360. - Update geoip and geoip6 files to the February 7 2014 Maxmind
  5361. GeoLite2 Country database.
  5362. o Minor bugfixes:
  5363. - Set the listen() backlog limit to the largest actually supported
  5364. on the system, not to the value in a header file. Fixes bug 9716;
  5365. bugfix on every released Tor.
  5366. - Treat ENETUNREACH, EACCES, and EPERM connection failures at an
  5367. exit node as a NOROUTE error, not an INTERNAL error, since they
  5368. can apparently happen when trying to connect to the wrong sort
  5369. of netblocks. Fixes part of bug 10777; bugfix on
  5370. - Fix build warnings about missing "a2x" comment when building the
  5371. manpages from scratch on OpenBSD; OpenBSD calls it "".
  5372. Fixes bug 10929; bugfix on Patch from Dana Koch.
  5373. - Avoid a segfault on SIGUSR1, where we had freed a connection but did
  5374. not entirely remove it from the connection lists. Fixes bug 9602;
  5375. bugfix on
  5376. - Fix a segmentation fault in our benchmark code when running with
  5377. Fedora's OpenSSL package, or any other OpenSSL that provides
  5378. ECDH but not P224. Fixes bug 10835; bugfix on
  5379. - Turn "circuit handshake stats since last time" log messages into a
  5380. heartbeat message. Fixes bug 10485; bugfix on
  5381. o Documentation fixes:
  5382. - Document that all but one DirPort entry must have the NoAdvertise
  5383. flag set. Fixes bug 10470; bugfix on /
  5384. Changes in version - 2013-12-22
  5385. Tor fixes potentially poor random number generation for users
  5386. who 1) use OpenSSL 1.0.0 or later, 2) set "HardwareAccel 1" in their
  5387. torrc file, 3) have "Sandy Bridge" or "Ivy Bridge" Intel processors,
  5388. and 4) have no state file in their DataDirectory (as would happen on
  5389. first start). Users who generated relay or hidden service identity
  5390. keys in such a situation should discard them and generate new ones.
  5391. This release also fixes a logic error that caused Tor clients to build
  5392. many more preemptive circuits than they actually need.
  5393. o Major bugfixes:
  5394. - Do not allow OpenSSL engines to replace the PRNG, even when
  5395. HardwareAccel is set. The only default builtin PRNG engine uses
  5396. the Intel RDRAND instruction to replace the entire PRNG, and
  5397. ignores all attempts to seed it with more entropy. That's
  5398. cryptographically stupid: the right response to a new alleged
  5399. entropy source is never to discard all previously used entropy
  5400. sources. Fixes bug 10402; works around behavior introduced in
  5401. OpenSSL 1.0.0. Diagnosis and investigation thanks to "coderman"
  5402. and "rl1987".
  5403. - Fix assertion failure when AutomapHostsOnResolve yields an IPv6
  5404. address. Fixes bug 10465; bugfix on
  5405. - Avoid launching spurious extra circuits when a stream is pending.
  5406. This fixes a bug where any circuit that _wasn't_ unusable for new
  5407. streams would be treated as if it were, causing extra circuits to
  5408. be launched. Fixes bug 10456; bugfix on
  5409. o Minor bugfixes:
  5410. - Avoid a crash bug when starting with a corrupted microdescriptor
  5411. cache file. Fixes bug 10406; bugfix on
  5412. - If we fail to dump a previously cached microdescriptor to disk, avoid
  5413. freeing duplicate data later on. Fixes bug 10423; bugfix on
  5414. Spotted by "bobnomnom".
  5415. Changes in version - 2013-12-11
  5416. The Tor 0.2.4 release series is dedicated to the memory of Aaron Swartz
  5417. (1986-2013). Aaron worked on diverse projects including helping to guide
  5418. Creative Commons, playing a key role in stopping SOPA/PIPA, bringing
  5419. transparency to the U.S government's PACER documents, and contributing
  5420. design and development for Tor and Tor2Web. Aaron was one of the latest
  5421. martyrs in our collective fight for civil liberties and human rights,
  5422. and his death is all the more painful because he was one of us.
  5423. Tor, the first stable release in the 0.2.4 branch, features
  5424. a new circuit handshake and link encryption that use ECC to provide
  5425. better security and efficiency; makes relays better manage circuit
  5426. creation requests; uses "directory guards" to reduce client enumeration
  5427. risks; makes bridges collect and report statistics about the pluggable
  5428. transports they support; cleans up and improves our geoip database;
  5429. gets much closer to IPv6 support for clients, bridges, and relays; makes
  5430. directory authorities use measured bandwidths rather than advertised
  5431. ones when computing flags and thresholds; disables client-side DNS
  5432. caching to reduce tracking risks; and fixes a big bug in bridge
  5433. reachability testing. This release introduces two new design
  5434. abstractions in the code: a new "channel" abstraction between circuits
  5435. and or_connections to allow for implementing alternate relay-to-relay
  5436. transports, and a new "circuitmux" abstraction storing the queue of
  5437. circuits for a channel. The release also includes many stability,
  5438. security, and privacy fixes.
  5439. o Major features (new circuit handshake):
  5440. - Tor now supports a new circuit extension handshake designed by Ian
  5441. Goldberg, Douglas Stebila, and Berkant Ustaoglu. Our original
  5442. circuit extension handshake, later called "TAP", was a bit slow
  5443. (especially on the relay side), had a fragile security proof, and
  5444. used weaker keys than we'd now prefer. The new circuit handshake
  5445. uses Dan Bernstein's "curve25519" elliptic-curve Diffie-Hellman
  5446. function, making it significantly more secure than the older
  5447. handshake, and significantly faster. Tor can use one of two built-in
  5448. pure-C curve25519-donna implementations by Adam Langley, or it
  5449. can link against the "nacl" library for a tuned version if present.
  5450. The built-in version is very fast for 64-bit systems when building
  5451. with GCC. The built-in 32-bit version is still faster than the
  5452. old TAP protocol, but using libnacl is better on most such hosts.
  5453. Implements proposal 216; closes ticket 7202.
  5454. o Major features (better link encryption):
  5455. - Relays can now enable the ECDHE TLS ciphersuites when available
  5456. and appropriate. These ciphersuites let us negotiate forward-secure
  5457. TLS secret keys more safely and more efficiently than with our
  5458. previous use of Diffie-Hellman modulo a 1024-bit prime. By default,
  5459. public relays prefer the (faster) P224 group, and bridges prefer
  5460. the (more common) P256 group; you can override this with the
  5461. TLSECGroup option.
  5462. This feature requires clients running or later,
  5463. and requires both sides to be running OpenSSL 1.0.0 or later
  5464. with ECC support. OpenSSL 1.0.1, with the compile-time option
  5465. "enable-ec_nistp_64_gcc_128", is highly recommended.
  5466. Implements the relay side of proposal 198; closes ticket 7200.
  5467. - Re-enable TLS 1.1 and 1.2 when built with OpenSSL 1.0.1e or later.
  5468. Resolves ticket 6055. (OpenSSL before 1.0.1 didn't have TLS 1.1 or
  5469. 1.2, and OpenSSL from 1.0.1 through 1.0.1d had bugs that prevented
  5470. renegotiation from working with TLS 1.1 or 1.2, so we had disabled
  5471. them to solve bug 6033.)
  5472. o Major features (relay performance):
  5473. - Instead of limiting the number of queued onionskins (aka circuit
  5474. create requests) to a fixed, hard-to-configure number, we limit
  5475. the size of the queue based on how many we expect to be able to
  5476. process in a given amount of time. We estimate the time it will
  5477. take to process an onionskin based on average processing time
  5478. of previous onionskins. Closes ticket 7291. You'll never have to
  5479. configure MaxOnionsPending again.
  5480. - Relays process the new "NTor" circuit-level handshake requests
  5481. with higher priority than the old "TAP" circuit-level handshake
  5482. requests. We still process some TAP requests to not totally starve
  5483. 0.2.3 clients when NTor becomes popular. A new consensus parameter
  5484. "NumNTorsPerTAP" lets us tune the balance later if we need to.
  5485. Implements ticket 9574.
  5486. o Major features (client bootstrapping resilience):
  5487. - Add a new "FallbackDir" torrc option to use when we can't use
  5488. a directory mirror from the consensus (either because we lack a
  5489. consensus, or because they're all down). Currently, all authorities
  5490. are fallbacks by default, and there are no other default fallbacks,
  5491. but that will change. This option will allow us to give clients a
  5492. longer list of servers to try to get a consensus from when first
  5493. connecting to the Tor network, and thereby reduce load on the
  5494. directory authorities. Implements proposal 206, "Preconfigured
  5495. directory sources for bootstrapping". We also removed the old
  5496. "FallbackNetworkstatus" option, since we never got it working well
  5497. enough to use it. Closes bug 572.
  5498. - If we have no circuits open, use a relaxed timeout (the
  5499. 95th-percentile cutoff) until a circuit succeeds. This heuristic
  5500. should allow Tor to succeed at building circuits even when the
  5501. network connection drastically changes. Should help with bug 3443.
  5502. o Major features (use of guards):
  5503. - Support directory guards (proposal 207): when possible, clients now
  5504. use their entry guards for non-anonymous directory requests. This
  5505. can help prevent client enumeration. Note that this behavior only
  5506. works when we have a usable consensus directory, and when options
  5507. about what to download are more or less standard. In the future we
  5508. should re-bootstrap from our guards, rather than re-bootstrapping
  5509. from the preconfigured list of directory sources that ships with
  5510. Tor. Resolves ticket 6526.
  5511. - Raise the default time that a client keeps an entry guard from
  5512. "1-2 months" to "2-3 months", as suggested by Tariq Elahi's WPES
  5513. 2012 paper. (We would make it even longer, but we need better client
  5514. load balancing first.) Also, make the guard lifetime controllable
  5515. via a new GuardLifetime torrc option and a GuardLifetime consensus
  5516. parameter. Start of a fix for bug 8240; bugfix on
  5517. o Major features (bridges with pluggable transports):
  5518. - Bridges now report the pluggable transports they support to the
  5519. bridge authority, so it can pass the supported transports on to
  5520. bridgedb and/or eventually do reachability testing. Implements
  5521. ticket 3589.
  5522. - Automatically forward the TCP ports of pluggable transport
  5523. proxies using tor-fw-helper if PortForwarding is enabled. Implements
  5524. ticket 4567.
  5525. o Major features (geoip database):
  5526. - Maxmind began labelling Tor relays as being in country "A1",
  5527. which breaks by-country node selection inside Tor. Now we use a
  5528. script to replace "A1" ("Anonymous Proxy") entries in our geoip
  5529. file with real country codes. This script fixes about 90% of "A1"
  5530. entries automatically and uses manual country code assignments to
  5531. fix the remaining 10%. See src/config/README.geoip for details.
  5532. Fixes bug 6266.
  5533. - Add GeoIP database for IPv6 addresses. The new config option
  5534. is GeoIPv6File.
  5535. - Update to the October 2 2013 Maxmind GeoLite Country database.
  5536. o Major features (IPv6):
  5537. - Clients who set "ClientUseIPv6 1" may connect to entry nodes over
  5538. IPv6. Set "ClientPreferIPv6ORPort 1" to make this even more likely
  5539. to happen. Implements ticket 5535.
  5540. - All kind of relays, not just bridges, can now advertise an IPv6
  5541. OR port. Implements ticket 6362.
  5542. - Relays can now exit to IPv6 addresses: make sure that you have IPv6
  5543. connectivity, then set the IPv6Exit flag to 1. Also make sure your
  5544. exit policy reads as you would like: the address * applies to all
  5545. address families, whereas *4 is IPv4 address only, and *6 is IPv6
  5546. addresses only. On the client side, you'll need to wait for enough
  5547. exits to support IPv6, apply the "IPv6Traffic" flag to a SocksPort,
  5548. and use Socks5. Closes ticket 5547, implements proposal 117 as
  5549. revised in proposal 208.
  5550. - Bridge authorities now accept IPv6 bridge addresses and include
  5551. them in network status documents. Implements ticket 5534.
  5552. - Directory authorities vote on IPv6 OR ports. Implements ticket 6363.
  5553. o Major features (directory authorities):
  5554. - Directory authorities now prefer using measured bandwidths to
  5555. advertised ones when computing flags and thresholds. Resolves
  5556. ticket 8273.
  5557. - Directory authorities that vote measured bandwidths about more
  5558. than a threshold number of relays now treat relays with
  5559. unmeasured bandwidths as having bandwidth 0 when computing their
  5560. flags. Resolves ticket 8435.
  5561. - Directory authorities now support a new consensus method (17)
  5562. where they cap the published bandwidth of relays for which
  5563. insufficient bandwidth measurements exist. Fixes part of bug 2286.
  5564. - Directory authorities that set "DisableV2DirectoryInfo_ 1" no longer
  5565. serve any v2 directory information. Now we can test disabling the
  5566. old deprecated v2 directory format, and see whether doing so has
  5567. any effect on network load. Begins to fix bug 6783.
  5568. o Major features (build and portability):
  5569. - Switch to a nonrecursive Makefile structure. Now instead of each
  5570. invoking other's, there is a master
  5571. that includes the others. This change makes our build
  5572. process slightly more maintainable, and improves parallelism for
  5573. building with make -j. Original patch by Stewart Smith; various
  5574. fixes by Jim Meyering.
  5575. - Where available, we now use automake's "silent" make rules by
  5576. default, so that warnings are easier to spot. You can get the old
  5577. behavior with "make V=1". Patch by Stewart Smith for ticket 6522.
  5578. - Resume building correctly with MSVC and Makefile.nmake. This patch
  5579. resolves numerous bugs and fixes reported by ultramage, including
  5580. 7305, 7308, 7309, 7310, 7312, 7313, 7315, 7316, and 7669.
  5581. o Security features:
  5582. - Switch to a completely time-invariant approach for picking nodes
  5583. weighted by bandwidth. Our old approach would run through the
  5584. part of the loop after it had made its choice slightly slower
  5585. than it ran through the part of the loop before it had made its
  5586. choice. Addresses ticket 6538.
  5587. - Disable the use of Guard nodes when in Tor2WebMode. Guard usage
  5588. by tor2web clients allows hidden services to identify tor2web
  5589. clients through their repeated selection of the same rendezvous
  5590. and introduction point circuit endpoints (their guards). Resolves
  5591. ticket 6888.
  5592. o Major bugfixes (relay denial of service):
  5593. - When we have too much memory queued in circuits (according to a new
  5594. MaxMemInCellQueues option), close the circuits that have the oldest
  5595. queued cells, on the theory that those are most responsible for
  5596. us running low on memory. This prevents us from running out of
  5597. memory as a relay if circuits fill up faster than they can be
  5598. drained. Fixes bugs 9063 and 9093; bugfix on the 54th commit of
  5599. Tor. This bug is a further fix beyond bug 6252, whose fix was
  5600. merged into
  5601. - Reject bogus create and relay cells with 0 circuit ID or 0 stream
  5602. ID: these could be used to create unexpected streams and circuits
  5603. which would count as "present" to some parts of Tor but "absent"
  5604. to others, leading to zombie circuits and streams or to a bandwidth
  5605. denial-of-service. Fixes bug 7889; bugfix on every released version
  5606. of Tor. Reported by "oftc_must_be_destroyed".
  5607. - Avoid a bug where our response to TLS renegotiation under certain
  5608. network conditions could lead to a busy-loop, with 100% CPU
  5609. consumption. Fixes bug 5650; bugfix on
  5610. o Major bugfixes (asserts, crashes, leaks):
  5611. - Prevent the get_freelists() function from running off the end of
  5612. the list of freelists if it somehow gets an unrecognized
  5613. allocation. Fixes bug 8844; bugfix on Reported by
  5614. eugenis.
  5615. - Avoid a memory leak where we would leak a consensus body when we
  5616. find that a consensus which we couldn't previously verify due to
  5617. missing certificates is now verifiable. Fixes bug 8719; bugfix
  5618. on
  5619. - If we are unable to save a microdescriptor to the journal, do not
  5620. drop it from memory and then reattempt downloading it. Fixes bug
  5621. 9645; bugfix on
  5622. - Fix an assertion failure that would occur when disabling the
  5623. ORPort setting on a running Tor process while accounting was
  5624. enabled. Fixes bug 6979; bugfix on
  5625. - Avoid an assertion failure on OpenBSD (and perhaps other BSDs)
  5626. when an exit connection with optimistic data succeeds immediately
  5627. rather than returning EINPROGRESS. Fixes bug 9017; bugfix on
  5629. - Fix a memory leak that would occur whenever a configuration
  5630. option changed. Fixes bug 8718; bugfix on
  5631. o Major bugfixes (relay rate limiting):
  5632. - When a TLS write is partially successful but incomplete, remember
  5633. that the flushed part has been flushed, and notice that bytes were
  5634. actually written. Reported and fixed pseudonymously. Fixes bug 7708;
  5635. bugfix on Tor
  5636. - Raise the default BandwidthRate/BandwidthBurst values from 5MB/10MB
  5637. to 1GB/1GB. The previous defaults were intended to be "basically
  5638. infinite", but it turns out they're now limiting our 100mbit+
  5639. relays and bridges. Fixes bug 6605; bugfix on (the
  5640. last time we raised it).
  5641. - No longer stop reading or writing on cpuworker connections when
  5642. our rate limiting buckets go empty. Now we should handle circuit
  5643. handshake requests more promptly. Resolves bug 9731.
  5644. o Major bugfixes (client-side privacy):
  5645. - When we mark a circuit as unusable for new circuits, have it
  5646. continue to be unusable for new circuits even if MaxCircuitDirtiness
  5647. is increased too much at the wrong time, or the system clock jumps
  5648. backwards. Fixes bug 6174; bugfix on 0.0.2pre26.
  5649. - If ClientDNSRejectInternalAddresses ("do not believe DNS queries
  5650. which have resolved to internal addresses") is set, apply that
  5651. rule to IPv6 as well. Fixes bug 8475; bugfix on
  5652. - When an exit relay rejects a stream with reason "exit policy", but
  5653. we only know an exit policy summary (e.g. from the microdesc
  5654. consensus) for it, do not mark the relay as useless for all exiting.
  5655. Instead, mark just the circuit as unsuitable for that particular
  5656. address. Fixes part of bug 7582; bugfix on
  5657. o Major bugfixes (stream isolation):
  5658. - Allow applications to get proper stream isolation with
  5659. IsolateSOCKSAuth. Many SOCKS5 clients that want to offer
  5660. username/password authentication also offer "no authentication". Tor
  5661. had previously preferred "no authentication", so the applications
  5662. never actually sent Tor their auth details. Now Tor selects
  5663. username/password authentication if it's offered. You can disable
  5664. this behavior on a per-SOCKSPort basis via PreferSOCKSNoAuth. Fixes
  5665. bug 8117; bugfix on
  5666. - Follow the socks5 protocol when offering username/password
  5667. authentication. The fix for bug 8117 exposed this bug, and it
  5668. turns out real-world applications like Pidgin do care. Bugfix on
  5669.; fixes bug 8879.
  5670. o Major bugfixes (client circuit building):
  5671. - Alter circuit build timeout measurement to start at the point
  5672. where we begin the CREATE/CREATE_FAST step (as opposed to circuit
  5673. initialization). This should make our timeout measurements more
  5674. uniform. Previously, we were sometimes including ORconn setup time
  5675. in our circuit build time measurements. Should resolve bug 3443.
  5676. - If the circuit build timeout logic is disabled (via the consensus,
  5677. or because we are an authority), then don't build testing circuits.
  5678. Fixes bug 9657; bugfix on
  5679. o Major bugfixes (client-side DNS):
  5680. - Turn off the client-side DNS cache by default. Updating and using
  5681. the DNS cache is now configurable on a per-client-port
  5682. level. SOCKSPort, DNSPort, etc lines may now contain
  5683. {No,}Cache{IPv4,IPv6,}DNS lines to indicate that we shouldn't
  5684. cache these types of DNS answers when we receive them from an
  5685. exit node in response to an application request on this port, and
  5686. {No,}UseCached{IPv4,IPv6,DNS} lines to indicate that if we have
  5687. cached DNS answers of these types, we shouldn't use them. It's
  5688. potentially risky to use cached DNS answers at the client, since
  5689. doing so can indicate to one exit what answers we've gotten
  5690. for DNS lookups in the past. With IPv6, this becomes especially
  5691. problematic. Using cached DNS answers for requests on the same
  5692. circuit would present less linkability risk, since all traffic
  5693. on a circuit is already linkable, but it would also provide
  5694. little performance benefit: the exit node caches DNS replies
  5695. too. Implements a simplified version of Proposal 205. Implements
  5696. ticket 7570.
  5697. o Major bugfixes (hidden service privacy):
  5698. - Limit hidden service descriptors to at most ten introduction
  5699. points, to slow one kind of guard enumeration. Fixes bug 9002;
  5700. bugfix on
  5701. o Major bugfixes (directory fetching):
  5702. - If the time to download the next old-style networkstatus is in
  5703. the future, do not decline to consider whether to download the
  5704. next microdescriptor networkstatus. Fixes bug 9564; bugfix on
  5706. - We used to always request authority certificates by identity digest,
  5707. meaning we'd get the newest one even when we wanted one with a
  5708. different signing key. Then we would complain about being given
  5709. a certificate we already had, and never get the one we really
  5710. wanted. Now we use the "fp-sk/" resource as well as the "fp/"
  5711. resource to request the one we want. Fixes bug 5595; bugfix on
  5713. o Major bugfixes (bridge reachability):
  5714. - Bridges now send AUTH_CHALLENGE cells during their v3 handshakes;
  5715. previously they did not, which prevented them from receiving
  5716. successful connections from relays for self-test or bandwidth
  5717. testing. Also, when a relay is extending a circuit to a bridge,
  5718. it needs to send a NETINFO cell, even when the bridge hasn't sent
  5719. an AUTH_CHALLENGE cell. Fixes bug 9546; bugfix on
  5720. o Major bugfixes (control interface):
  5721. - When receiving a new configuration file via the control port's
  5722. LOADCONF command, do not treat the defaults file as absent.
  5723. Fixes bug 9122; bugfix on
  5724. o Major bugfixes (directory authorities):
  5725. - Stop marking every relay as having been down for one hour every
  5726. time we restart a directory authority. These artificial downtimes
  5727. were messing with our Stable and Guard flag calculations. Fixes
  5728. bug 8218 (introduced by the fix for 1035). Bugfix on
  5729. - When computing directory thresholds, ignore any rejected-as-sybil
  5730. nodes during the computation so that they can't influence Fast,
  5731. Guard, etc. (We should have done this for proposal 109.) Fixes
  5732. bug 8146.
  5733. - When marking a node as a likely sybil, reset its uptime metrics
  5734. to zero, so that it cannot time towards getting marked as Guard,
  5735. Stable, or HSDir. (We should have done this for proposal 109.) Fixes
  5736. bug 8147.
  5737. - Fix a bug in the voting algorithm that could yield incorrect results
  5738. when a non-naming authority declared too many flags. Fixes bug 9200;
  5739. bugfix on
  5740. o Internal abstraction features:
  5741. - Introduce new channel_t abstraction between circuits and
  5742. or_connection_t to allow for implementing alternate OR-to-OR
  5743. transports. A channel_t is an abstract object which can either be a
  5744. cell-bearing channel, which is responsible for authenticating and
  5745. handshaking with the remote OR and transmitting cells to and from
  5746. it, or a listening channel, which spawns new cell-bearing channels
  5747. at the request of remote ORs. Implements part of ticket 6465.
  5748. - Make a channel_tls_t subclass of channel_t, adapting it to the
  5749. existing or_connection_t code. The V2/V3 protocol handshaking
  5750. code which formerly resided in command.c has been moved below the
  5751. channel_t abstraction layer and may be found in channeltls.c now.
  5752. Implements the rest of ticket 6465.
  5753. - Introduce new circuitmux_t storing the queue of circuits for
  5754. a channel; this encapsulates and abstracts the queue logic and
  5755. circuit selection policy, and allows the latter to be overridden
  5756. easily by switching out a policy object. The existing EWMA behavior
  5757. is now implemented as a circuitmux_policy_t. Resolves ticket 6816.
  5758. o New build requirements:
  5759. - Tor now requires OpenSSL 0.9.8 or later. OpenSSL 1.0.0 or later is
  5760. strongly recommended.
  5761. - Tor maintainers now require Automake version 1.9 or later to build
  5762. Tor from the Git repository. (Automake is not required when building
  5763. from a source distribution.)
  5764. o Minor features (protocol):
  5765. - No longer include the "opt" prefix when generating routerinfos
  5766. or v2 directories: it has been needless since Tor 0.1.2. Closes
  5767. ticket 5124.
  5768. - Reject EXTEND cells sent to nonexistent streams. According to the
  5769. spec, an EXTEND cell sent to _any_ nonzero stream ID is invalid, but
  5770. we were only checking for stream IDs that were currently in use.
  5771. Found while hunting for more instances of bug 6271. Bugfix on
  5772. 0.0.2pre8, which introduced incremental circuit construction.
  5773. - Tor relays and clients now support a better CREATE/EXTEND cell
  5774. format, allowing the sender to specify multiple address, identity,
  5775. and handshake types. Implements Robert Ransom's proposal 200;
  5776. closes ticket 7199.
  5777. - Reject as invalid most directory objects containing a NUL.
  5778. Belt-and-suspender fix for bug 8037.
  5779. o Minor features (security):
  5780. - Clear keys and key-derived material left on the stack in
  5781. rendservice.c and rendclient.c. Check return value of
  5782. crypto_pk_write_private_key_to_string() in rend_service_load_keys().
  5783. These fixes should make us more forward-secure against cold-boot
  5784. attacks and the like. Fixes bug 2385.
  5785. - Use our own weak RNG when we need a weak RNG. Windows's rand() and
  5786. Irix's random() only return 15 bits; Solaris's random() returns more
  5787. bits but its RAND_MAX says it only returns 15, and so on. Motivated
  5788. by the fix for bug 7801; bugfix on
  5789. o Minor features (control protocol):
  5790. - Add a "GETINFO signal/names" control port command. Implements
  5791. ticket 3842.
  5792. - Provide default values for all options via "GETINFO config/defaults".
  5793. Implements ticket 4971.
  5794. - Allow an optional $ before the node identity digest in the
  5795. controller command GETINFO ns/id/<identity>, for consistency with
  5796. md/id/<identity> and desc/id/<identity>. Resolves ticket 7059.
  5797. - Add CACHED keyword to ADDRMAP events in the control protocol
  5798. to indicate whether a DNS result will be cached or not. Resolves
  5799. ticket 8596.
  5800. - Generate bootstrapping status update events correctly when fetching
  5801. microdescriptors. Fixes bug 9927.
  5802. o Minor features (path selection):
  5803. - When deciding whether we have enough descriptors to build circuits,
  5804. instead of looking at raw relay counts, look at which fraction
  5805. of (bandwidth-weighted) paths we're able to build. This approach
  5806. keeps clients from building circuits if their paths are likely to
  5807. stand out statistically. The default fraction of paths needed is
  5808. taken from the consensus directory; you can override it with the
  5809. new PathsNeededToBuildCircuits option. Fixes ticket 5956.
  5810. - When any country code is listed in ExcludeNodes or ExcludeExitNodes,
  5811. and we have GeoIP information, also exclude all nodes with unknown
  5812. countries "??" and "A1". This behavior is controlled by the
  5813. new GeoIPExcludeUnknown option: you can make such nodes always
  5814. excluded with "GeoIPExcludeUnknown 1", and disable the feature
  5815. with "GeoIPExcludeUnknown 0". Setting "GeoIPExcludeUnknown auto"
  5816. gets you the default behavior. Implements feature 7706.
  5817. o Minor features (hidden services):
  5818. - Improve circuit build timeout handling for hidden services.
  5819. In particular: adjust build timeouts more accurately depending
  5820. upon the number of hop-RTTs that a particular circuit type
  5821. undergoes. Additionally, launch intro circuits in parallel
  5822. if they timeout, and take the first one to reply as valid.
  5823. - The Tor client now ignores sub-domain components of a .onion
  5824. address. This change makes HTTP "virtual" hosting
  5825. possible: http://foo.aaaaaaaaaaaaaaaa.onion/ and
  5826. http://bar.aaaaaaaaaaaaaaaa.onion/ can be two different websites
  5827. hosted on the same hidden service. Implements proposal 204.
  5828. - Enable Tor to read configuration, state, and key information from
  5829. a FIFO. Previously Tor would only read from files with a positive
  5830. stat.st_size. Code from meejah; fixes bug 6044.
  5831. o Minor features (clients):
  5832. - Teach bridge-using clients to avoid 0.2.2.x bridges when making
  5833. microdescriptor-related dir requests, and only fall back to normal
  5834. descriptors if none of their bridges can handle microdescriptors
  5835. (as opposed to the fix in ticket 4013, which caused them to fall
  5836. back to normal descriptors if *any* of their bridges preferred
  5837. them). Resolves ticket 4994.
  5838. - Tweak tor-fw-helper to accept an arbitrary amount of arbitrary
  5839. TCP ports to forward. In the past it only accepted two ports:
  5840. the ORPort and the DirPort.
  5841. o Minor features (protecting client timestamps):
  5842. - Clients no longer send timestamps in their NETINFO cells. These were
  5843. not used for anything, and they provided one small way for clients
  5844. to be distinguished from each other as they moved from network to
  5845. network or behind NAT. Implements part of proposal 222.
  5846. - Clients now round timestamps in INTRODUCE cells down to the nearest
  5847. 10 minutes. If a new Support022HiddenServices option is set to 0, or
  5848. if it's set to "auto" and the feature is disabled in the consensus,
  5849. the timestamp is sent as 0 instead. Implements part of proposal 222.
  5850. - Stop sending timestamps in AUTHENTICATE cells. This is not such
  5851. a big deal from a security point of view, but it achieves no actual
  5852. good purpose, and isn't needed. Implements part of proposal 222.
  5853. - Reduce down accuracy of timestamps in hidden service descriptors.
  5854. Implements part of proposal 222.
  5855. o Minor features (bridges):
  5856. - Make bridge relays check once a minute for whether their IP
  5857. address has changed, rather than only every 15 minutes. Resolves
  5858. bugs 1913 and 1992.
  5859. - Bridge statistics now count bridge clients connecting over IPv6:
  5860. bridge statistics files now list "bridge-ip-versions" and
  5861. extra-info documents list "geoip6-db-digest". The control protocol
  5862. "CLIENTS_SEEN" and "ip-to-country" queries now support IPv6. Initial
  5863. implementation by "shkoo", addressing ticket 5055.
  5864. - Add a new torrc option "ServerTransportListenAddr" to let bridge
  5865. operators select the address where their pluggable transports will
  5866. listen for connections. Resolves ticket 7013.
  5867. - Randomize the lifetime of our SSL link certificate, so censors can't
  5868. use the static value for filtering Tor flows. Resolves ticket 8443;
  5869. related to ticket 4014 which was included in
  5870. o Minor features (relays):
  5871. - Option OutboundBindAddress can be specified multiple times and
  5872. accepts IPv6 addresses. Resolves ticket 6876.
  5873. o Minor features (IPv6, client side):
  5874. - AutomapHostsOnResolve now supports IPv6 addresses. By default, we
  5875. prefer to hand out virtual IPv6 addresses, since there are more of
  5876. them and we can't run out. To override this behavior and make IPv4
  5877. addresses preferred, set NoPreferIPv6Automap on whatever SOCKSPort
  5878. or DNSPort you're using for resolving. Implements ticket 7571.
  5879. - AutomapHostsOnResolve responses are now randomized, to avoid
  5880. annoying situations where Tor is restarted and applications
  5881. connect to the wrong addresses.
  5882. - Never try more than 1000 times to pick a new virtual address when
  5883. AutomapHostsOnResolve is set. That's good enough so long as we
  5884. aren't close to handing out our entire virtual address space;
  5885. if you're getting there, it's best to switch to IPv6 virtual
  5886. addresses anyway.
  5887. o Minor features (IPv6, relay/authority side):
  5888. - New config option "AuthDirHasIPv6Connectivity 1" that directory
  5889. authorities should set if they have IPv6 connectivity and want to
  5890. do reachability tests for IPv6 relays. Implements feature 5974.
  5891. - A relay with an IPv6 OR port now sends that address in NETINFO
  5892. cells (in addition to its other address). Implements ticket 6364.
  5893. o Minor features (directory authorities):
  5894. - Directory authorities no long accept descriptors for any version of
  5895. Tor before, or for any 0.2.3 release before
  5896. These versions are insecure, unsupported, or both. Implements
  5897. ticket 6789.
  5898. - When directory authorities are computing thresholds for flags,
  5899. never let the threshold for the Fast flag fall below 4096
  5900. bytes. Also, do not consider nodes with extremely low bandwidths
  5901. when deciding thresholds for various directory flags. This change
  5902. should raise our threshold for Fast relays, possibly in turn
  5903. improving overall network performance; see ticket 1854. Resolves
  5904. ticket 8145.
  5905. - Directory authorities now include inside each vote a statement of
  5906. the performance thresholds they used when assigning flags.
  5907. Implements ticket 8151.
  5908. - Add an "ignoring-advertised-bws" boolean to the flag-threshold lines
  5909. in directory authority votes to describe whether they have enough
  5910. measured bandwidths to ignore advertised (relay descriptor)
  5911. bandwidth claims. Resolves ticket 8711.
  5912. o Minor features (path bias detection):
  5913. - Path Use Bias: Perform separate accounting for successful circuit
  5914. use. Keep separate statistics on stream attempt rates versus stream
  5915. success rates for each guard. Provide configurable thresholds to
  5916. determine when to emit log messages or disable use of guards that
  5917. fail too many stream attempts. Resolves ticket 7802.
  5918. - Create three levels of Path Bias log messages, as opposed to just
  5919. two. These are configurable via consensus as well as via the torrc
  5920. options PathBiasNoticeRate, PathBiasWarnRate, PathBiasExtremeRate.
  5921. The default values are 0.70, 0.50, and 0.30 respectively.
  5922. - Separate the log message levels from the decision to drop guards,
  5923. which also is available via torrc option PathBiasDropGuards.
  5924. PathBiasDropGuards still defaults to 0 (off).
  5925. - Deprecate PathBiasDisableRate in favor of PathBiasDropGuards
  5926. in combination with PathBiasExtremeRate.
  5927. - Increase the default values for PathBiasScaleThreshold and
  5928. PathBiasCircThreshold from (200, 20) to (300, 150).
  5929. - Add in circuit usage accounting to path bias. If we try to use a
  5930. built circuit but fail for any reason, it counts as path bias.
  5931. Certain classes of circuits where the adversary gets to pick your
  5932. destination node are exempt from this accounting. Usage accounting
  5933. can be specifically disabled via consensus parameter or torrc.
  5934. - Convert all internal path bias state to double-precision floating
  5935. point, to avoid roundoff error and other issues.
  5936. - Only record path bias information for circuits that have completed
  5937. *two* hops. Assuming end-to-end tagging is the attack vector, this
  5938. makes us more resilient to ambient circuit failure without any
  5939. detection capability loss.
  5940. o Minor features (build):
  5941. - Tor now builds correctly on Bitrig, an OpenBSD fork. Patch from
  5942. dhill. Resolves ticket 6982.
  5943. - Compile on win64 using mingw64. Fixes bug 7260; patches from
  5944. "yayooo".
  5945. - Work correctly on Unix systems where EAGAIN and EWOULDBLOCK are
  5946. separate error codes; or at least, don't break for that reason.
  5947. Fixes bug 7935. Reported by "oftc_must_be_destroyed".
  5948. o Build improvements (autotools):
  5949. - Warn if building on a platform with an unsigned time_t: there
  5950. are too many places where Tor currently assumes that time_t can
  5951. hold negative values. We'd like to fix them all, but probably
  5952. some will remain.
  5953. - Do not report status verbosely from unless the -v flag
  5954. is specified. Fixes issue 4664. Patch from Onizuka.
  5955. - Detect and reject attempts to build Tor with threading support
  5956. when OpenSSL has been compiled without threading support.
  5957. Fixes bug 6673.
  5958. - Try to detect if we are ever building on a platform where
  5959. memset(...,0,...) does not set the value of a double to 0.0. Such
  5960. platforms are permitted by the C standard, though in practice
  5961. they're pretty rare (since IEEE 754 is nigh-ubiquitous). We don't
  5962. currently support them, but it's better to detect them and fail
  5963. than to perform erroneously.
  5964. - We no longer warn so much when generating manpages from their
  5965. asciidoc source.
  5966. - Use Ville Laurikari's implementation of AX_CHECK_SIGN() to determine
  5967. the signs of types during autoconf. This is better than our old
  5968. approach, which didn't work when cross-compiling.
  5969. o Minor features (log messages, warnings):
  5970. - Detect when we're running with a version of OpenSSL other than the
  5971. one we compiled with. This conflict has occasionally given people
  5972. hard-to-track-down errors.
  5973. - Warn users who run hidden services on a Tor client with
  5974. UseEntryGuards disabled that their hidden services will be
  5975. vulnerable to (the
  5976. attack which motivated Tor to support entry guards in the first
  5977. place). Resolves ticket 6889.
  5978. - Warn when we are binding low ports when hibernation is enabled;
  5979. previously we had warned when we were _advertising_ low ports with
  5980. hibernation enabled. Fixes bug 7285; bugfix on
  5981. - Issue a warning when running with the bufferevents backend enabled.
  5982. It's still not stable, and people should know that they're likely
  5983. to hit unexpected problems. Closes ticket 9147.
  5984. o Minor features (log messages, notices):
  5985. - Refactor resolve_my_address() so it returns the method by which we
  5986. decided our public IP address (explicitly configured, resolved from
  5987. explicit hostname, guessed from interfaces, learned by gethostname).
  5988. Now we can provide more helpful log messages when a relay guesses
  5989. its IP address incorrectly (e.g. due to unexpected lines in
  5990. /etc/hosts). Resolves ticket 2267.
  5991. - Track how many "TAP" and "NTor" circuit handshake requests we get,
  5992. and how many we complete, and log it every hour to help relay
  5993. operators follow trends in network load. Addresses ticket 9658.
  5994. o Minor features (log messages, diagnostics):
  5995. - If we fail to free a microdescriptor because of bug 7164, log
  5996. the filename and line number from which we tried to free it.
  5997. - We compute the overhead from passing onionskins back and forth to
  5998. cpuworkers, and report it when dumping statistics in response to
  5999. SIGUSR1. Supports ticket 7291.
  6000. - Add another diagnostic to the heartbeat message: track and log
  6001. overhead that TLS is adding to the data we write. If this is
  6002. high, we are sending too little data to SSL_write at a time.
  6003. Diagnostic for bug 7707.