[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-bugs] #25979 [Core Tor/Stem]: Stem, Tor LTS, broken exit policies, and maybe microdescriptor issues too
#25979: Stem, Tor LTS, broken exit policies, and maybe microdescriptor issues too
-------------------------------+--------------------
Reporter: pastly | Owner: atagar
Type: defect | Status: new
Priority: Medium | Milestone:
Component: Core Tor/Stem | Version:
Severity: Normal | Keywords:
Actual Points: | Parent ID:
Points: | Reviewer:
Sponsor: |
-------------------------------+--------------------
[https://github.com/pastly/simple-bw-
scanner/blob/656619f51ecfb88ff8909b79c5bd7c6830ec7872/sbws/lib/relaylist.py#L71
Here in sbws ] I'm wanting to see what exits in the Tor network allow
exiting to an ip:port.
However, there seems to be an issue revolving around microdescriptors and
the "exit policy summaries" contained in them. Perhaps related to #24110,
I can't tell because I don't understand these details enough.
stem version: 1.6.0
Tor version: 0.2.9.14
torrc:
{{{
ORPort 3537
SocksPort 3538
ControlPort 3536
CookieAuthentication 1
DataDirectory /home/pastly/run/livenet1
PidFile /home/pastly/run/livenet1/tor.pid
Log notice file /home/pastly/run/livenet1/notice.log
ControlSocket /home/pastly/run/livenet1/control_socket
ContactInfo XXXXXXXXXXXX
RunAsDaemon 1
Nickname XXXXXXXXXXXXX
SafeLogging 0
DisableDebuggerAttachment 0
MaxAdvertisedBandwidth 8 Mbits
ExitRelay 1
ExitPolicyRejectPrivate 0
# The public IP address of this machine, and a port on it
ExitPolicy accept xx.xx.xx.xx:yyyy
ExitPolicy reject *:*
}}}
Traceback:
Mostly unhelpful, since it's mostly code in my "http" branch of sbws. But
you can see the exception.
`e` is a RouterStatusEntryV3 for a relay with the Exit flag
{{{
Traceback (most recent call last):
File "/home/pastly/src/simple-bw-scanner/sbws/core/scanner.py", line
247, in dispatch_worker_thread
return measure_relay(*a, **kw)
File "/home/pastly/src/simple-bw-scanner/sbws/core/scanner.py", line
193, in measure_relay
exits = rl.exits_can_exit_to(dest.hostname, dest.port)
File "/home/pastly/src/simple-bw-scanner/sbws/lib/relaylist.py", line
100, in exits_can_exit_to
if e.exit_policy.can_exit_to(host, port):
KeyError: (<stem.exit_policy.MicroExitPolicy object at 0x7f9c8c5f5ac8>,
'144.217.254.208', 80)
}}}
If I try only giving a port, same basic traceback (only last few lines
included) ...
{{{
File "/home/pastly/src/simple-bw-scanner/sbws/lib/relaylist.py", line
101, in exits_can_exit_to
if e.exit_policy.can_exit_to(port=port):
KeyError: (<stem.exit_policy.MicroExitPolicy object at 0x7fb97545fd30>,
<object object at 0x7fb992dba080>, ('port', 80))
}}}
Additional information:
- If I use an 02914 client without setting `UseMicrodescriptors 0`, the
exit_policy members are None. (hence some disconnect between line numbers
in the tracebook in order to find and log Nones)
- If I use an 02914 client with `UseMicrodescriptors 0`, I get the above
tracebacks
- If I use an 02914 relay as the client, I get the above traceback
- This wasn't an issue when I was using an 03210 authority as the client
My theories:
- In 02914, one must tell Tor to NOT use microdescs in order to get
SOMETHING stored as a RouterStatusEntryV3's exit policy
- Even when you get SOMETHING stored in a RouterStatusEntryV3's exit
policy when using 02914, it is buggy/missing information/something bad.
- Something changed between 02914 and 03210 regarding the way Tor tells
its controllers about (micro)descriptors and the exit policies within.
This is most likely a stem bug, possibly exacerbated by a Tor bug.
--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/25979>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online
_______________________________________________
tor-bugs mailing list
tor-bugs@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-bugs