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