Commit Graph

27654 Commits

Author SHA1 Message Date
Pierre Bourdon eb0749d649 sandbox: replace SCMP_CMP_NEG with masked equality checks
For some syscalls the kernel ABI uses 32 bit signed integers. Whether
these 32 bit integer values are sign extended or zero extended to the
native 64 bit register sizes is undefined and dependent on the {arch,
compiler, libc} being used. Instead of trying to detect which cases
zero-extend and which cases sign-extend, this commit uses a masked
equality check on the lower 32 bits of the value.
2022-05-04 07:19:40 +02:00
Pierre Bourdon 8fd13f7a7b sandbox: filter {chown,chmod,rename} via their *at variant on Aarch64
The chown/chmod/rename syscalls have never existed on AArch64, and libc
implements the POSIX functions via the fchownat/fchmodat/renameat
syscalls instead.

Add new filter functions for fchownat/fchmodat/renameat, not made
architecture specific since the syscalls exists everywhere else too.
However, in order to limit seccomp filter space usage, we only insert
rules for one of {chown, chown32, fchownat} depending on the
architecture (resp. {chmod, fchmodat}, {rename, renameat}).
2022-04-30 13:13:45 +02:00
Pierre Bourdon 531275b0f3 sandbox: fix openat filtering on AArch64
New glibc versions not sign-extending 32 bit negative constants seems to
not be a thing on AArch64. I suspect that this might not be the only
architecture where the sign-extensions is happening, and the correct fix
might be instead to use a proper 32 bit comparison for the first openat
parameter. For now, band-aid fix this so the sandbox can work again on
AArch64.
2022-04-30 11:52:59 +02:00
David Goulet fb4c80f7fb version: Bump version to 0.4.8.0-alpha-dev
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-04-27 11:15:25 -04:00
David Goulet 5345b43fb8 version: Bump to 0.4.7.7-dev
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-04-27 11:12:38 -04:00
Tor CI Release 929a90a24f version: Bump version to 0.4.7.7 2022-04-27 10:04:17 -04:00
Tor CI Release 06ed65bd85 fallbackdir: Update list generated on April 27, 2022 2022-04-27 09:41:38 -04:00
Tor CI Release 2270648baa Update geoip files to match ipfire location db, 2022/04/27. 2022-04-27 09:41:28 -04:00
Mike Perry ed3399ab06 Bug 40598: Demote warn log about odd path lengths with congestion control. 2022-04-26 12:14:26 -04:00
Tor CI Release c885a18a2e version: Bump version to 0.4.7.6-rc-dev 2022-04-07 11:49:20 -04:00
Tor CI Release f18afc0b83 version: Bump version to 0.4.7.6-rc 2022-04-07 09:05:42 -04:00
Tor CI Release 133c64075b fallbackdir: Update list generated on April 07, 2022 2022-04-07 09:00:46 -04:00
Tor CI Release 28193dbf9d Update geoip files to match ipfire location db, 2022/04/07. 2022-04-07 09:00:42 -04:00
Roger Dingledine 5e6ed1065b document running_long_enough_to_decide_unreachable()
It came as a surprise that Serge, the bridge authority, omits the Running
flag for all bridges in its first 30 minutes after a restart:
https://bugs.torproject.org/tpo/anti-censorship/rdsys/102

The fix we're doing for now is to accept it as correct behavior in
Tor, and change all the supporting tools to be able to handle bridge
networkstatus docs that have no Running bridges.

I'm documenting it here inside Tor too so the next person might not
be so surprised.
2022-03-31 02:46:11 -04:00
David Goulet 62fb184979 Merge branch 'maint-0.4.6' 2022-03-28 09:45:16 -04:00
David Goulet d14af825ce Merge branch 'maint-0.4.5' into maint-0.4.6 2022-03-28 09:45:16 -04:00
David Goulet b882b8d5d4 Merge branch 'tor-gitlab/mr/556' into maint-0.4.5 2022-03-28 09:44:31 -04:00
Nick Mathewson de3872656a Sandbox: Permit the clone3 system call
Apparently glibc-2.34 uses clone3, when previously it just used
clone.

Closes ticket #40590.
2022-03-27 18:34:25 -04:00
Tor CI Release 84fc754204 version: Bump version to 0.4.7.5-alpha-dev 2022-03-25 10:17:02 -04:00
Tor CI Release d376585751 version: Bump version to 0.4.7.5-alpha 2022-03-25 09:19:35 -04:00
Tor CI Release 9e5676031d fallbackdir: Update list generated on March 25, 2022 2022-03-25 09:11:19 -04:00
Tor CI Release aaac633eb0 Update geoip files to match ipfire location db, 2022/03/25. 2022-03-25 09:10:16 -04:00
David Goulet 649539e82a Merge branch 'tor-gitlab/mr/550' 2022-03-16 14:47:21 -04:00
David Goulet 1a5b612832 Merge branch 'tor-gitlab/mr/548' 2022-03-16 14:03:31 -04:00
David Goulet 32400b5688 hs: Helper function to setup congestion control
We had 3 callsites setting up the circuit congestion control and so this
commit consolidates all 3 calls into 1 function.

