summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2014-04-23Merge remote-tracking branch 'public/bug11553_024' into bug11553_025Nick Mathewson
Conflicts: src/or/circuitbuild.c
2014-04-23Improvements to #11553 fix based on reviewNick Mathewson
Use a per-channel ratelim_t to control the rate at which we report failures for each channel. Explain why I picked N=32. Never return a zero circID. Thanks to Andrea and to cypherpunks.
2014-04-18Merge remote-tracking branch 'public/bug11553_024' into bug11553_025Nick Mathewson
2014-04-18Add a rate-limiter for the other circuitID exhaustion warningNick Mathewson
2014-04-18Diagnostic warning to see if it's pending destroys causing 11553Nick Mathewson
2014-04-18Merge remote-tracking branch 'public/bug11553_024' into bug11553_025Nick Mathewson
Conflicts: src/or/channel.h
2014-04-18Switch to random allocation on circuitIDs.Nick Mathewson
Fixes a possible root cause of 11553 by only making 64 attempts at most to pick a circuitID. Previously, we would test every possible circuit ID until we found one or ran out. This algorithm succeeds probabilistically. As the comment says: This potentially causes us to give up early if our circuit ID space is nearly full. If we have N circuit IDs in use, then we will reject a new circuit with probability (N / max_range) ^ MAX_CIRCID_ATTEMPTS. This means that in practice, a few percent of our circuit ID capacity will go unused. The alternative here, though, is to do a linear search over the whole circuit ID space every time we extend a circuit, which is not so great either. This makes new vs old clients distinguishable, so we should try to batch it with other patches that do that, like 11438.
2014-04-18Supply better and less frequent warnings on circID exhaustionNick Mathewson
Fixes the surface behavior of #11553
2014-04-17Merge remote-tracking branch 'public/ticket11528_024'Nick Mathewson
2014-04-17Remove spurious libevent include in sandbox.cNick Mathewson
2014-04-17Elevate server TLS cipher preferences over clientNick Mathewson
The server cipher list is (thanks to #11513) chosen systematically to put the best choices for Tor first. The client cipher list is chosen to resemble a browser. So let's set SSL_OP_CIPHER_SERVER_PREFERENCE to have the servers pick according to their own preference order.
2014-04-17Fix uninitialized-ram free in unit testsNick Mathewson
Fix on fb595922; bug not in any released Tor. Found with --enable-expensive-hardening.
2014-04-16Merge remote-tracking branch 'public/sandbox_fixes_rebased_2'Nick Mathewson
2014-04-16Merge remote-tracking branch 'andrea/bug11304'Nick Mathewson
2014-04-16Merge remote-tracking branch 'andrea/bug11306'Nick Mathewson
2014-04-16Merge branch '10267_plus_10896_rebased_twice'Nick Mathewson
2014-04-16Call pf-divert openbsd-specific, not no-linuxNick Mathewson
2014-04-16Fix OSX compilation.Nick Mathewson
2014-04-16Whitespace, doc fixesNick Mathewson
2014-04-16Educate tor on OpenBSD's use of divert-to rules with the pf firewall.dana koch
This means that tor can run without needing to communicate with ioctls to the firewall, and therefore doesn't need to run with privileges to open the /dev/pf device node. A new TransProxyType is added for this purpose, "pf-divert"; if the user specifies this TransProxyType in their torrc, then the pf device node is never opened and the connection destination is determined with getsockname (as per pf(4)). The default behaviour (ie., when TransProxyType is "default" when using the pf firewall) is still to assume that pf is configured with rdr-to rules.
2014-04-16tor_addr_from_sockaddr() is applicable in ipfw code, so use it.Nick Mathewson
2014-04-16ipfw TransPort support on FreeBSD (10267)Nick Mathewson
This isn't on by default; to get it, you need to set "TransProxyType ipfw". (The original patch had automatic detection for whether /dev/pf is present and openable, but that seems marginally fragile.)
2014-04-16Log the name of the failing syscall on failureNick Mathewson
2014-04-16Block certain option transitions while sandbox enabledNick Mathewson
2014-04-16Sandbox: permit O_NONBLOCK and O_NOCTTY for files we refuseNick Mathewson
OpenSSL needs this, or RAND_poll() will kill the process. Also, refuse with EACCESS, not errno==-1 (!).
2014-04-16Don't reload logs or rewrite pidfile while sandbox is activeNick Mathewson
2014-04-16Don't allow change to ConnLimit while sandbox is activeNick Mathewson
2014-04-16Allow reloading torrc and writing to router-stabilityNick Mathewson
2014-04-16Use SCMP_CMP_MASKED_EQ to allow flags, not force themNick Mathewson
Older versions of Libevent are happy to open SOCK_DGRAM sockets non-cloexec and non-nonblocking, and then set those flags afterwards. It's nice to be able to allow a flag to be on or off in the sandbox without having to enumerate all its values. Also, permit PF_INET6 sockets. (D'oh!)
2014-04-16Add a couple of missing renames so the server sandbox works againNick Mathewson
2014-04-16Get Libevent's PRNG functioning under the linux sandboxNick Mathewson
Libevent uses an arc4random implementation (I know, I know) to generate DNS transaction IDs and capitalization. But it liked to initialize it either with opening /dev/urandom (which won't work under the sandbox if it doesn't use the right pointer), or with sysctl({CTL_KERN,KERN_RANDOM,RANDOM_UUIC}). To make _that_ work, we were permitting sysctl unconditionally. That's not such a great idea. Instead, we try to initialize the libevent PRNG _before_ installing the sandbox, and make sysctl always fail with EPERM under the sandbox.
2014-04-16Make sure everything using an interned string is preceded by a logNick Mathewson
(It's nice to know what we were about to rename before we died from renaming it.)
2014-04-16Introduce arg-counting macros to wrap seccomp_rule_add()Nick Mathewson
The compiler doesn't warn about this code: rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(openat), 1, SCMP_CMP(0, SCMP_CMP_EQ, AT_FDCWD), SCMP_CMP(1, SCMP_CMP_EQ, param->value), SCMP_CMP(2, SCMP_CMP_EQ, O_RDONLY|...)); but note that the arg_cnt argument above is only 1. This means that only the first filter (argument 0 == AT_FDCWD) is actually checked! This patch also fixes the above error in the openat() filter. Earlier I fixed corresponding errors in filters for rename() and mprotect().
2014-04-16Fix sandbox protection for renameNick Mathewson
(We were only checking the first parameter of each rename call.)
2014-04-16Upgrade warning about missing interned string for sandboxNick Mathewson
2014-04-16Have sandbox string protection include multi-valued parmeters.Nick Mathewson
2014-04-16Clean up sandbox structures a bitNick Mathewson
Drop pindex,pindex2 as unused. Admit a type to avoid using a void*
2014-04-16Add missing rename function for non-linux platformsNick Mathewson
2014-04-16Drop 'fr' parameter from sandbox code.Nick Mathewson
Appearently, the majority of the filenames we pass to sandbox_cfg_allow() functions are "freeable right after". So, consider _all_ of them safe-to-steal, and add a tor_strdup() in the few cases that aren't. (Maybe buggy; revise when I can test.)
2014-04-16Remove nonsensical exec permission from sandbox code.Nick Mathewson
2014-04-16Add 'rename' to the sandboxed syscallsNick Mathewson
(If we don't restrict rename, there's not much point in restricting open, since an attacker could always use rename to make us open whatever they want.)
2014-04-16Only intern one copy of each magic string for the sandboxNick Mathewson
If we intern two copies of a string, later calls to sandbox_intern_string will give the wrong one sometimes.
2014-04-16Fix some initial sandbox issues.Nick Mathewson
Allow files that weren't in the list; Allow the _sysctl syscall; allow accept4 with CLOEXEC and NONBLOCK.
2014-04-16Only expose clean_backtrace() if we'll implement itNick Mathewson
Fixes windows compilation; bug not in any released Tor. Bugfix on cc9e86db.
2014-04-16Merge remote-tracking branch 'origin/maint-0.2.4'Nick Mathewson
2014-04-16Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4Nick Mathewson
2014-04-16remove note about dannenberg; it has upgraded.Nick Mathewson
2014-04-16Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4Nick Mathewson
2014-04-16Update the authority signing key blacklistNick Mathewson
Now it only has dannenberg
2014-04-15Call connection_or_close_for_error() properly if write_to_buf() ever fails ↵Andrea Shepard
on an orconn