summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-05-22Merge branch 'maint-0.3.3'Nick Mathewson
2018-05-22Merge branch 'trove-2018-005_032' into maint-0.3.3Nick Mathewson
2018-05-22uint breaks compilation on windowsNick Mathewson
2018-05-22Merge branch 'maint-0.3.3'Nick Mathewson
"ours" merge to avoid version bump
2018-05-22version bump to 0.3.3.6Nick Mathewson
2018-05-22Merge branch 'trove-2018-005_034'Nick Mathewson
2018-05-22Merge branch 'maint-0.3.3'Nick Mathewson
"Ours" merge to avoid the maint-0.3.3 version of the TROVE-2018-005 fix, which touches the files in their old locations.
2018-05-22fix wide linesNick Mathewson
2018-05-22changes file for TROVE-2018-005Nick Mathewson
2018-05-22vote: TROVE-2018-005 Make DirAuths omit misbehaving routers from their vote.Isis Lovecruft
2018-05-22rust: Mirror TROVE-2018-005 fix in Rust protover implementation.Isis Lovecruft
* REFACTORS `UnvalidatedProtoEntry::from_str` to place the bulk of the splitting/parsing logic in to a new `UnvalidatedProtoEntry::parse_protocol_and_version_str()` method (so that both `from_str()` and `from_str_any_len()` can call it.) * ADD a new `UnvalidatedProtoEntry::from_str_any_len()` method in order to maintain compatibility with consensus methods older than 29. * ADD a limit on the number of characters in a protocol name. * FIXES part of #25517: https://bugs.torproject.org/25517
2018-05-22protover: TROVE-2018-005 Fix potential DoS in protover protocol parsing.Isis Lovecruft
In protover.c, the `expand_protocol_list()` function expands a `smartlist_t` of `proto_entry_t`s to their protocol name concatenated with each version number. For example, given a `proto_entry_t` like so: proto_entry_t *proto = tor_malloc(sizeof(proto_entry_t)); proto_range_t *range = tor_malloc_zero(sizeof(proto_range_t)); proto->name = tor_strdup("DoSaaaaaaaaaaaaaaaaaaaaaa[19KB]aaa"); proto->ranges = smartlist_new(); range->low = 1; range->high = 65536; smartlist_add(proto->ranges, range); (Where `[19KB]` is roughly 19KB of `"a"` bytes.) This would expand in `expand_protocol_list()` to a `smartlist_t` containing 65536 copies of the string, e.g.: "DoSaaaaaaaaaaaaaaaaaaaaaa[19KB]aaa=1" "DoSaaaaaaaaaaaaaaaaaaaaaa[19KB]aaa=2" […] "DoSaaaaaaaaaaaaaaaaaaaaaa[19KB]aaa=65535" Thus constituting a potential resource exhaustion attack. The Rust implementation is not subject to this attack, because it instead expands the above string into a `HashMap<String, HashSet<u32>` prior to #24031, and a `HashMap<UnvalidatedProtocol, ProtoSet>` after). Neither Rust version is subject to this attack, because it only stores the `String` once per protocol. (Although a related, but apparently of too minor impact to be usable, DoS bug has been fixed in #24031. [0]) [0]: https://bugs.torproject.org/24031 * ADDS hard limit on protocol name lengths in protover.c and checks in parse_single_entry() and expand_protocol_list(). * ADDS tests to ensure the bug is caught. * FIXES #25517: https://bugs.torproject.org/25517
2018-05-22rust: Mirror TROVE-2018-005 fix in Rust protover implementation.Isis Lovecruft
* REFACTORS `UnvalidatedProtoEntry::from_str` to place the bulk of the splitting/parsing logic in to a new `UnvalidatedProtoEntry::parse_protocol_and_version_str()` method (so that both `from_str()` and `from_str_any_len()` can call it.) * ADD a new `UnvalidatedProtoEntry::from_str_any_len()` method in order to maintain compatibility with consensus methods older than 29. * ADD a limit on the number of characters in a protocol name. * FIXES part of #25517: https://bugs.torproject.org/25517
2018-05-22Merge branch 'trove-2018-005_032' into trove-2018-005_033Nick Mathewson
2018-05-22changes file for TROVE-2018-005Nick Mathewson
2018-05-22Add stdbool to protover.h. Only needed for the 032 backportNick Mathewson
2018-05-22vote: TROVE-2018-005 Make DirAuths omit misbehaving routers from their vote.Isis Lovecruft
2018-05-22protover: TROVE-2018-005 Fix potential DoS in protover protocol parsing.Isis Lovecruft
In protover.c, the `expand_protocol_list()` function expands a `smartlist_t` of `proto_entry_t`s to their protocol name concatenated with each version number. For example, given a `proto_entry_t` like so: proto_entry_t *proto = tor_malloc(sizeof(proto_entry_t)); proto_range_t *range = tor_malloc_zero(sizeof(proto_range_t)); proto->name = tor_strdup("DoSaaaaaaaaaaaaaaaaaaaaaa[19KB]aaa"); proto->ranges = smartlist_new(); range->low = 1; range->high = 65536; smartlist_add(proto->ranges, range); (Where `[19KB]` is roughly 19KB of `"a"` bytes.) This would expand in `expand_protocol_list()` to a `smartlist_t` containing 65536 copies of the string, e.g.: "DoSaaaaaaaaaaaaaaaaaaaaaa[19KB]aaa=1" "DoSaaaaaaaaaaaaaaaaaaaaaa[19KB]aaa=2" […] "DoSaaaaaaaaaaaaaaaaaaaaaa[19KB]aaa=65535" Thus constituting a potential resource exhaustion attack. The Rust implementation is not subject to this attack, because it instead expands the above string into a `HashMap<String, HashSet<u32>` prior to #24031, and a `HashMap<UnvalidatedProtocol, ProtoSet>` after). Neither Rust version is subject to this attack, because it only stores the `String` once per protocol. (Although a related, but apparently of too minor impact to be usable, DoS bug has been fixed in #24031. [0]) [0]: https://bugs.torproject.org/24031 * ADDS hard limit on protocol name lengths in protover.c and checks in parse_single_entry() and expand_protocol_list(). * ADDS tests to ensure the bug is caught. * FIXES #25517: https://bugs.torproject.org/25517
2018-05-22Merge branch 'bug26101_26102'Nick Mathewson
2018-05-22remove already-merged changes fileNick Mathewson
2018-05-22Merge branch 'maint-0.3.3'Nick Mathewson
2018-05-22Fix a crash bug when testing reachabilityNick Mathewson
Fixes bug 25415; bugfix on 0.3.3.2-alpha.
2018-05-17Whoops -- add an entry I missed to the 0.3.4.1-alpha changelogNick Mathewson
2018-05-17bump to 0.3.4.1-alpha-devNick Mathewson
2018-05-17increment changelog datetor-0.3.4.1-alphaNick Mathewson
2018-05-16Bump version to 0.3.4.1-alpha; contemplate a releaseNick Mathewson
2018-05-16Add comments explaining when a connected cell has an UNSPEC addrNick Mathewson
Should prevent other bugs like 26117.
2018-05-16Merge branch 'maint-0.3.1' into maint-0.3.2Nick Mathewson
2018-05-16Merge branch 'maint-0.3.2' into maint-0.3.3Nick Mathewson
2018-05-16Merge branch 'maint-0.2.9' into maint-0.3.1Nick Mathewson
2018-05-16Merge branch 'bug26072_029' into maint-0.2.9Nick Mathewson
2018-05-15Bug 26117: Move CIRC_BW field accounting.Mike Perry
Previously, we used the AF_UNSPEC check to represent valid connected cell data as a result of the lack of return. This was incorrect.
2018-05-16Merge branch 'maint-0.3.3'Nick Mathewson
2018-05-16update tor-rust-dependencies submoduleNick Mathewson
2018-05-16Merge remote-tracking branch 'isis-github/bug26106'Nick Mathewson
2018-05-16Merge remote-tracking branch 'isis-github/bug26108'Nick Mathewson
2018-05-16Merge remote-tracking branch 'isis-github/bug26109'Nick Mathewson
2018-05-16reflow the blurb.Nick Mathewson
2018-05-16move a changelog entry and try writing a blurbNick Mathewson
2018-05-15fix some changelog typos that Catalyst found.Nick Mathewson
2018-05-15rust: Update rand_core dependency to 0.2.0-pre.0.Isis Lovecruft
2018-05-15rust: Update rand dev-dependency to 0.5.0-pre.2.Isis Lovecruft
2018-05-15various changelog editsNick Mathewson
2018-05-15rust: Export digests subcrate from our crypto crate.Isis Lovecruft
2018-05-15rust: Export crypto_rand::* functions from our external crate.Isis Lovecruft
2018-05-15rust: Move rand crate into crypto parent crate.Isis Lovecruft
2018-05-15rust: Make Rng::new() methods public.Isis Lovecruft
2018-05-15run format-changelogNick Mathewson
2018-05-15use sortChanges to begin an 0.3.4.1-alpha changelogNick Mathewson
2018-05-15Merge branch 'maint-0.3.3'Nick Mathewson