Related to #40586

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-03-16 14:03:27 -04:00
David Goulet dd63e8cf9d hs: Transfer ccontrol from circuit to cpath
Once the cpath is finalized, e2e encryption setup, transfer the ccontrol
from the rendezvous circuit to the cpath.

This allows the congestion control subsystem to properly function for
both upload and download side of onion services.

Closes #40586

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-03-16 14:03:27 -04:00
David Goulet 1f783bab40 dns: Remove reachable BUG()
Fixes #40587

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-03-16 13:42:42 -04:00
David Goulet f64a88e72d Merge branch 'tor-gitlab/mr/490' 2022-03-16 13:35:33 -04:00
David Goulet 7ce17c2b00 relay: Reconfigure libevent options only on DNS params change
Related #40312

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-03-15 15:33:44 -04:00
David Goulet 2cdb5ceb1d relay: On new consensus, reconfigure DNS nameservers
This applies only for relays. Previous commit adds two new consensus
parameters that dictate how libevent is configured with DNS resolution.
And so, with a new consensus, we now look at those values in case they
ever change.

Without this, Exit relay would have to HUP or restart to apply any new
Exit DNS consensus parameters.

Related to #40312

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-03-15 15:26:37 -04:00
David Goulet 347eaa32bf relay: Lower DNS Exit-side timeout
Introduces two new consensus parameter:

  exit_dns_timeout: Number of seconds before libevent should consider
  the DNS request a timeout.

  exit_dns_num_attempts: Number of attempts that libeven should retry a
  previously failing query before calling it a timeout.

Closes #40312

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-03-15 15:26:19 -04:00
David Goulet 17a8b3c735 Merge branch 'tor-gitlab/mr/547' 2022-03-15 15:16:30 -04:00
David Goulet cf93d35209 crypto: Clarifying comment for the random hostname calculation
Closes #40520

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-03-15 14:00:00 -04:00
David Goulet cc674939d2 test: Unit tests for overload onionskin ntor
Part of #40560

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-03-15 13:28:17 -04:00
David Goulet 9a47372096 rephist: Introduce a fraction and period for overload onionskin
This code was heavily reused from the previous DNS timeout work done in
ticket #40491 that was removed afterall from our code.

Closes #40560

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-03-15 13:28:17 -04:00
David Goulet 1760a12f83 dns: Wake up a dormant tor with a DNSPort request
Fixes #40577

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-03-15 12:12:57 -04:00
David Goulet 1934e24469 Merge branch 'tor-gitlab/mr/546' 2022-03-14 15:17:05 -04:00
Mike Perry f6f7c4e846 Emit control port notification for XON/XOFF 2022-03-14 15:16:26 -04:00
Mike Perry cf8d9fb1a0 Control port STREAM XON/XOFF status event notification 2022-03-14 15:16:26 -04:00
David Goulet df6625300d Merge branch 'tor-gitlab/mr/543' 2022-03-11 09:29:41 -05:00
David Goulet be80383a7c Merge branch 'maint-0.4.5' into maint-0.4.6 2022-03-10 09:18:57 -05:00
David Goulet c076ac787f Merge branch 'maint-0.4.6' 2022-03-10 09:18:57 -05:00
David Goulet 254b23ab9d hs: Schedule mainloop event on dirinfo change
Due to a possible Guard subsystem recursion, when the HS client gets
notified that the directory information has changed, it must run it in a
seperate mainloop event to avoid such issue.

See the ticket for more information on the recursion. This also fixes a
fatal assert.

Fixes #40579

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-03-10 08:58:26 -05:00
David Goulet 069b278601 hs: Don't BUG() when setting up RP congestion control
It is possible to not have the descriptor anymore by the time the
rendezvous circuit opens. Don't BUG() on that.

Instead, when sending the INTRODUCE1 cell, make sure the descriptor we
have (or have just fetched) matches what we setup in the rendezvous
circuit.

If not, the circuit is closed and another one is opened for a retry.

Fixes #40576

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-03-09 12:15:12 -05:00
David Goulet 472c7127c7 Merge branch 'maint-0.4.5' into maint-0.4.6 2022-03-09 08:46:55 -05:00
David Goulet 9efb04bb3e hs: Fix multiple port label on single metric
Prometheus needs unique labels and so this bug was causing an onion
service with multiple ports to have multiple "port=" label for the
metrics requiring a port label.

Fixes #40581

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-03-08 13:56:54 -05:00
David Goulet f4aa985cf7 hs: Fix multiple port label on single metric
Prometheus needs unique labels and so this bug was causing an onion
service with multiple ports to have multiple "port=" label for the
metrics requiring a port label.

Fixes #40581

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-03-08 13:50:34 -05:00
Mike Perry c7c2287d07 Make a check for origin circuit explicit. 2022-03-03 20:55:46 +00:00
Mike Perry 7cb050bd7d Ensure CIRC_BW event is emitted immediately upon slow start exit.
This ensures sbws gets this information quickly, so it can begin measurement.
2022-03-03 20:55:46 +00:00
Mike Perry 646a1d5f9a Add congestion control fields to CIRC_BW control port event 2022-03-03 20:06:38 +00:00