teor
c3e058dfac
relay: Choose between IPv4 and IPv6 extends at random
...
When an EXTEND2 cell has an IPv4 and an IPv6 address, choose one of them
uniformly at random.
Part of 33817.
2020-04-29 22:43:09 +10:00
teor
a0b12f3cd4
relay/circuitbuild: Refactor open connection for extend
...
Re-use the newly created extend_info to launch the connection in
circuit_open_connection_for_extend().
No behaviour change.
Part of 33817.
2020-04-29 22:43:09 +10:00
teor
16f3f6a1af
relay/circuitbuild: Re-use IPv6 connections for circuits
...
Search for existing connections using the remote IPv4 and IPv6
addresses.
Part of 33817.
2020-04-29 22:43:09 +10:00
teor
ec5f4f3c5a
relay/circuitbuild: Report IPv6 addresses in a debug log
...
Part of 33817.
2020-04-29 22:43:09 +10:00
teor
bad1181b5d
relay/circuitbuild: Consider IPv6-only extends valid
...
Allow extend cells with IPv6-only link specifiers.
Warn and fail if both IPv4 and IPv6 are invalid.
Also warn if the IPv4 or IPv6 addresses are unexpectedly internal,
but continue with the valid address.
Part of 33817.
2020-04-29 22:43:09 +10:00
teor
44f71e08c4
relay: Log the address in circuit protocol warnings
...
Always log the address family in extend protocol warnings.
If SafeLogging is 0, also log the address and port.
Diagnostics for 33817.
2020-04-29 22:43:09 +10:00
teor
ffc2fd001a
relay: Refactor address checks into a function
...
No behaviour change.
Part of 33817.
2020-04-29 22:43:09 +10:00
teor
07c008c672
relay: Refactor address and port checks
...
tor_addr_port_is_valid_ap(ap, 0) checks if the address or port are
zero, exactly like the previous code.
Preparation for 33817.
2020-04-29 22:43:09 +10:00
teor
3253c357ee
Run "make autostyle"
2020-04-29 22:08:33 +10:00
teor
398e0e0247
nodelist: Remove an outdated comment
...
Part of 33817.
2020-04-29 21:50:26 +10:00
Nick Mathewson
77e65076ab
Merge remote-tracking branch 'tor-github/pr/1860/head'
2020-04-14 11:52:00 -04:00
Nick Mathewson
e22a8d9c95
Merge branch 'maint-0.4.3'
2020-04-13 14:14:41 -04:00
Nick Mathewson
55cb6c3fcd
Merge branch 'bug33545_043_squashed' into maint-0.4.3
2020-04-13 14:13:44 -04:00
George Kadianakis
f2f718bca5
hs-v3: Change all-zeroes hard-assert to a BUG-and-err.
...
And also disallow all-zeroes keys from the filesystem; add a test for it too.
2020-04-13 14:13:33 -04:00
George Kadianakis
37bcc9f3d2
hs-v3: Don't allow registration of an all-zeroes client auth key.
...
The client auth protocol allows attacker-controlled x25519 private keys being
passed around, which allows an attacker to potentially trigger the all-zeroes
assert for client_auth_sk in hs_descriptor.c:decrypt_descriptor_cookie().
We fixed that by making sure that an all-zeroes client auth key will not be
used.
There are no guidelines for validating x25519 private keys, and the assert was
there as a sanity check for code flow issues (we don't want to enter that
function with an unitialized key if client auth is being used). To avoid such
crashes in the future, we also changed the assert to a BUG-and-err.
2020-04-13 14:13:33 -04:00
Neel Chauhan
8e59b8560a
Return a descriptive error for 'GETINFO status/fresh-relay-descs'
2020-04-12 13:13:50 -07:00
Neel Chauhan
a638514783
Fix typo in router_build_fresh_unsigned_routerinfo() comment
2020-04-12 12:43:21 -07:00
Nick Mathewson
80031db32a
Merge remote-tracking branch 'tor-github/pr/1801/head'
2020-04-09 11:50:20 -04:00
David Goulet
cca9e1c803
hs-v3: Several fixes after #32542 review
...
asn: Accidentally left this commit out when merging #32542 , so cherry-picking
it now.
Signed-off-by: David Goulet <dgoulet@torproject.org>
2020-04-09 13:59:18 +03:00
teor
cb262930f5
relay: Run "make autostyle"
...
But only take the changes from the relay module.
Part of 33633.
2020-04-09 11:00:04 +10:00
teor
d79e5d52bc
relay/circuitbuild: Refactor circuit_extend()
...
Make the "else" case explicit at the end of the function.
Part of 33633.
2020-04-09 11:00:04 +10:00
teor
f8fef609f6
nodelist: Make some functions mockable
...
Part of 33633.
2020-04-09 11:00:04 +10:00
teor
ec632b01db
relay: End circuitbuild logs with "."
...
Consistent logs make testing easier.
Part of 33633.
2020-04-09 11:00:04 +10:00
teor
4f9f56be47
relay: Check for NULL arguments in circuitbuild
...
Part of 33633.
2020-04-09 11:00:04 +10:00
teor
b10b287589
relay: Make circuitbuild functions STATIC
...
Allow the circuitbuild_relay functions to be accessed by the unit tests.
Part of 33633.
2020-04-09 11:00:04 +10:00
teor
44f634d0be
relay: Remove a redundant function return value
...
Part of 33633.
2020-04-09 11:00:04 +10:00
teor
ca9565b9f7
relay: Split out opening a connection for an extend
...
Part of 33633.
2020-04-09 11:00:04 +10:00
teor
2640030b10
relay: Refactor some long lines from circuit_extend()
...
Part of 33633.
2020-04-09 11:00:04 +10:00
teor
5cb2bbea7d
relay: Split link specifier checks from circuit_extend()
...
Part of 33633.
2020-04-09 11:00:04 +10:00
teor
2563d74a5c
relay: Split state checks out of circuit_extend()
...
Part of 33633.
2020-04-09 11:00:04 +10:00
teor
beee9ca608
relay: Improve the comments on onionskin_answer()
...
Part of 33633.
2020-04-09 11:00:04 +10:00
teor
c9b674d511
relay: Protocol warn when a client gets an extend
...
circuit_extend() may be called when a client receives an extend cell,
even if the relay module is disabled.
Log a protocol warning when the relay module is disabled.
Part of 33633.
2020-04-09 10:59:51 +10:00
Roger Dingledine
9bd73da7cf
fix typos from #32542
2020-04-08 19:13:52 -04:00
George Kadianakis
7a82c972ef
Merge branch 'tor-github/pr/1857'
2020-04-08 18:15:37 +03:00
David Goulet
6ab11bbf30
hs-v3: Report SOCKS ExtendedErrors when all intro timed out
...
Signed-off-by: David Goulet <dgoulet@torproject.org>
2020-04-08 07:56:54 -04:00
David Goulet
cf39276f78
hs-v3: Report rendezvous circuit failure SOCKS ExtendedErrors
...
Signed-off-by: David Goulet <dgoulet@torproject.org>
2020-04-08 07:56:54 -04:00
David Goulet
fdd6352506
hs-v3: Report introduction failure SOCKS ExtendedErrors
...
Signed-off-by: David Goulet <dgoulet@torproject.org>
2020-04-08 07:56:54 -04:00
David Goulet
6fbf624b50
hs-v3: Fix typo in log info when PublishHidServDescriptors is set to 0
...
Fixes #33779
Signed-off-by: David Goulet <dgoulet@torproject.org>
2020-04-07 13:17:21 -04:00
teor
065ccda4f6
Merge branch 'pr1838_squashed'
2020-04-07 17:36:17 +10:00
David Goulet
eecf6c5199
hs-v3: Move to log notice the registration of an OB instance
...
This is to allow a visual feedback in the logs for operators setting up Onion
Balance so they can confirm they properly configured the instances.
Signed-off-by: David Goulet <dgoulet@torproject.org>
2020-04-01 08:31:20 -04:00
David Goulet
b5412d12f9
Merge branch 'tor-github/pr/1844'
2020-04-01 08:22:36 -04:00
George Kadianakis
8fda94f944
hs-v3: Move ob_subcreds to hs_service_state_t.
...
It's more natural there since it's runtime state.
2020-03-30 23:37:26 +03:00
George Kadianakis
0667a5af8d
hs-v3: Don't crash after SIGHUP in Onionbalance backend mode.
...
The ob_subcreds array was not copied after SIGHUP, and that left the
post-SIGHUP service with a NULL ob_subcreds pointer (until the next descriptor
gets build where we regenerate ob_subcreds in hs_ob_refresh_keys()).
Fixes bug #33762 ; not in any released tor version.
2020-03-30 23:35:19 +03:00
David Goulet
ca8e6451f2
Merge branch 'maint-0.4.3'
2020-03-30 13:38:58 -04:00
George Kadianakis
42e56f5bac
hs-v3: Relax severity of a log message when decoding descriptors.
...
Make it LOG_PROTOCOL_WARN and also add the expiration timestamp in there to
ease debugging in the future.
2020-03-30 13:38:29 -04:00
David Goulet
27e2989fe9
Merge branch 'tor-github/pr/1775'
2020-03-30 13:31:56 -04:00
Nick Mathewson
0dc25a4b66
Use a macro to make our hs_opts checking terser.
2020-03-30 13:31:44 -04:00
Nick Mathewson
84868109d2
Use SECTION_HEADER, not "HiddenServiceDir".
...
Add a nonfatal assertion about a branch that should be unreachable.
2020-03-30 13:31:44 -04:00
Nick Mathewson
d421050f3a
Derive hidden service configuration from hs_opts_t.
...
This simplifies our parsing code by about 150 lines, and makes the
functions more straightforward.
2020-03-30 13:31:44 -04:00
Nick Mathewson
cfaf1bca98
Start using confmgt logic to parse HS configuration.
...
This patch doesn't actually use the results of the parsed object to
create the service configuration: subsequent patches will do
that. This patch just introduces the necessary configuration tables
and starts using them to validate the configuration.
As of this writing, this patch breaks tests. I'll likely fix that
in a rebase later on: the current error messages for failures to
parse options are a regression, so I've opened #33640 for that.
2020-03-30 13:31:44 -04:00
Nick Mathewson
43b578e099
Use config_lines_partition() to parse hs config sections.
2020-03-30 13:31:44 -04:00
Roger Dingledine
f8ecf01cc1
spell consensus more right in comments
2020-03-27 02:56:59 -04:00
Roger Dingledine
a4304c6031
fix typo in log message
2020-03-27 02:51:01 -04:00
Nick Mathewson
3f6e37b1bc
Add a SUBSYS_DECLARE_LOCATION() to every subsystem.
2020-03-26 11:20:20 -04:00
Nick Mathewson
e7290dc8c0
Merge remote-tracking branch 'tor-github/pr/1780/head'
2020-03-26 10:38:08 -04:00
Nick Mathewson
2eb78e2061
Merge branch 'bug33651'
2020-03-25 10:38:01 -04:00
teor
4b914dea02
Merge branch 'bug32588_043' into bug32588_master
2020-03-21 04:02:08 +10:00
teor
52f61ec83e
Merge branch 'bug32588_042' into bug32588_043
...
Merge static function declaration deletions from bug32588_042 and
maint-0.4.3 in app/config/config.c.
2020-03-21 04:01:00 +10:00
teor
5e2f31f177
Merge branch 'bug32588_041' into bug32588_042
2020-03-21 03:52:32 +10:00
teor
2962c32b7a
Merge branch 'bug32588_035' into bug32588_041
...
Merge tests from maint-0.4.1 with new tests from bug32588_035
in test_router.c.
2020-03-21 03:50:36 +10:00
teor
bac8bc0ff1
router: Refactor IPv6 ORPort function logic
...
Return early when there is no suitable IPv6 ORPort.
Show the address and port on error, using a convenience function.
Code simplification and refactoring.
Cleanup after 32588.
2020-03-21 03:43:48 +10:00
teor
861337fd6d
router: Stop advertising incorrect auto IPv6 ORPorts
...
When IPv6 ORPorts are set to "auto", tor relays and bridges would
advertise an incorrect port in their descriptor.
This may be a low-severity memory safety issue, because the published
port number may be derived from uninitialised or out-of-bounds memory
reads.
Fixes bug 32588; bugfix on 0.2.3.9-alpha.
2020-03-21 03:36:39 +10:00
teor
f9fef2633f
relay: Set some output arguments in stubs
...
Fixes part of bug 33674; not in any released version of tor.
2020-03-21 02:48:40 +10:00
Nick Mathewson
3e24bd5557
Merge branch 'maint-0.4.3'
2020-03-20 07:56:42 -04:00
teor
d4a74021e5
relay/dirauth: Set some output arguments in stubs
...
And document how some functions set their output arguments.
Fixes bug 33674; bugfix on 0.4.3.1-alpha.
2020-03-20 07:56:26 -04:00
Nick Mathewson
c478dc9b2f
Set *have_low_ports_out from stub port_parse_ports_relay().
...
Previously we just ignored this option, which would leave it unset,
and cause an assertion failure later on when running with the User
option.
Fixes bug 33668; bugfix on 0.4.3.1-alpha.
2020-03-20 07:56:26 -04:00
teor
81687f5bc9
relay: Split out relay-only circuit building
...
Move the relay-only circuit building functions into a new file.
Part of 33633.
2020-03-20 18:05:10 +10:00
teor
fdba6ff0c0
relay: Move inform_testing_rechability() to relay
...
Move inform_testing_rechability() to the relay module, and disable it
when the relay module is disabled.
Part of 33633.
2020-03-20 18:05:10 +10:00
teor
07280c567e
relay: Re-order selftest header
...
The selftest header declares functions, and stubs for when the relay
module is disabled. Put the functions and stubs in the same order.
Part of 33633.
2020-03-20 18:05:10 +10:00
teor
2f1f3b1702
Merge branch 'maint-0.4.3'
2020-03-20 15:40:39 +10:00
teor
250b8499b8
dirauth: Remove a duplicate macro definition
...
Obviously correct changes to already-reviewed code.
2020-03-20 15:39:55 +10:00
Nick Mathewson
9bcd7e5939
Actually log post-bootstrap directory dl totals.
...
Fixes bug 33651; bug not in any released Tor.
2020-03-19 08:08:58 -04:00
George Kadianakis
e8f0860557
Merge branch 'tor-github/pr/1792'
2020-03-19 13:43:49 +02:00
David Goulet
4dbbe47d86
hs-v3: Improve accessor semantic of client cached object
...
Add an inline helper function that indicates if the cached object contains a
decrypted descriptor or not.
The descriptor object is NULL if tor is unable to decrypt it (lacking client
authorization) and some actions need to be done only when we have a decrypted
object.
This improves code semantic.
Fixes #33458
Signed-off-by: David Goulet <dgoulet@torproject.org>
2020-03-19 13:43:39 +02:00
Roger Dingledine
987247bd76
fix typo in comment
2020-03-19 00:41:57 -04:00
Nick Mathewson
3d8c97a988
Merge branch 'maint-0.4.3'
2020-03-17 15:22:36 -04:00
Nick Mathewson
e0d68ce84f
Merge branch 'maint-0.4.2' into maint-0.4.3
2020-03-17 15:22:36 -04:00
Nick Mathewson
85141a3a74
Merge branch 'maint-0.4.1' into maint-0.4.2
2020-03-17 15:22:36 -04:00
Nick Mathewson
3c8a4b8fbd
Merge branch 'trove_2020_002_041' into maint-0.4.1
2020-03-17 15:22:02 -04:00
Nick Mathewson
fe3d8ec38e
Merge branch 'trove_2020_002_035' into maint-0.3.5
2020-03-17 15:21:48 -04:00
Nick Mathewson
270fe01557
Merge branch 'maint-0.4.3'
2020-03-17 11:47:35 -04:00
Nick Mathewson
e15a621ac8
Merge branch 'maint-0.4.1' into maint-0.4.2
2020-03-17 11:45:16 -04:00
Nick Mathewson
5f4e14b8c8
Merge branch 'maint-0.3.5' into maint-0.4.1
2020-03-17 11:45:16 -04:00
Nick Mathewson
bbc80ea042
Merge branch 'maint-0.4.2' into maint-0.4.3
2020-03-17 11:45:16 -04:00
George Kadianakis
089e57d22f
Fix TROVE-2020-003.
...
Given that ed25519 public key validity checks are usually not needed
and (so far) they are only necessary for onion addesses in the Tor
protocol, we decided to fix this specific bug instance without
modifying the rest of the codebase (see below for other fix
approaches).
In our minimal fix we check that the pubkey in
hs_service_add_ephemeral() is valid and error out otherwise.
2020-03-17 11:44:45 -04:00
George Kadianakis
c940b7cf13
Trivial bugfixes found during TROVE investigation.
2020-03-17 11:43:03 -04:00
teor
0fa1d8ef92
Merge branch 'pr1777_squashed'
2020-03-17 21:08:45 +10:00
rl1987
752122b2e9
Try fixing Windows build to work with ALL_BUGS_ARE_FATAL
2020-03-17 21:08:10 +10:00
Nick Mathewson
49eec76c5e
Merge branch 'maint-0.4.3'
2020-03-16 12:21:57 -04:00
Nick Mathewson
855cd533e1
Merge branch 'ticket32672_042_squashed_w_test' into maint-0.4.3
2020-03-16 12:21:49 -04:00
Nick Mathewson
452398913a
Merge branch 'ticket32672_041_squashed' into ticket32672_042_squashed_w_test
2020-03-16 10:40:55 -04:00
Neel Chauhan
460b97380b
Reject 0.2.9 and 0.4.0 in dirserv_rejects_tor_version()
2020-03-16 10:40:14 -04:00
Nick Mathewson
b504942331
Merge remote-tracking branch 'tor-github/pr/1718/head' into maint-0.4.2
2020-03-13 16:42:47 -04:00
Nick Mathewson
9ca7900e17
Merge branch 'maint-0.4.3'
2020-03-12 12:46:12 -04:00
Nick Mathewson
e03bb35f90
Merge branch 'ticket33361_035_01_squashed' into maint-0.4.3
...
Conflicts:
src/app/config/config.c
2020-03-12 12:45:56 -04:00
David Goulet
df3f2bd9aa
hs-v3: Log reasons why service can't upload descriptor
...
When a service can not upload its descriptor(s), we have no logs on why. This
adds logging for each possible reason for each descriptors.
That logging is emitted every second so it is rate limited for each reason and
per descriptor.
Closes #33400
Signed-off-by: David Goulet <dgoulet@torproject.org>
2020-03-11 15:32:11 +02:00
Steven Engler
4b964ef5b2
Update comment in router_differences_are_cosmetic()
...
Descriptor differences are cosmetic if 2 hours has passed,
not 12 hours (see ticket 33573).
2020-03-09 10:13:36 -04:00
David Goulet
6684c6e17f
Merge branch 'tor-github/pr/1751'
2020-03-09 09:33:05 -04:00
Neel Chauhan
7d673e70b0
Remove the ClientAutoIPv6ORPort option
2020-03-09 09:33:00 -04:00
Nick Mathewson
8e5c75e896
Merge remote-tracking branch 'tor-github/pr/1772/head'
2020-03-05 09:09:16 -05:00