[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [tor-browser-spec/master] Bug 21256: Included remaining things for the 7.0.x update
commit 2a7263dbf42a6f4ce879a19945fe34bdde1ffad2
Author: Georg Koppen <gk@xxxxxxxxxxxxxx>
Date: Thu Jan 25 12:19:24 2018 +0000
Bug 21256: Included remaining things for the 7.0.x update
---
design-doc/design.xml | 109 +++++++++++++++++++++++++++++++++++++++++++-------
1 file changed, 94 insertions(+), 15 deletions(-)
diff --git a/design-doc/design.xml b/design-doc/design.xml
index 681430f..cdab986 100644
--- a/design-doc/design.xml
+++ b/design-doc/design.xml
@@ -29,7 +29,7 @@
<address><email>gk#torproject org</email></address>
</affiliation>
</author>
- <pubdate>January 24th, 2018</pubdate>
+ <pubdate>January 25th, 2018</pubdate>
</articleinfo>
<sect1>
@@ -2308,6 +2308,7 @@ maximized windows are detrimental to privacy in this mode.
</para>
</listitem>
+
<listitem><command>Display Media information</command>
<para>
@@ -2390,6 +2391,7 @@ a defense-in-depth by setting <command>media.peerconnection.enabled</command> an
<command>media.navigator.enabled</command> to <command>false</command>.
</para>
</listitem>
+
<listitem><command>MIME Types</command>
<para>
@@ -2438,6 +2440,25 @@ properties and <command>0.0</command> for the two last ones.
</para>
</listitem>
+ <listitem><command>Battery Status API</command>
+ <para>
+
+The Battery Status API provides access to information about the system's battery
+charge level. From Firefox 52 on it is disabled for web content. Initially, it
+was possible on Linux to get a double-precision floating point value for the
+charge level, which means there was a large number of possible values making it
+almost behave like an identifier allowing to track a user cross-origin. But
+still after that got fixed (and on other platforms where the precision was just
+two significant digits anyway) the risk for tracking users remained as combined
+with the <command>chargingTime</command> and <command>dischargingTime</command>
+the possible values <ulink url="https://senglehardt.com/papers/iwpe17_battery_status_case_study.pdf">
+got estimated to be in the millons</ulink> under normal conditions. We avoid all
+those possible issues with disabling the Battery Status API by setting
+<command>dom.battery.enabled</command> to <command>false</command>.
+
+ </para>
+ </listitem>
+
<listitem><command>System Uptime</command>
<para>
@@ -2572,10 +2593,15 @@ against timing-based side channel fingerprinting risks.
Due to <ulink url="https://bugzilla.mozilla.org/show_bug.cgi?id=863246">bugs
</ulink> <ulink url="https://bugzilla.mozilla.org/show_bug.cgi?id=1120398">
in Firefox</ulink> it is possible to detect the locale and the platform of a
-Tor Browser user. Moreover, it is possible to find out the extensions a user has
-installed. This is done by including resource:// and/or chrome:// URIs into
-web content which point to resources included in Tor Browser itself or in
-installed extensions.
+Tor Browser user. Moreover, it is possible to
+<ulink url="https://www.usenix.org/system/files/conference/usenixsecurity17/sec17-sanchez-rola.pdf">
+find out the extensions</ulink> a user has installed. This is done by
+including resource:// and/or chrome:// URIs into web content, which point to
+resources included in Tor Browser itself or in installed extensions, and
+exploiting the different behavior resulting out of that: the browser raises
+an exception if a webpage requests a resource but the extension is not
+installed. This does not happen if the extension is indeed installed but the
+resource path does not exist.
</para>
<para>
@@ -2738,6 +2764,33 @@ size exfiltration.
</para>
</listitem>
+
+ <listitem><command>Web Audio API</command>
+ <para>
+
+The <ulink url="https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API">
+Web Audio API</ulink> provides several means to aid in fingerprinting users.
+At the simplest level it allows differentiating between users having the API
+available and those who don't by checking for an <command>AudioContext</command>
+or <command>OscillatorNode</command> object. However, there are more bits of
+information that the Web Audio API reveals if audio signals generated with an
+<command>OscillatorNode</command> are processed as
+<ulink url="https://senglehardt.com/papers/ccs16_online_tracking.pdf">hardware
+and software differences</ulink> influence those results.
+
+ </para>
+ <para>
+
+We disable the Web Audio API by setting <command>dom.webaudio.enabled</command>
+to <command>false</command>. That has the positive side effect that it disables
+one of several means to perform
+<ulink url="https://petsymposium.org/2017/papers/issue2/paper18-2017-2-source.pdf">
+ultrasound cross-device tracking</ulink> as well, which is based on having
+<command>AudioContext</command> available.
+
+ </para>
+ </listitem>
+
<listitem><command>MediaError.message</command>
<para>
@@ -2802,14 +2855,43 @@ datareporting.healthreport.about.reportUrlUnified</command> to <command>
data:text/plain,</command>. The same is done with <command>
datareporting.healthreport.about.reportUrl</command> and the new tiles feature
related <command>browser.newtabpage.directory.ping</command> and <command>
-browser.newtabpage.directory.source</command> preferences. Additionally, we
-disable the UITour backend by setting <command>browser.uitour.enabled</command>
-to <command>false</command>. Finally, we provide <ulink url="https://gitweb.torproject.org/tor-browser.git/commit/?h=tor-browser-52.5.2esr-7.0-2&id=9f24ce35cd8776a0f7c3a4d54992ecb0eaad6311">a patch</ulink>
+browser.newtabpage.directory.source</command> preferences.
+<command>browser.newtabpage.remote</command> is set to <command>false</command>
+in this context as well, as a defense-in-depth given that this feature is
+already of by default. Additionally, we disable the UITour backend by setting
+<command>browser.uitour.enabled</command> to <command>false</command> and avoid
+getting Mozilla experiments installed into Tor Browser by flipping
+<command>experiments.enabled</command> to <command>false</command>. On the
+update side we prevent the browser from pinging the new
+<ulink url="https://wiki.mozilla.org/Firefox/Kinto">Kinto</ulink> service for
+blocklist updates as it is not used for it yet anyway. This is done by setting
+<command>services.blocklist.update_enabled</command> to <command>false</command>.
+The captive portal detection code is disabled as well as it phones home to
+Mozilla. We set <command>network.captive-portal-service.enabled</command> to
+<command>false</command> to achieve that. Unrelated to that we make sure that
+Mozilla does not get bothered with TLS error reports from Tor Browser users by
+hiding the respective checkbox with
+<command>security.ssl.errorReporting.enabled</command> set to
+<command>false</command>. And while we have the Push API disabled as there are
+no Service Workers available in Tor Browser yet, we remove the value for
+<command>dom.push.serverURL</command> as a defense-in-depth. Finally, we provide
+<ulink url="https://gitweb.torproject.org/tor-browser.git/commit/?h=tor-browser-52.5.2esr-7.0-2&id=9f24ce35cd8776a0f7c3a4d54992ecb0eaad6311">a patch</ulink>
to prevent Mozilla's websites from querying whether particular extensions are
installed and what their state in Tor Browser is by using the
<command>window.navigator.AddonManager</command> API. As a defense-in-depth the
patch makes sure that not only Mozilla's websites can't get at that information
but that the whitelist governing this access is empty in general.
+
+ </para>
+
+ <para>
+
+We have <ulink url="https://wiki.mozilla.org/Security/Safe_Browsing">Safebrowsing</ulink>
+disabled in Tor Browser. In order to avoid pinging providers for list updates we
+remove the entries for <command>browser.safebrowsing.provider.mozilla.updateURL</command>
+and <command>browser.safebrowsing.provider.mozilla.gethashURL</command> (and the
+values for Google related preferences as well).
+
</para>
</listitem>
<listitem><command>Operating System Type Fingerprinting</command>
@@ -2839,16 +2921,13 @@ tag on our bug tracker</ulink>.
</para>
<para><command>Implementation Status:</command>
-At least three HTML5 features have different implementation status across the
+At least two HTML5 features have a different implementation status across the
major OS vendors and/or the underlying hardware: the <ulink
-url="https://developer.mozilla.org/en-US/docs/DOM/window.navigator.battery">Battery
-API</ulink>, the <ulink
url="https://developer.mozilla.org/en-US/docs/DOM/window.navigator.connection">Network
Connection API</ulink>, and the <ulink
url="https://wiki.mozilla.org/Sensor_API">Sensor API</ulink>. We disable these APIs through the Firefox preferences
-<command>dom.battery.enabled</command>,
-<command>dom.network.enabled</command>, and
-<command>device.sensors.enabled</command>.
+<command>dom.network.enabled</command> and
+<command>device.sensors.enabled</command>, setting both to <command>false</command>.
</para>
</listitem>
@@ -3786,7 +3865,7 @@ through the source URL parameters.
<para>
We believe the Referer header should be made explicit, and believe that Referrer
-Policy provides a <ulink
+Policy, which is available since Firefox 52, provides a <ulink
url="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-header">
decent step in this direction</ulink>. If a site wishes to transmit its URL to
third party content elements during load or during link-click, it should have
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits