[tor-commits] [tor-browser-spec/master] Document Firefox patches.
mikeperry at torproject.org
mikeperry at torproject.org
Mon Apr 28 15:18:47 UTC 2014
commit e6c051cd7ae5caf544eac03b2eefa8dd646ea192
Author: Mike Perry <mikeperry-git at fscked.org>
Date: Sat Sep 24 05:04:38 2011 -0700
Document Firefox patches.
Also provide a sketch for the New Identity section.
---
docs/design/design.xml | 118 +++++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 106 insertions(+), 12 deletions(-)
diff --git a/docs/design/design.xml b/docs/design/design.xml
index 619f76d..0d3d385 100644
--- a/docs/design/design.xml
+++ b/docs/design/design.xml
@@ -601,7 +601,6 @@ and/or what additional work or auditing needs to be done.
</sect2>
<sect2 id="identifier-linkability">
<title>Cross-Domain Identifier Unlinkability</title>
- <!-- XXX: Design goals vs implementation status -->
<para>
The Tor Browser MUST prevent a user's activity on one site from being linked
@@ -686,9 +685,10 @@ cases</ulink> are expected to fail.
<listitem>HTTP Auth
<para>
-HTTP authentication tokens are removed for third parties
-on-modify-request observer to remove the heads. However, we also needed to
-<ulink
+HTTP authentication tokens are removed for third parties on-modify-request
+observer to remove the headers to prevent <ulink
+url="http://jeremiahgrossman.blogspot.com/2007/04/tracking-users-without-cookies.html">silent
+linkability between domains</ulink>. We also needed to <ulink
url="https://gitweb.torproject.org/torbrowser.git/blob/refs/heads/maint-2.2:/src/current-patches/0004-Add-HTTP-auth-headers-before-the-modify-request-obse.patch">patch
Firefox to cause the headers to get added early enough</ulink> to allow the
observer to modify it.
@@ -755,6 +755,25 @@ functionality.
<para>
</para>
</sect2>
+ <sect2 id="new-identity">
+ <title>Provide "New Identity" button to purge all state</title>
+ <para>
+XXX: make this prettier
+ 0. Disables all open tabs and windows.
+ 1. Closes all tabs and windows
+ 2. Clears state:
+ a. OCSP
+ b. Cache
+ c. Site-specific zoom
+ d. Cookies+DOM Storage+safe browsing key
+ e. google wifi geolocation token
+ f. http auth
+ g. SSL Session IDs
+ h. last open location url
+ i. clear content prefs
+ 3. Sends tor the NEWNYM signal to get a new circuit
+ </para>
+ </sect2>
<sect2 id="click-to-play">
<title>Click-to-play for plugins and invasive content</title>
<para>
@@ -774,34 +793,109 @@ audio and video objects.
<sect2 id="firefox-patches">
<title>Description of Firefox Patches</title>
<para>
-https://gitweb.torproject.org/torbrowser.git/tree/refs/heads/maint-2.2:/src/current-patches
+The set of patches we have against Firefox can be found in the <ulink
+url="https://gitweb.torproject.org/torbrowser.git/tree/refs/heads/maint-2.2:/src/current-patches">current-patches
+directory of the torbrowser git repository</ulink>
</para>
<orderedlist>
<listitem>Block Components.interfaces and Components.lookupMethod
- <para> </para>
+ <para>
+
+In order to reduce fingerprinting, we block access to these two interfaces
+from content script. Components.lookupMethod can undo our javascript hooks,
+and Components.interfaces is useful for fingerprinting the platform, OS, and
+Firebox version.
+
+ </para>
</listitem>
<listitem>Make Permissions Manager memory only
- <para> </para>
+ <para>
+
+This patch exposes a pref 'permissions.memory_only' that properly isolates the
+permissions manager to memory, which is responsible for all user specified
+site permissions, as well as stored HTTPS STS policy from visited sites.
+
+The pref does successfully clear the permissions manager memory if toggled. It
+does not need to be set in prefs.js, and can be handled by Torbutton.
+
+ </para>
+ <para><command>Design Goal:</command>
+
+As an additional design goal, we would like to later this patch to allow this
+information to be cleared from memory. The implementation does not currently
+allow this.
+
+ </para>
</listitem>
<listitem>Make Intermediate Cert Store memory-only
- <para> </para>
+ <para>
+
+The intermediate certificate store holds information about SSL certificates
+that may only be used by a limited number of domains. in some cases
+effectively recording on disk the fact that a website owned by a certain
+organization was viewed.
+
+ </para>
+ <!-- FIXME: Should these design goals be <note> tags? -->
+ <para><command>Design Goal:</command>
+
+As an additional design goal, we would like to later this patch to allow this
+information to be cleared from memory. The implementation does not currently
+allow this.
+
+ </para>
</listitem>
<listitem>Add HTTP auth headers before on-modify-request fires
- <para> </para>
+ <para>
+
+This patch provides a trivial modification to allow us to properly remove HTTP
+auth for third parties. This patch allows us to defend against an adversary
+attempting to use <ulink
+url="http://jeremiahgrossman.blogspot.com/2007/04/tracking-users-without-cookies.html">HTTP
+auth to silently track users between domains</ulink>.
+
+ </para>
</listitem>
<listitem>Add a string-based cacheKey property for domain isolation
- <para> </para>
+ <para>
+
+To <ulink
+url="https://trac.torproject.org/projects/tor/ticket/3666">increase the
+security of cache isolation</ulink> and to <ulink
+url="https://trac.torproject.org/projects/tor/ticket/3754">solve strange and
+unknown conflicts with OCSP</ulink>, we had to <ulink
+url="https://gitweb.torproject.org/torbrowser.git/blob/refs/heads/maint-2.2:/src/current-patches/0005-Add-a-string-based-cacheKey.patch">patch
+Firefox to provide a cacheDomain cache attribute</ulink>. We use the full
+url bar domain as input to this field.
+
+ </para>
</listitem>
<listitem>Randomize HTTP pipeline order and depth
<para>
-https://blog.torproject.org/blog/experimental-defense-website-traffic-fingerprinting
+As an
+<ulink
+url="https://blog.torproject.org/blog/experimental-defense-website-traffic-fingerprinting">experimental
+defense against Website Traffic Fingerprinting</ulink>, we patch the standard
+HTTP pipelining code to randomize the number of requests in a
+pipeline, as well as their order.
</para>
</listitem>
<listitem>Block all plugins except flash
- <para> </para>
+ <para>
+<!-- XXX: Why allow flash at all?? Justify w/ a design goal describing a
+happy, safe-flash future... But here, or in some other section?? -->
+We cannot use the @mozilla.org/extensions/blocklist;1 service, because we
+actually want to stop plugins from ever entering the browser's process space
+and/or executing code (for example, AV plugins that collect statistics/analyse
+urls, magical toolbars that phone home or "help" the user, skype buttons that
+ruin our day, and censorship filters). Hence we rolled our own.
+ </para>
</listitem>
<listitem>Make content-prefs service memory only
<para>
+This patch prevents random urls from being inserted into content-prefs.sqllite in
+the profile directory as content prefs change (includes site-zoom and perhaps
+other site prefs?).
</para>
</listitem>
</orderedlist>
More information about the tor-commits
mailing list