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