|
1 // # Test for TB4: Tor Browser's Firefox preference overrides |
|
2 // Simple regression tests to check the value of each pref and |
|
3 // decides if it is set as expected. |
|
4 |
|
5 // TODO: Write unit tests to check that each pref setting here |
|
6 // causes the browser to have the desired behavior (a big task). |
|
7 |
|
8 function test() { |
|
9 |
|
10 let expectedPrefs = [ |
|
11 // Disable browser auto updaters and associated homepage notifications |
|
12 ["app.update.auto", false], |
|
13 ["app.update.enabled", false], |
|
14 ["browser.search.update", false], |
|
15 ["browser.rights.3.shown", true], |
|
16 ["browser.startup.homepage_override.mstone", "ignore"], |
|
17 ["startup.homepage_welcome_url", ""], |
|
18 ["startup.homepage_override_url", ""], |
|
19 |
|
20 // Disk activity: Disable Browsing History Storage |
|
21 ["browser.privatebrowsing.autostart", true], |
|
22 ["browser.cache.disk.enable", false], |
|
23 ["browser.cache.offline.enable", false], |
|
24 ["dom.indexedDB.enabled", false], |
|
25 ["permissions.memory_only", true], |
|
26 ["network.cookie.lifetimePolicy", 2], |
|
27 ["browser.download.manager.retention", 1], |
|
28 ["security.nocertdb", true], |
|
29 |
|
30 // Disk activity: TBB Directory Isolation |
|
31 ["browser.download.useDownloadDir", false], |
|
32 ["browser.shell.checkDefaultBrowser", false], |
|
33 ["browser.download.manager.addToRecentDocs", false], |
|
34 |
|
35 // Misc privacy: Disk |
|
36 ["signon.rememberSignons", false], |
|
37 ["browser.formfill.enable", false], |
|
38 ["signon.autofillForms", false], |
|
39 ["browser.sessionstore.privacy_level", 2], |
|
40 ["media.cache_size", 0], |
|
41 |
|
42 // Misc privacy: Remote |
|
43 ["browser.send_pings", false], |
|
44 ["geo.enabled", false], |
|
45 ["geo.wifi.uri", ""], |
|
46 ["browser.search.suggest.enabled", false], |
|
47 ["browser.safebrowsing.enabled", false], |
|
48 ["browser.safebrowsing.malware.enabled", false], |
|
49 ["browser.download.manager.scanWhenDone", false], // prevents AV remote reporting of downloads |
|
50 ["extensions.ui.lastCategory", "addons://list/extension"], |
|
51 ["datareporting.healthreport.service.enabled", false], // Yes, all three of these must be set |
|
52 ["datareporting.healthreport.uploadEnabled", false], |
|
53 ["datareporting.policy.dataSubmissionEnabled", false], |
|
54 ["security.mixed_content.block_active_content", false], // Disable until https://bugzilla.mozilla.org/show_bug.cgi?id=878890 is patched |
|
55 ["browser.syncPromoViewsLeftMap", "{\"addons\":0, \"passwords\":0, \"bookmarks\":0}"], // Don't promote sync |
|
56 ["services.sync.engine.prefs", false], // Never sync prefs, addons, or tabs with other browsers |
|
57 ["services.sync.engine.addons", false], |
|
58 ["services.sync.engine.tabs", false], |
|
59 ["extensions.getAddons.cache.enabled", false], // https://blog.mozilla.org/addons/how-to-opt-out-of-add-on-metadata-updates/ |
|
60 |
|
61 // Fingerprinting |
|
62 ["webgl.min_capability_mode", true], |
|
63 ["webgl.disable-extensions", true], |
|
64 ["dom.battery.enabled", false], // fingerprinting due to differing OS implementations |
|
65 ["dom.network.enabled",false], // fingerprinting due to differing OS implementations |
|
66 ["browser.display.max_font_attempts",10], |
|
67 ["browser.display.max_font_count",10], |
|
68 ["gfx.downloadable_fonts.fallback_delay", -1], |
|
69 ["general.appname.override", "Netscape"], |
|
70 ["general.appversion.override", "5.0 (Windows)"], |
|
71 ["general.oscpu.override", "Windows NT 6.1"], |
|
72 ["general.platform.override", "Win32"], |
|
73 ["general.useragent.override", "Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Firefox/24.0"], |
|
74 ["general.productSub.override", "20100101"], |
|
75 ["general.buildID.override", "20100101"], |
|
76 ["browser.startup.homepage_override.buildID", "20100101"], |
|
77 ["general.useragent.vendor", ""], |
|
78 ["general.useragent.vendorSub", ""], |
|
79 ["dom.enable_performance", false], |
|
80 ["plugin.expose_full_path", false], |
|
81 ["browser.zoom.siteSpecific", false], |
|
82 ["intl.charset.default", "windows-1252"], |
|
83 //["intl.accept_languages", "en-us, en"], // Set by Torbutton |
|
84 //["intl.accept_charsets", "iso-8859-1,*,utf-8"], // Set by Torbutton |
|
85 //["intl.charsetmenu.browser.cache", "UTF-8"], // Set by Torbutton |
|
86 |
|
87 // Third party stuff |
|
88 ["network.cookie.cookieBehavior", 1], |
|
89 ["security.enable_tls_session_tickets", false], |
|
90 ["network.http.spdy.enabled", false], // Stores state and may have keepalive issues (both fixable) |
|
91 ["network.http.spdy.enabled.v2", false], // Seems redundant, but just in case |
|
92 ["network.http.spdy.enabled.v3", false], // Seems redundant, but just in case |
|
93 |
|
94 // Proxy and proxy security |
|
95 ["network.proxy.socks", "127.0.0.1"], |
|
96 ["network.proxy.socks_port", 9150], |
|
97 ["network.proxy.socks_remote_dns", true], |
|
98 ["network.proxy.no_proxies_on", ""], // For fingerprinting and local service vulns (#10419) |
|
99 ["network.proxy.type", 1], |
|
100 ["network.security.ports.banned", "9050,9051,9150,9151"], |
|
101 ["network.dns.disablePrefetch", true], |
|
102 ["network.protocol-handler.external-default", false], |
|
103 ["network.protocol-handler.external.mailto", false], |
|
104 ["network.protocol-handler.external.news", false], |
|
105 ["network.protocol-handler.external.nntp", false], |
|
106 ["network.protocol-handler.external.snews", false], |
|
107 ["network.protocol-handler.warn-external.mailto", true], |
|
108 ["network.protocol-handler.warn-external.news", true], |
|
109 ["network.protocol-handler.warn-external.nntp", true], |
|
110 ["network.protocol-handler.warn-external.snews", true], |
|
111 ["plugins.click_to_play", true], |
|
112 |
|
113 // Network and performance |
|
114 ["network.http.pipelining", true], |
|
115 ["network.http.pipelining.aggressive", true], |
|
116 ["network.http.pipelining.maxrequests", 12], |
|
117 ["network.http.pipelining.ssl", true], |
|
118 ["network.http.proxy.pipelining", true], |
|
119 ["security.ssl.enable_false_start", true], |
|
120 ["network.http.keep-alive.timeout", 20], |
|
121 ["network.http.connection-retry-timeout", 0], |
|
122 ["network.http.max-persistent-connections-per-proxy", 256], |
|
123 ["network.http.pipelining.reschedule-timeout", 15000], |
|
124 ["network.http.pipelining.read-timeout", 60000], |
|
125 // Hacked pref: Now means "Attempt to pipeline at least this many requests together" |
|
126 ["network.http.pipelining.max-optimistic-requests", 3], |
|
127 ["security.disable_session_identifiers", true], |
|
128 |
|
129 // Extension support |
|
130 ["extensions.autoDisableScopes", 0], |
|
131 ["extensions.bootstrappedAddons", "{}"], |
|
132 ["extensions.checkCompatibility.4.*", false], |
|
133 ["extensions.databaseSchema", 3], |
|
134 ["extensions.enabledAddons", "https-everywhere%40eff.org:3.1.4,%7B73a6fe31-595d-460b-a920-fcc0f8843232%7D:2.6.6.1,torbutton%40torproject.org:1.5.2,ubufox%40ubuntu.com:2.6,tor-launcher%40torproject.org:0.1.1pre-alpha,%7B972ce4c6-7e08-4474-a285-3208198ce6fd%7D:17.0.5"], |
|
135 ["extensions.enabledItems", "langpack-en-US@firefox.mozilla.org:,{73a6fe31-595d-460b-a920-fcc0f8843232}:1.9.9.57,{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.2.4,{972ce4c6-7e08-4474-a285-3208198ce6fd}:3.5.8"], |
|
136 ["extensions.enabledScopes", 1], |
|
137 ["extensions.pendingOperations", false], |
|
138 ["xpinstall.whitelist.add", ""], |
|
139 ["xpinstall.whitelist.add.36", ""], |
|
140 |
|
141 // Omnibox settings |
|
142 ["keyword.URL", "https://startpage.com/do/search?q="], |
|
143 |
|
144 // Hacks/workarounds: Direct2D seems to crash w/ lots of video cards w/ MinGW? |
|
145 // Nvida cards also experience crashes without the second pref set to disabled |
|
146 ["gfx.direct2d.disabled", true], |
|
147 ["layers.acceleration.disabled", true], |
|
148 |
|
149 // Security enhancements |
|
150 // https://trac.torproject.org/projects/tor/ticket/9387#comment:17 |
|
151 ["javascript.options.ion.content", false], |
|
152 ["javascript.options.baselinejit.content", false], |
|
153 ["javascript.options.asmjs", false], |
|
154 ["javascript.options.typeinference", false], |
|
155 |
|
156 // Audio_data is deprecated in future releases, but still present |
|
157 // in FF24. This is a dangerous combination (spotted by iSec) |
|
158 ["media.audio_data.enabled", false], |
|
159 |
|
160 // Enable TLS 1.1 and 1.2: |
|
161 // https://trac.torproject.org/projects/tor/ticket/11253 |
|
162 ["security.tls.version.max", 3], |
|
163 |
|
164 // Version placeholder |
|
165 ["torbrowser.version", "UNKNOWN"], |
|
166 |
|
167 ]; |
|
168 |
|
169 |
|
170 |
|
171 |
|
172 let getPref = function (prefName) { |
|
173 let type = gPrefService.getPrefType(prefName); |
|
174 if (type === gPrefService.PREF_INT) return gPrefService.getIntPref(prefName); |
|
175 if (type === gPrefService.PREF_BOOL) return gPrefService.getBoolPref(prefName); |
|
176 if (type === gPrefService.PREF_STRING) return gPrefService.getCharPref(prefName); |
|
177 // Something went wrong. |
|
178 throw new Error("Can't access pref."); |
|
179 }; |
|
180 |
|
181 let testPref = function([key, expectedValue]) { |
|
182 let foundValue = getPref(key); |
|
183 is(foundValue, expectedValue, "Pref '" + key + "' should be '" + expectedValue +"'."); |
|
184 }; |
|
185 |
|
186 expectedPrefs.map(testPref); |
|
187 |
|
188 } // end function test() |