[tbb-bugs] #18517 [Tor]: meek is broken in Tor Browser 6.0a3

Tor Bug Tracker & Wiki blackhole at torproject.org
Wed Mar 23 01:28:58 UTC 2016


#18517: meek is broken in Tor Browser 6.0a3
-----------------------------------------------+---------------------------
 Reporter:  gk                                 |          Owner:  tbb-team
     Type:  defect                             |         Status:  new
 Priority:  Very High                          |      Milestone:  Tor:
Component:  Tor                                |  0.2.8.x-final
 Severity:  Normal                             |        Version:  Tor:
 Keywords:  regression must-fix-before-028-rc  |  0.2.8.1-alpha
Parent ID:                                     |     Resolution:
 Reviewer:                                     |  Actual Points:
                                               |         Points:
                                               |        Sponsor:  None
-----------------------------------------------+---------------------------

Comment (by yawning):

 Replying to [comment:7 teor]:
 > Hmm, after thinking about this for a few days, I actually think picking
 another dummy IP address and hoping it keeps working in future is a
 brittle approach. I'd rather work out why tor is trying to connect to that
 address in the first place, when the pluggable transport should be the
 thing connecting to it, not tor.

 Because, the code assumes that every node has an IP address (reasonable,
 except for oddball PTs like meek).  How else are you going to identify
 nodes before you bootstrap in the general case anyway? (The relay
 fingerprint on Bridge lines is optional, which doesn't leave many other
 options...).

 > (Am I understanding how pluggable transports work?)
 >
 > I think what tor should do is:
 > * if a transport is specified in the Bridge line, and that transport
 corresponds to a ClientTransportPlugin line, tor should pass the address
 in the bridge line to the pluggable transport, and not try to connect to
 that address itself. (The pluggable transport is free to use [obfsproxy]
 or ignore [meek] that address.)

 This is what it used to do before it changed it, the "decide if need to
 pass it onto a PT" is done at the last possible moment.  What your code
 change effectively does is add "before passing the address to the PT (if
 applicable), check that it is not internal" (See:
 connection_or.c:`connection_or_connect()`).

 This change also breaks normal (non-PT) bridges hosted on an internal
 network, but I'm not sure if that's a common use case for actual users.
 It's rather common for me to run a bridge on the same host (communicating
 over the loopback interface) for testing, but I only need to edit 15 or so
 torrc files....

 The solutions I can think of off the top of my head are:

  * Allow connections to  *all* bridges on "internal addresses".
  * Allow connections to  PT bridges on "internal addresses".
  * Pick a magic address for meek-like transports that bypasses the sanity
 check and document it as "the one true synthetic address to use".

 Out of those the first two options are more appealing to me, and are
 trivial to do...

--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/18517#comment:8>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tbb-bugs mailing list