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