]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/blob - docs/known_issues.rst
known_issues: document the google-chart-API privacy leak. Refs #1942.
[tahoe-lafs/tahoe-lafs.git] / docs / known_issues.rst
1 
2 See also cautions.rst_.
3
4 .. _cautions.rst: file:cautions.rst
5
6 ============
7 Known Issues
8 ============
9
10 Below is a list of known issues in recent releases of Tahoe-LAFS, and how to
11 manage them.  The current version of this file can be found at
12 https://tahoe-lafs.org/source/tahoe-lafs/trunk/docs/known_issues.rst .
13
14 If you've been using Tahoe-LAFS since v1.1 (released 2008-06-11) or if you're
15 just curious about what sort of mistakes we've made in the past, then you might
16 want to read `the "historical known issues" document`_.
17
18 .. _the "historical known issues" document: historical/historical_known_issues.txt
19
20
21 Known Issues in Tahoe-LAFS v1.9.2, released 3-Jul-2012
22 ======================================================
23
24   *  `Unauthorized access by JavaScript in unrelated files`_
25   *  `Disclosure of file through embedded hyperlinks or JavaScript in that file`_
26   *  `Command-line arguments are leaked to other local users`_
27   *  `Capabilities may be leaked to web browser phishing filter / "safe browsing" servers`_
28   *  `Known issues in the FTP and SFTP frontends`_
29   *  `Traffic analysis based on sizes of files/directories, storage indices, and timing`_
30   *  `Privacy leak via Google Chart API link in map-update timing web page`_
31
32 ----
33
34 Unauthorized access by JavaScript in unrelated files
35 ----------------------------------------------------
36
37 If you view a file stored in Tahoe-LAFS through a web user interface,
38 JavaScript embedded in that file can, in some circumstances, access other
39 files or directories stored in Tahoe-LAFS that you view through the same
40 web user interface.  Such a script would be able to send the contents of
41 those other files or directories to the author of the script, and if you
42 have the ability to modify the contents of those files or directories,
43 then that script could modify or delete those files or directories.
44
45 This attack is known to be possible when an attacking tab or window could
46 reach a tab or window containing a Tahoe URI by navigating back or forward
47 in the history, either from itself or from any frame with a known name (as
48 specified by the "target" attribute of an HTML link). It might be possible
49 in other cases depending on the browser.
50
51 *how to manage it*
52
53 For future versions of Tahoe-LAFS, we are considering ways to close off
54 this leakage of authority while preserving ease of use -- the discussion
55 of this issue is ticket `#615`_.
56
57 For the present, either do not view files stored in Tahoe-LAFS through a
58 web user interface, or turn off JavaScript in your web browser before
59 doing so, or limit your viewing to files which you know don't contain
60 malicious JavaScript.
61
62 .. _#615: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/615
63
64
65 ----
66
67 Disclosure of file through embedded hyperlinks or JavaScript in that file
68 -------------------------------------------------------------------------
69
70 If there is a file stored on a Tahoe-LAFS storage grid, and that file
71 gets downloaded and displayed in a web browser, then JavaScript or
72 hyperlinks within that file can leak the capability to that file to a
73 third party, which means that third party gets access to the file.
74
75 If there is JavaScript in the file, then it could deliberately leak
76 the capability to the file out to some remote listener.
77
78 If there are hyperlinks in the file, and they get followed, then
79 whichever server they point to receives the capability to the
80 file. Note that IMG tags are typically followed automatically by web
81 browsers, so being careful which hyperlinks you click on is not
82 sufficient to prevent this from happening.
83
84 *how to manage it*
85
86 For future versions of Tahoe-LAFS, we are considering ways to close off
87 this leakage of authority while preserving ease of use -- the discussion
88 of this issue is ticket `#127`_.
89
90 For the present, a good work-around is that if you want to store and
91 view a file on Tahoe-LAFS and you want that file to remain private, then
92 remove from that file any hyperlinks pointing to other people's servers
93 and remove any JavaScript unless you are sure that the JavaScript is not
94 written to maliciously leak access.
95
96 .. _#127: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/127
97
98
99 ----
100
101 Command-line arguments are leaked to other local users
102 ------------------------------------------------------
103
104 Remember that command-line arguments are visible to other users (through
105 the 'ps' command, or the windows Process Explorer tool), so if you are
106 using a Tahoe-LAFS node on a shared host, other users on that host will
107 be able to see (and copy) any caps that you pass as command-line
108 arguments.  This includes directory caps that you set up with the "tahoe
109 add-alias" command.
110
111 *how to manage it*
112
113 As of Tahoe-LAFS v1.3.0 there is a "tahoe create-alias" command that does
114 the following technique for you.
115
116 Bypass add-alias and edit the NODEDIR/private/aliases file directly, by
117 adding a line like this:
118
119   fun: URI:DIR2:ovjy4yhylqlfoqg2vcze36dhde:4d4f47qko2xm5g7osgo2yyidi5m4muyo2vjjy53q4vjju2u55mfa
120
121 By entering the dircap through the editor, the command-line arguments
122 are bypassed, and other users will not be able to see them. Once you've
123 added the alias, if you use that alias instead of a cap itself on the
124 command-line, then no secrets are passed through the command line.  Then
125 other processes on the system can still see your filenames and other
126 arguments you type there, but not the caps that Tahoe-LAFS uses to permit
127 access to your files and directories.
128
129
130 ----
131
132 Capabilities may be leaked to web browser phishing filter / "safe browsing" servers
133 -----------------------------------------------------------------------------------
134
135 Firefox, Internet Explorer, and Chrome include a "phishing filter" or
136 "safe browing" component, which is turned on by default, and which sends
137 any URLs that it deems suspicious to a central server.
138
139 Microsoft gives `a brief description of their filter's operation`_. Firefox
140 and Chrome both use Google's `"safe browsing API"`_ (`specification`_).
141
142 This of course has implications for the privacy of general web browsing
143 (especially in the cases of Firefox and Chrome, which send your main
144 personally identifying Google cookie along with these requests without your
145 explicit consent, as described in `Firefox bugzilla ticket #368255`_.
146
147 The reason for documenting this issue here, though, is that when using the
148 Tahoe-LAFS web user interface, it could also affect confidentiality and integrity
149 by leaking capabilities to the filter server.
150
151 Since IE's filter sends URLs by SSL/TLS, the exposure of caps is limited to
152 the filter server operators (or anyone able to hack the filter server) rather
153 than to network eavesdroppers. The "safe browsing API" protocol used by
154 Firefox and Chrome, on the other hand, is *not* encrypted, although the
155 URL components are normally hashed.
156
157 Opera also has a similar facility that is disabled by default. A previous
158 version of this file stated that Firefox had abandoned their phishing
159 filter; this was incorrect.
160
161 .. _a brief description of their filter's operation: https://blogs.msdn.com/ie/archive/2005/09/09/463204.aspx
162 .. _"safe browsing API": https://code.google.com/apis/safebrowsing/
163 .. _specification: https://code.google.com/p/google-safe-browsing/wiki/Protocolv2Spec
164 .. _Firefox bugzilla ticket #368255: https://bugzilla.mozilla.org/show_bug.cgi?id=368255
165
166
167 *how to manage it*
168
169 If you use any phishing filter or "safe browsing" feature, consider either
170 disabling it, or not using the WUI via that browser. Phishing filters have
171 `very limited effectiveness`_ , and phishing or malware attackers have learnt
172 how to bypass them.
173
174 .. _very limited effectiveness: http://lorrie.cranor.org/pubs/ndss-phish-tools-final.pdf
175
176 To disable the filter in IE7 or IE8:
177 ++++++++++++++++++++++++++++++++++++
178
179 - Click Internet Options from the Tools menu.
180
181 - Click the Advanced tab.
182
183 - If an "Enable SmartScreen Filter" option is present, uncheck it.
184   If a "Use Phishing Filter" or "Phishing Filter" option is present,
185   set it to Disable.
186
187 - Confirm (click OK or Yes) out of all dialogs.
188
189 If you have a version of IE that splits the settings between security
190 zones, do this for all zones.
191
192 To disable the filter in Firefox:
193 +++++++++++++++++++++++++++++++++
194
195 - Click Options from the Tools menu.
196
197 - Click the Security tab.
198
199 - Uncheck both the "Block reported attack sites" and "Block reported
200   web forgeries" options.
201
202 - Click OK.
203
204 To disable the filter in Chrome:
205 ++++++++++++++++++++++++++++++++
206
207 - Click Options from the Tools menu.
208
209 - Click the "Under the Hood" tab and find the "Privacy" section.
210
211 - Uncheck the "Enable phishing and malware protection" option.
212
213 - Click Close.
214
215
216 ----
217
218 Known issues in the FTP and SFTP frontends
219 ------------------------------------------
220
221 These are documented in `docs/frontends/FTP-and-SFTP.rst`_ and on `the SftpFrontend page`_ on the wiki. 
222
223 .. _docs/frontends/FTP-and-SFTP.rst: frontends/FTP-and-SFTP.rst
224 .. _the SftpFrontend page: https://tahoe-lafs.org/trac/tahoe-lafs/wiki/SftpFrontend
225
226
227 ----
228
229 Traffic analysis based on sizes of files/directories, storage indices, and timing
230 ---------------------------------------------------------------------------------
231
232 Files and directories stored by Tahoe-LAFS are encrypted, but the ciphertext
233 reveals the exact size of the original file or directory representation.
234 This information is available to passive eavesdroppers and to server operators.
235
236 For example, a large data set with known file sizes could probably be
237 identified with a high degree of confidence.
238
239 Uploads and downloads of the same file or directory can be linked by server
240 operators, even without making assumptions based on file size. Anyone who
241 knows the introducer furl for a grid may be able to act as a server operator.
242 This implies that if such an attacker knows which file/directory is being
243 accessed in a particular request (by some other form of surveillance, say),
244 then they can identify later or earlier accesses of the same file/directory.
245
246 Observing requests during a directory traversal (such as a deep-check
247 operation) could reveal information about the directory structure, i.e.
248 which files and subdirectories are linked from a given directory.
249
250 Attackers can combine the above information with inferences based on timing
251 correlations. For instance, two files that are accessed close together in
252 time are likely to be related even if they are not linked in the directory
253 structure. Also, users that access the same files may be related to each other.
254
255
256 ----
257
258 Privacy leak via Google Chart API link in map-update timing web page
259 --------------------------------------------------------------------
260
261 The Tahoe web-based user interface includes a diagnostic page known as the
262 "map-update timing page". It is reached through the "Recent and Active
263 Operations" link on the front welcome page, then through the "Status" column
264 for "map-update" operations (which occur when mutable files, including
265 directories, are read or written). This page contains per-server response
266 times, as lines of text, and includes an image which displays the response
267 times in graphical form. The image is generated by constructing a URL for the
268 `Google Chart API <https://developers.google.com/chart/image/>`_, which is
269 then served by the `chart.apis.google.com` internet server.
270
271 When you view this page, several parties may learn information about your
272 Tahoe activities. The request will typically include a "Referer" header,
273 revealing the URL of the mapupdate status page (which is typically something
274 like "http://127.0.0.1:3456/status/mapupdate-123") to network observers and
275 the Google API server. The image returned by this server is typically a PNG
276 file, but either the server or a MitM attacker could replace it with
277 something malicious that attempts to exploit a browser rendering bug or
278 buffer overflow. (Note that browsers do not execute scripts inside IMG tags,
279 even for SVG images).
280
281 In addition, if your Tahoe node connects to its grid over Tor or i2p, but the
282 web browser you use to access it does not, then this image link may reveal
283 your use of Tahoe to the outside world. It is not recommended to use a
284 browser in this way, because other links in Tahoe-stored content would reveal
285 even more information (e.g. an attacker could store an HTML file with unique
286 CSS references into a shared Tahoe grid, then send your pseudonym a message
287 with its URI, then observe your browser loading that CSS file, and thus link
288 the source IP address of your web client to that pseudonym).
289
290 A future version of Tahoe will probably replace the Google Chart API link
291 (which was deprecated by Google in April 2012) with client-side javascript
292 using d3.js, removing the information leak but requiring JS to see the chart.
293 See ticket `#1942`_ for details.
294
295 .. _#1942: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1942
296
297 ----
298
299 Known Issues in Tahoe-LAFS v1.9.0, released 31-Oct-2011
300 =======================================================
301
302
303 Integrity Failure during Mutable Downloads
304 ------------------------------------------
305
306 Under certain circumstances, the integrity-verification code of the mutable
307 downloader could be bypassed. Clients who receive carefully crafted shares
308 (from attackers) will emit incorrect file contents, and the usual
309 share-corruption errors would not be raised. This only affects mutable files
310 (not immutable), and only affects downloads that use doctored shares. It is
311 not persistent: the threat is resolved once you upgrade your client to a
312 version without the bug. However, read-modify-write operations (such as
313 directory manipulations) performed by vulnerable clients could cause the
314 attacker's modifications to be written back out to the mutable file, making
315 the corruption permanent.
316
317 The attacker's ability to manipulate the file contents is limited. They can
318 modify FEC-encoded ciphertext in all but one share. This gives them the
319 ability to blindly flip bits in roughly 2/3rds of the file (for the default
320 k=3 encoding parameter). Confidentiality remains intact, unless the attacker
321 can deduce the file's contents by observing your reactions to corrupted
322 downloads.
323
324 This bug was introduced in 1.9.0, as part of the MDMF-capable downloader, and
325 affects both SDMF and MDMF files. It was not present in 1.8.3.
326
327 *how to manage it*
328
329 There are three options:
330
331 * Upgrade to 1.9.1, which fixes the bug
332 * Downgrade to 1.8.3, which does not contain the bug
333 * If using 1.9.0, do not trust the contents of mutable files (whether SDMF or
334   MDMF) that the 1.9.0 client emits, and do not modify directories (which
335   could write the corrupted data back into place, making the damage
336   persistent)
337
338
339 .. _#1654: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1654
340
341 ----
342
343 Known Issues in Tahoe-LAFS v1.8.2, released 30-Jan-2011
344 =======================================================
345
346
347 Unauthorized deletion of an immutable file by its storage index
348 ---------------------------------------------------------------
349
350 Due to a flaw in the Tahoe-LAFS storage server software in v1.3.0 through
351 v1.8.2, a person who knows the "storage index" that identifies an immutable
352 file can cause the server to delete its shares of that file.
353
354 If an attacker can cause enough shares to be deleted from enough storage
355 servers, this deletes the file.
356
357 This vulnerability does not enable anyone to read file contents without
358 authorization (confidentiality), nor to change the contents of a file
359 (integrity).
360
361 A person could learn the storage index of a file in several ways:
362
363 1. By being granted the authority to read the immutable file: i.e. by being
364    granted a read capability to the file. They can determine the file's
365    storage index from its read capability.
366
367 2. By being granted a verify capability to the file. They can determine the
368    file's storage index from its verify capability. This case probably
369    doesn't happen often because users typically don't share verify caps.
370
371 3. By operating a storage server, and receiving a request from a client that
372    has a read cap or a verify cap. If the client attempts to upload,
373    download, or verify the file with their storage server, even if it doesn't
374    actually have the file, then they can learn the storage index of the file.
375
376 4. By gaining read access to an existing storage server's local filesystem,
377    and inspecting the directory structure that it stores its shares in. They
378    can thus learn the storage indexes of all files that the server is holding
379    at least one share of. Normally only the operator of an existing storage
380    server would be able to inspect its local filesystem, so this requires
381    either being such an operator of an existing storage server, or somehow
382    gaining the ability to inspect the local filesystem of an existing storage
383    server.
384
385 *how to manage it*
386
387 Tahoe-LAFS version v1.8.3 or newer (except v1.9a1) no longer has this flaw;
388 if you upgrade a storage server to a fixed release then that server is no
389 longer vulnerable to this problem.
390
391 Note that the issue is local to each storage server independently of other
392 storage servers: when you upgrade a storage server then that particular
393 storage server can no longer be tricked into deleting its shares of the
394 target file.
395
396 If you can't immediately upgrade your storage server to a version of
397 Tahoe-LAFS that eliminates this vulnerability, then you could temporarily
398 shut down your storage server. This would of course negatively impact
399 availability -- clients would not be able to upload or download shares to
400 that particular storage server while it was shut down -- but it would protect
401 the shares already stored on that server from being deleted as long as the
402 server is shut down.
403
404 If the servers that store shares of your file are running a version of
405 Tahoe-LAFS with this vulnerability, then you should think about whether
406 someone can learn the storage indexes of your files by one of the methods
407 described above. A person can not exploit this vulnerability unless they have
408 received a read cap or verify cap, or they control a storage server that has
409 been queried about this file by a client that has a read cap or a verify cap.
410
411 Tahoe-LAFS does not currently have a mechanism to limit which storage servers
412 can connect to your grid, but it does have a way to see which storage servers
413 have been connected to the grid. The Introducer's front page in the Web User
414 Interface has a list of all storage servers that the Introducer has ever seen
415 and the first time and the most recent time that it saw them. Each Tahoe-LAFS
416 gateway maintains a similar list on its front page in its Web User Interface,
417 showing all of the storage servers that it learned about from the Introducer,
418 when it first connected to that storage server, and when it most recently
419 connected to that storage server. These lists are stored in memory and are
420 reset to empty when the process is restarted.
421
422 See ticket `#1528`_ for technical details.
423
424 .. _#1528: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1528