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