[tor-bugs] #10047 [Pluggable transport]: PTs could self-shutdown when they detect their stdout is closed

Tor Bug Tracker & Wiki blackhole at torproject.org
Tue Apr 8 09:20:29 UTC 2014


#10047: PTs could self-shutdown when they detect their stdout is closed
-------------------------------------+-------------------------------
     Reporter:  infinity0            |      Owner:  asn
         Type:  enhancement          |     Status:  new
     Priority:  normal               |  Milestone:
    Component:  Pluggable transport  |    Version:
   Resolution:                       |   Keywords:  needs-spec-change
Actual Points:                       |  Parent ID:  #10629
       Points:                       |
-------------------------------------+-------------------------------

Comment (by dcf):

 I found that you can make this idea work without any changes to tor. All
 you have to do is introduce a process that interposes between tor and the
 pluggable transport, and write the pluggable transport so that it
 interprets a closed stdin as a command to terminate. tor calls
 TerminateProcess on the buffer process, which dies immediately. The death
 of the buffer process closes the stdin of the pluggable transport.

 Here's a short implementation of the idea.
  * https://gitweb.torproject.org/pluggable-
 transports/meek.git/blob/5eeb8439d64c36971da3717b4163c8220f74a164
 :/processterminate-buffer/main.go
 The processterminate-buffer program is what gets called by tor.
 processterminate-buffer just executes the command given by its arguments
 and creates a pipe to the subcommand's stdin. The way it looks
 [https://gitweb.torproject.org/user/dcf/tor-browser-
 bundle.git/blob/861e270c648439a02189604bdb6ef68e994b1f16:/Bundle-
 Data/beta/windows/torrc-defaults-appendix#l39 in torrc] is:
 {{{
 ClientTransportPlugin meek exec ./Tor/PluggableTransports
 /processterminate-buffer ./Tor/PluggableTransports/meek-client-torbrowser
 --url=https://meek-reflect.appspot.com/ --front=www.google.com --log meek-
 client.log
 }}}
 That is, you just stick "processterminate-buffer" in front of the command
 line you were using before.

 I tested it in the [https://gitweb.torproject.org/user/dcf/tor-browser-
 bundle.git/tag/refs/tags/tbb-3.5.2.1-meek-5 tbb-3.5.2.1-meek-5] bundles,
 where the process tree looks like
 {{{
 tor
   processterminate-buffer
     meek-client-torbrowser
       firefox
       meek-client
 }}}
 When tor kill processterminate-buffer, meek-client-torbrowser notices and
 cleans up its own children.

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


More information about the tor-bugs mailing list