then I see that if I visit https://duckduckgo.com/, I'm correctly assigned to use exit node 185.220.100.252, which corresponds to the fingerptint. However, if I visit https://ayefiles.com, my exit node will NOT be 185.220.100.252, but instead can be any exit node such as 176.9.53.58 or 148.253.182.141, and will even change if I do a Ctrl+L to get a "New Tor circuit for this site" which should be a no-op for sites with MapAddress directives mapping them to a single exit node.
How is ayefiles.com able to hack TOR and prevent it from applying the requested exit node? Can we stop this from happening?
Finally, if for some reason this is "expected behavior" (though I can't fathom how) please change this to a feature request to add a way to specify a single exit node in a similar way to MapAddress, except that can't be hacked.
Trac: Username: babyfarkmcgeezaxxon
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Child items ...
Show closed items
Linked items 0
Link issues together to show that they're related.
Learn more.
Does 719FD0FA327F3CCBCDA0D4EA74C15EA110338942 allow exiting to ayefiles.com?
It looks like you want chosen_exit_optional set to false, but we don't have a torrc option flag for that yet.
Trac: Points: N/Ato 1 Component: - Select a component to Core Tor/Tor Milestone: N/Ato Tor: unspecified Type: defect to enhancement Keywords: N/Adeleted, tor-client, security-low?, tor-exit added Summary: MapAddress directive added to torrc doesn't work for some websites, fails to assign specified exit node to Add a flag to set chosen_exit_optional to false for MapAddress torrc option (and controller?)
Does 719FD0FA327F3CCBCDA0D4EA74C15EA110338942 allow exiting to ayefiles.com?
Good question. So here's what I did. I set my torrc back to the default value, with no restrictions, and then visited https://ayefiles.com/. I rotated through three different exit nodes as observed in the "Tor Circuit" window using Ctrl+L.
The exit nodes were:
46.249.59.212 95.216.153.67217.79.179.177
Using the official table of exit nodes @ https://torstatus.blutmagie.de/ I then filled in the fingerprints of these nodes. (They indeed were listed in that table as valid exit nodes.)
46.249.59.212 has fingerprint 221C2A3FBAEDBE8E91E13D367BFF649A8584F3DC95.216.153.67 has fingerprint 23C654A4C4102B0634B000FA9BF1EB5193ED8E17217.79.179.177 has fingerprint 3E53D3979DB07EFD736661C934A1DED14127B684
Now, the rabbithole gets deeper, and scarier. Using these fingerprints, the fingerprints of nodes that only seconds before I'd seen in the circuit to https://ayefiles.com/ , I modified my torrc to contain the following:
By can't connect, it's not hanging but giving me a screen blank except for a message, "Unable to connect. Firefox can’t establish a connection to the server at duckduckgo.com." Then it lists a few bullet items to check like my network being down.
So let's recap what I saw:
If I set a random, specific exit node via MapAddress, it works for duckduckgo, but ayefiles ignores it selecting another exit node
if I apply one of the exit nodes I saw ayefiles use under the default torrc operation, TOR refuses to use it to connect to either duckduckgo or ayefiles!
Very strange indeed! What's going on here? ayefiles uses certain specific exit nodes that then cannot be used for other websites and can't even be manually navigated to? That is, they can only be used as exit nodes if ayefiles chooses them and not if I choose them? WTF?
We'll need to see your tor logs to work out what's going on here.
Which logs do you need and where are they located?
The most likely explanations are:
you have an unreliable network connection,
Nope. Not sure why that would even come up given the detailed explanation I provided above.
ayefiles.com blocks many tor exits, or
many tor exits block ayefiles.com.
These don't make sense either. As I explained, I connected to ayefiles, rotated the connection and wrote down three exit nodes that were actually reported as being used. I then set those same exit nodes (via fingerprint) as MapAddress targets (sequentially in time, not at the same time) and they failed.
So they were obviously not blocked by ayefiles since I was connected to ayefiles using those exit nodes. However, setting them manually, then prevents any connection. So as I said above, something is allowing those exit nodes when ayefiles picks them, but not when I pick them. How is that OK? Can we stop it?
Also, why would using one those nodes, which are listed as official exit nodes, block duckduckgo connections? Are people who run exit nodes free to block any websites they want, even useful and innocuous ones like duckduckduckgo? Why? Seems like you need to upgrade your terms of service (or whatever agreement they explicitly or implicitly adopt to run an exit node) to prevent these games.
Also, why would using one those nodes, which are listed as official exit nodes, block duckduckgo connections? Are people who run exit nodes free to block any websites they want, even useful and innocuous ones like duckduckduckgo? Why? Seems like you need to upgrade your terms of service (or whatever agreement they explicitly or implicitly adopt to run an exit node) to prevent these games.
Bypassing exitnodes to access DDG isn't the goal. I was just using it as an example.
I make a living fixing bugs. We don't require a stack trace unless we are having trouble reproducing the issue. In this case, have TOR devs made any attempt to reproduce it? I suspect it's very easily reproducible using the instructions I gave.
Why can't I manually specify an exit node that was selected by ayefiles? We know those nodes are allowed to connect to ayefiles. What is going on here? This seems like a serious issue, but no TOR dev is responding to it?
What I'm not understanding is TOR must be involved in the selection of the exitnode, so how does ayefiles allow a particular node when it picks it, but not when I select it? And how is it "picking it" in the first place? This is very maddening that I can't force the use of the very exit node that I saw a website using.
I thought I'd get this fixed or at least a great explanation of the problem when I managed to describe explicitly how to reproduce it, but now, nothing, except how to access DDG through onion.
It seems like you're really frustrated.
I understand your concerns about this missing documentation and feature in Tor.
But we've all been pretty busy lately, so it's been hard to respond to everything.
We've had a lot of bugs to fix, and features to implement.
And many of them have been more important than this ticket.
Please be patient with us.
And please try to keep your focus on helping us fix the issue.
Telling us how to do our jobs, doesn't actually help us do our jobs.
And if we have to read through a bunch of unrelated information, then it's harder for us to work out what needs to be done.
I make a living fixing bugs. We don't require a stack trace unless we are having trouble reproducing the issue. In this case, have TOR devs made any attempt to reproduce it? I suspect it's very easily reproducible using the instructions I gave.
I didn't ask for a stack trace, I asked for your logs, so I could confirm what your tor client was doing:
We'll need to see your tor logs to work out what's going on here.
I don't know which operating system you're using, so there are a few different places your logs could be.
But if you're using a Unix variant, they might be in /var/log/tor/log.
Or they might just be in your syslog.
It depends on the tor package you're using.
Why can't I manually specify an exit node that was selected by ayefiles? We know those nodes are allowed to connect to ayefiles. What is going on here? This seems like a serious issue, but no TOR dev is responding to it?
I last responded less than a week ago, with a diagnosis, a fix, and a request for more information.
We just don't have the capacity to respond more frequently right now.
What I'm not understanding is TOR must be involved in the selection of the exitnode, so how does ayefiles allow a particular node when it picks it, but not when I select it? And how is it "picking it" in the first place? This is very maddening that I can't force the use of the very exit node that I saw a website using.
I offered a diagnosis in my first comment:
It looks like you want chosen_exit_optional set to false, but we don't have a torrc option flag for that yet.
And then asked for your logs, so I could confirm the issue.
I also changed the title of the ticket to a feature request, which is what you asked for in the ticket description:
Finally, if for some reason this is "expected behavior" (though I can't fathom how) please change this to a feature request to add a way to specify a single exit node in a similar way to MapAddress, except that can't be hacked.
I've opened #30110 (moved) for the torrc MapAddress, and #30111 (moved) for the control port MapAddress.
I don't know when we'll implement these features.
They're not requested very often, so it might take us some time.
I thought I'd get this fixed or at least a great explanation of the problem when I managed to describe explicitly how to reproduce it, but now, nothing, except how to access DDG through onion.
This is a public bug tracker. Anyone can post here.
In particular, the cypherpunks account is a shared anonymous account, so those comments may or may not be from a Tor developer.
You also got a reasonable answer on StackExchange:
But unfortunately, the StackExchange commenter did not know that there is no StrictNodes equivalent for MapAddress, and the default action for MapAddress is to find another working exit. That's understandable, because it's not documented in the man page.
I opened #30109 (moved) so we document this behaviour in the man page.
We should be able to update the documentation soon.
In general, Tor tries to use the nodes configured by the operator, but will fall back to using a random, working node. Sometimes we have "strict" options that tell Tor to fail if it can't use those exact nodes. But we usually don't do strict by default, because users get confused and stop using Tor.
Also, we have removed some similar node-choosing options in the past, because using a restricted set of nodes tends to compromise user anonymity. Which is another reason to fall back to a working node.
How is the original poster testing? Is it possible that because this is a cloudflare site, it is sending Tor Browser a redirect to a different destination, and Tor Browser is then going there, which would of course mean it is no longer going to the original destination address?
(Cloudflare uses the alt-svc http header to do some surprise redirections under the hood: https://blog.cloudflare.com/cloudflare-onion-service/ But that in any case is not a bug in the program called Tor and how it handles the .exit notation.)
Apr 10 17:15:36.000 [info] addressmap_rewrite: Addressmap: rewriting "duckduckgo.com" to "duckduckgo.com.719FD0FA327F3CCBCDA0D4EA74C15EA110338942.exit"...Apr 10 17:15:37.000 [info] link_apconn_to_circ: Looks like completed circuit to $719FD0FA327F3CCBCDA0D4EA74C15EA110338942~F3Netze at 185.220.100.252 does allow optimistic data for connection to duckduckgo.com
I get similar results when I use ayefiles.com instead of duckduckgo.com.
Invalid sites fail, rather than choosing a random exit
Apr 10 17:17:48.000 [info] addressmap_rewrite: Addressmap: rewriting "foo.invalid" to "foo.invalid.719FD0FA327F3CCBCDA0D4EA74C15EA110338942.exit"...Apr 10 17:18:05.000 [info] link_apconn_to_circ: Looks like completed circuit to $719FD0FA327F3CCBCDA0D4EA74C15EA110338942~F3Netze at 185.220.100.252 does allow optimistic data for connection to foo.invalid...Apr 10 17:18:15.000 [info] connection_ap_expire_beginning: We tried for 10 seconds to connect to 'foo.invalid' using exit $719FD0FA327F3CCBCDA0D4EA74C15EA110338942~F3Netze at 185.220.100.252. Retrying on a new circuit....Apr 10 17:18:16.000 [info] link_apconn_to_circ: Looks like completed circuit to $719FD0FA327F3CCBCDA0D4EA74C15EA110338942~F3Netze at 185.220.100.252 does allow optimistic data for connection to foo.invalid...Apr 10 17:18:16.000 [info] connection_ap_process_end_not_open: Address 'foo.invalid' refused due to 'resolve failed'. Considering retrying.Apr 10 17:18:16.000 [info] client_dns_incr_failures: Address foo.invalid now has 1 resolve failures.......Apr 10 17:18:20.000 [info] client_dns_incr_failures: Address foo.invalid now has 3 resolve failures.Apr 10 17:18:20.000 [notice] Have tried resolving or connecting to address 'foo.invalid' at 3 different places. Giving up.
(socks4 does a local DNS resolve, and sends the IP. socks5 has the same issue.)
Apr 10 17:21:35.000 [info] link_apconn_to_circ: Looks like completed circuit to $AC93D396F8E86DC3B6DD80C11CA0871C31670C30~NeelTorExitB at 162.244.80.228 does allow optimistic data for connection to 54.206.51.242
But if I've recently used the mapped exit, that circuit might get used again. (Restart Tor to reliably fail to use the exit.)
Apr 10 17:28:06.000 [info] addressmap_rewrite: Addressmap: rewriting "google.com" to "google.com.719FD0FA327F3CCBCDA0D4EA74C15EA110338942.exit"...Apr 10 17:28:07.000 [info] link_apconn_to_circ: Looks like completed circuit to $719FD0FA327F3CCBCDA0D4EA74C15EA110338942~F3Netze at 185.220.100.252 does allow optimistic data for connection to google.com...Apr 10 17:28:08.000 [info] link_apconn_to_circ: Looks like completed circuit to $719FD0FA327F3CCBCDA0D4EA74C15EA110338942~F3Netze at 185.220.100.252 does allow optimistic data for connection to www.google.com
In this case, tor just happens to use the existing circuit. But that's not guaranteed.
Apr 10 17:29:57.000 [info] link_apconn_to_circ: Looks like completed circuit to $D0D5DF6DF35956DB121A10788668C97E63F04C49~trusty at 178.175.143.165 does allow optimistic data for connection to www.google.com
So I'll update the documentation in #30109 (moved), but I'm not sure how else we can help you.
You might need to use MapAddress on the redirect addresses, or maybe the IP addresses?
Apr 10 17:33:11.000 [info] addressmap_rewrite: Addressmap: rewriting "google.com" to "google.com.719FD0FA327F3CCBCDA0D4EA74C15EA110338942.exit"...Apr 10 17:33:12.000 [info] link_apconn_to_circ: Looks like completed circuit to $719FD0FA327F3CCBCDA0D4EA74C15EA110338942~F3Netze at 185.220.100.252 does allow optimistic data for connection to google.com...Apr 10 17:33:13.000 [info] addressmap_rewrite: Addressmap: rewriting "www.google.com" to "www.google.com.719FD0FA327F3CCBCDA0D4EA74C15EA110338942.exit"...Apr 10 17:33:13.000 [info] link_apconn_to_circ: Looks like completed circuit to $719FD0FA327F3CCBCDA0D4EA74C15EA110338942~F3Netze at 185.220.100.252 does allow optimistic data for connection to www.google.com
Otherwise, we really do need the exact steps you're using, and the logs you see with Log "info stderr" SafeLogging 0 (you can replace stderr with a file path).
If you can reproduce this issue using curl, that would help us see what you're seeing.
Trac: Actualpoints: N/Ato 0.3 Type: enhancement to defect Summary: Add a flag to set chosen_exit_optional to false for MapAddress torrc option (and controller?) to MapAddress directive added to torrc doesn't work for some websites, fails to assign specified exit node Status: new to needs_information Keywords: security-low? deleted, N/Aadded