1 Introduction ================================================ Recently, I discovered a security vulnerability in several file-sharing apps: DropBox iOS app, DropBox Android app and Google Drive iOS app. Exploiting this vulnerability, an attacker could steal arbitrary files from a DropBox / Google Drive user by tricking him into viewing a malicious HTML file inside the mobile app. The full blog post, including the advisories, can be found at: http://bit.ly/R6nNee 2 Vulnerability ================================================ A significant feature of file-sharing apps is allowing a user to view either his files or files shared with him. The apps achieve this by using an embedded browser (using the UIWebView/WebView classes in iOS/Android respectively) to display the contents of these files. Amongst numerous file types, these apps allow the user to view HTML files in a rendered format. To do so, these apps use an embedded browser window to render the locally stored HTML file. The method in which these apps render an HTML file has two side effects: 1. JavaScript code contained in the HTML file is automatically executed 2. The HTML content is loaded in a privileged file zone Execution of malicious JavaScript code allows an attacker to steal potentially valuable information from the DOM of the embedded browser, an attack dubbed "Cross-Application Scripting" (XAS). However, because these apps load the HTML file from a privileged zone such as "file:///var/mobile/Applications/APP_UUID/…/maliciousfile.html" (in iOS), the malicious JavaScript can also access the file system with the same permissions as the app. 3 Impact ================================================ By exploiting this vulnerability, an attacker could read and retrieve files that the apps themselves can access. For instance, previously cached files, application configuration files, the device's address book, etc. Furthermore, additional access can be achieved pending on the OS: - In iOS, read access to the user's DropBox unencrypted credentials (../Library/Preferences/com.getdropbox.Dropbox.plist). Having access to the user's credentials allows the attacker to retrieve arbitrary files from the user's account as well as to persist the attack by modifying other HTML files. - In Android, read access to the device's SD card is possible if the app has permission to do so. Once the HTML file is rendered, the JavaScript code executes immediately. However, when the user has finished viewing the file (e.g. pressed the Home button), code execution is suspended until the user views the file again. 4 Vulnerable versions ================================================ DropBox: - Version 1.4.6 (iOS) - Version 2.0.1 (Android) Google Drive: - Version 1.0.1 (iOS) 5 Credit ================================================ Discovered by Roi Saltzman 6 Acknowledgments ================================================ I'd like to thank the DropBox / Google security response teams for the quick fixes!