Torbutton Development Branch

Current version: 1.2.0rc6 (12 Jul 2008)

Authors: Scott Squires & Mike Perry
Email: squires at freehaven dot net, mikeperry (o) fscked/org

Install: Local (Javascript verified)
Past Releases: Local (non-https)
Developer Documentation: Torbutton Design Document and Slides (Not actively updated)
Extras: Google search plugins for Google CA, and Google UK.
Source: You can browse the repository or simply unzip the xpi.
Bug Reports: Torproject flyspray
Documents: [ FAQ | changelog | license | credits ]

About

Torbutton is a 1-click way for Firefox users to enable or disable the browser's use of Tor. It adds a panel to the statusbar that says "Tor Enabled" (in green) or "Tor Disabled" (in red). The user may click on the panel to toggle the status. If the user (or some other extension) changes the proxy settings, the change is automatically reflected in the statusbar.

Some users may prefer a toolbar button instead of a statusbar panel. Such a button is included, and one adds it to the toolbar by right-clicking on the desired toolbar, selecting "Customize...", and then dragging the Torbutton icon onto the toolbar. There is an option in the preferences to hide the statusbar panel (Tools->Extensions, select Torbutton, and click on Preferences).

Newer Firefoxes have the ability to send DNS resolves through the socks proxy, and Torbutton will make use of this feature if it is available in your version of Firefox.

FAQ

I can't click on links or hit reload after I toggle Tor! Why?

Due to Firefox Bug 409737, pages can still open popups and perform Javascript redirects and history access after Tor has been toggled. These popups and redirects can be blocked, but unfortunately they are indistinguishable from normal user interactions with the page (such as clicking on links, opening them in new tabs/windows, or using the history buttons), and so those are blocked as a side effect. Once that Firefox bug is fixed, this degree of isolation will become optional (for people who do not want to accidentally click on links and give away information via referrers). A workaround is to right click on the link, and open it in a new tab or window. The tab or window won't load automatically, but you can hit enter in the URL bar, and it will begin loading. Hitting enter in the URL bar will also reload the page without clicking the reload button.

My browser is in some weird state where nothing works right!

Try to disable Tor by clicking on the button, and then open a new window. If that doesn't fix the issue, go to the preferences page and hit 'Restore Defaults'. This should reset the extension and Firefox to a known good configuration. If you can manage to reproduce whatever issue gets your Firefox wedged, please file details at the bug tracker.

When I toggle Tor, my sites that use javascript stop working. Why?

Javascript can do things like wait until you have disabled Tor before trying to contact its source site, thus revealing your IP address. As such, Torbutton must disable Javascript, Meta-Refresh tags, and certain CSS behavior when Tor state changes from the state that was used to load a given page. These features are re-enabled when Torbutton goes back into the state that was used to load the page, but in some cases (particularly with Javascript and CSS) it is sometimes not possible to fully recover from the resulting errors, and the page is broken. Unfortunately, the only thing you can do (and still remain safe from having your IP address leak) is to reload the page when you toggle Tor, or just ensure you do all your work in a page before switching tor state.

When I use Tor, Firefox is no longer filling in logins/search boxes for me. Why?

Currently, this is tied to the "Block history writes during Tor" setting. If you have enabled that setting, all formfill functionality (both saving and reading) is disabled. If this bothers you, you can uncheck that option, but both history and forms will be saved. To prevent history disclosure attacks via Non-Tor usage, it is recommended you disable Non-Tor history reads if you allow history writing during Tor.

Which Firefox extensions should I avoid using?

This is a tough one. There are thousands of Firefox extensions: making a complete list of ones that are bad for anonymity is near impossible. However, here are a few examples that should get you started as to what sorts of behavior are dangerous.

  1. StumbleUpon, et al
  2. These extensions will send all sorts of information about the websites you visit to the stumbleupon servers, and correlate this information with a unique identifier. This is obviously terrible for your anonymity. More generally, any sort of extension that requires registration, or even extensions that provide information about websites you visit should be suspect.
  3. FoxyProxy
  4. While FoxyProxy is a nice idea in theory, in practice it is impossible to configure securely for Tor usage without Torbutton. Like all vanilla third party proxy plugins, the main risks are plugin leakage and history disclosure, followed closely by cookie theft by exit nodes and tracking by adservers (see the Torbutton Adversary Model for more information). However, even with Torbutton installed in tandem and always enabled, it is still very difficult (though not impossible) to configure FoxyProxy securely. Since FoxyProxy's 'Patterns' mode only applies to specific urls, and not to an entire tab, setting FoxyProxy to only send specific sites through Tor will still allow adservers to still learn your real IP. Worse, if those sites use offsite logging services such as Google Analytics, you may still end up in their logs with your real IP. Malicious exit nodes can also cooperate with sites to inject images into pages that bypass your filters. Setting FoxyProxy to only send certain URLs via Non-Tor is much more viable, but be very careful with the filters you allow. For example, something as simple as allowing *google* to go via Non-Tor will still cause you to end up in all the logs of all websites that use Google Analytics! See this question on the FoxyProxy FAQ for more information.
  5. NoScript
  6. Torbutton currently mitigates all known anonymity issues with Javascript. While it may be tempting to get better security by disabling Javascript for certain sites, you are far better off with an all-or-nothing approach. NoScript is exceedingly complicated, and has many subtleties that can surprise even advanced users. For example, addons.mozilla.org verifies extension integrity via Javascript over https, but downloads them in the clear. Not adding it to your whitelist effectively means you are pulling down unverified extensions. Worse still, using NoScript can actually disable protections that Torbutton itself provides via Javascript, yet still allow malicious exit nodes to compromise your anonymity via the default whitelist (which they can spoof to inject any script they want).

Which Firefox extensions do you recommend?

  1. RefControl
  2. Mentioned above, this extension allows more fine-grained referrer spoofing than Torbutton currently provides. It should break less sites than Torbutton's referrer spoofing option.
  3. SafeCache
  4. If you use Tor excessively, and rarely disable it, you probably want to install this extension to minimize the ability of sites to store long term identifiers in your cache. This extension applies same origin policy to the cache, so that elements are retrieved from the cache only if they are fetched from a document in the same origin domain as the cached element.

Are there any other issues I should be concerned about?

There is currently one known unfixed security issue with Torbutton: it is possible to unmask the javascript hooks that wrap the Date object to conceal your timezone in Firefox 2, and the timezone masking code does not work at all on Firefox 3. We are working with the Firefox team to fix one of Bug 399274 or Bug 419598 to address this. In the meantime, it is possible to set the TZ environment variable to UTC to cause the browser to use UTC as your timezone. Under Linux, you can add an export TZ=UTC to the /usr/bin/firefox script, or edit your system bashrc to do the same. Under Windows, you can set either a User or System Environment Variable for TZ via My Computer's properties. In MacOS, the situation is a lot more complicated, unfortunately.

In addition, RSS readers such as Firefox Livemarks can perform periodic fetches. Due to Firefox Bug 436250, there is no way to disable Livemark fetches during Tor. This can be a problem if you have a lot of custom Livemark urls that can give away information about your identity.

Description of Options

The development branch of Torbutton adds several new security features to protect your anonymity from all the major threats the author is aware of. The defaults should be fine for most people, but in case you are the tweaker type, or if you prefer to try to outsource some options to more flexible extensions, here is the complete list. (In an ideal world, these descriptions should all be tooltips in the extension itself, but Firefox bugs 45375 and 218223 currently prevent this).