OWASP Mobile Top 10 Beau Woods http://beauwoods.com @beauwoods To get involved get in touch with the project leader https://www.owasp.org/index.php/OWASP_Mobile_Security_Project OWASP Mobile Top 10 Risks presentation at OWASP Korea July 13, 2013 is licensed under a Creative Commons Attribution 3.0 Unported License.
Mobile Elements Application Application Server Network Hardware Platform Client Backup NFC/RFID Bluetooth Other considerations
Mobile Comparison Use models Capabilities Hardware Platform Mobile Always on Always connected Omnipresent Capabilities Communications Limited resources Highly variable Hardware Extensive RF & SSD Highly variable Not upgradable Platform Highly variable Limited options Variable security Mobile Devices Use models Frequently off Disconnected Location-bound Capabilities Many resources Robust platform Well documented Hardware Limited RF & HDD Highly variable Highly upgradable Platform Standardized Well understood Robust security Traditional Devices Solid State Drives perform an activity called “wear leveling” to prevent frequently used storage areas from being destroyed quickly. This process copies data to other parts of the drive every time the data sector is read or written. Therefore traditional data deletion routines do not work – an important thing to keep in mind. This means that any sensitive information should be strongly protected (encrypted or written to protected storage areas), rather than relying on secure deletion mechanisms.
OWASP Mobile Top 10 Risks M1 Insecure Data Storage M2 Weak Server Side Controls M3 Insufficient Transport Layer Protection M4 Client Side Injection M5 Poor Authorization and Authentication M6 Improper Session Handling M7 Security Decisions via Untrusted Inputs M8 Side Channel Data Leakage M9 Broken Cryptography M10 Sensitive Information Disclosure Alpha Documentation Mobile Security Project Top 10 Risks Top 10 Controls Threat Model Testing Guide Tools Secure Development
M1 Insecure Data Storage Sensitive data Authentication data Regulated information Business-specific information Private information Examples Recommendations Business must define, classify, assign owner & set requirements Acquire, transmit, use and store as little sensitive data as possible Inform and confirm data definition, collection, use & handling Protections Reduce use and storage Encrypt or hash Platform-specific secure storage with restricted permissions Mobile Controls 1, 2 & 7 Path: Collected and uploaded personal information Concur: Stored password in plain text
M2 Weak Server Side Controls Mobile App Servers RESTful API SOAP Web Service Web XML OWASP Top 10 Web Application Risks 2013 A1 Injection A2 Broken Authentication and Session Management A3 Cross-Site Scripting (XSS) A4 Insecure Direct Object References A5 Security Misconfiguration A6 Sensitive Data Exposure A7 Missing Function Level Access Control A8 Cross-Site Request Forgery (CSRF) A9 Using Components with Known Vulnerabilities A10 Unvalidated Redirects and Forwards Recommendations Always validate input Don’t trust the client Harden mobile app servers & services Beware information disclosure Understand host & network controls Perform integrity checking regularly Mobile Controls 5 & 6 Recommendation for future versions Expand to specific risks
M3 Insufficient Transport Layer Protection Impact Expose authentication data Disclosure other sensitive information Injection Data tampering Examples Recommendations Use platform-provided cryptographic libraries Force strong methods & valid certificates Test for certificate errors & warnings Use pre-defined certificates, as appropriate Encrypt sensitive information before sending All transport, including RFID, NFC, Bluetooth Wifi, Carrier Avoid HTTP GET method Mobile Controls 3 Google Wallet NFC MITM PayPal failure to validate certificates Apple iOS AppStore MITM led to circumventing purchases
M4 Client Side Injection Impact App or device compromise Abuse resources or services (SMS, phone, payments, online banking) Extract or inject data Man-in-the-Browser (MITB) Recommendations Always validate input Don’t trust the server Harden mobile app clients Beware information disclosure Perform integrity checking regularly Mobile Controls 9 Recommendation for future versions Improve or eliminate
M5 Poor Authorization and Authentication Impacts Account takeover Confidentiality breach Fraudulent transactions Examples Most common methods Account name Password Oauth HTTP Cookies Stored passwords Unique tokens Recommendations Use appropriate methods for the risk Unique identifiers as additional (not only) factors Differentiate client-side passcode vs. server authentication Ensure out-of-band methods are truly OOB (this is hard) Hardware-independent identifiers (ie. Not IMSI, serial, etc.) Multi-factor authentication, depending on risk Define & enforce password length, strength & uniqueness Mobile Controls 4 Dropbox: Used only a unique ID to authenticate, no password required; password reset doesn’t protect assets Audible: Used plaintext password to authenticate and used HTTP GET method OOB: Remember, mobile devices can potentially intercept phone calls, SMS and email
M6 Improper Session Handling Impacts Account takeover Confidentiality breach Fraudulent transactions Most common methods Oauth HTTP Cookies Stored passwords Unique tokens Recommendations Allow revocation of device/password Use strong tokens and generation methods Consider appropriate session length (longer than web) Reauthenticate periodically or after focus change Store and transmit session tokens securely Mobile Controls 4
M7 Security Decisions via Untrusted Inputs Description Reliance on files, settings, network resources or other inputs which may be modified. Examples DNS settings Cookies Configuration files Network injection Mobile malware URL calls Recommendations Validate all inputs Digitally sign decisioning inputs, where possible Ensure trusted data sources for security decisions Recommendation for future versions Improve or eliminate
M8 Side Channel Data Leakage Caches Keystroke logging (by platform) Screenshots (by platform) Logs Examples Recommendations Consider server-side leakage Reduce client-side logging Consider mobile-specific private information Consider platform-specific data capture features Securely cache data (consider SSD limitations) Mobile Controls 1, 2, 3, 6 & 7 Android: Information sent to advertisers http://news.techeye.net/mobile/many-android-apps-send-your-private-information-to-advertisers Apple: Collected and stored mobile tower data; called before US Congress to answer questions Audible: Stored URL with password in logfile, also in GET request stored in web server log Recommendation for future versions Consider combining with M10 Consider incorporating the idea of collecting unnecessary but potentially sensitive or private information
M9 Broken Cryptography Cryptography Recommendations …is not encoding …is not obfuscation …is not serialization …is best left to the experts “The only way to tell good cryptography from bad cryptography is to have it examined by experts.” -Bruce Schneier Examples Recommendations Use only well-vetted cryptographic libraries Understand one-way vs. two-way encryption Use only well-vetted cryptographic libraries (not a typo) Use only platform-provided cryptographic storage Use only well-vetted cryptographic libraries (still not a typo) Protect cryptographic keys fanatically Use only well-vetted cryptographic libraries (seriously - always do this) Mobile Controls 1, 2 & 3
M10 Sensitive Information Disclosure Sensitive application data API or encryption keys Passwords Sensitive business logic Internal company information Debugging or maintenance information M1 deals with customer data M10 deals with application or developer data Recommendations Store sensitive application data server-side Avoid hardcoding information in the application Use platform-specific secure storage areas Recommendation for future versions Consider combining with M8
Case Study M1 Insecure Data Storage Risks & mitigating factors Account number & passcode stored in flat text file Risks & mitigating factors Passcode not used for other systems App contained and accessed sensitive and private information http://www.secureworks.com/cyber-threat-intelligence/advisories/SWRX-2011-002/
Case Study M5 Poor Authorization & Authentication Account name and password in plain text Used HTTP GET method (logged to server) M8 Side Channel Data Leakage Logged password to client and server M9 Broken Cryptography First attempt to fix issue obfuscated password Risks & mitigating factors Same password used for web application Password reuse likely Stored password securely http://www.secureworks.com/cyber-threat-intelligence/advisories/SWRX-2011-004/
Case Study M1 Insecure Data Storage Risks & mitigating factors Account name & password stored in flat text file Risks & mitigating factors App accessed private information Password reuse likely App used in Arab Spring and other protests http://stratigossecurity.com/2012/10/03/security-advisory-ustream-mobile-application/
DIY Vulnerability Discovery Explore files on mobile devices and backups Search for passwords Sniff network connections Downgrade SSL OWASP Resources WebScarab GoatDroid iGoat MobiSec iMas Mobile Testing Guide
We have a long road ahead – your comments and participation are appreciated Beau Woods http://beauwoods.com @beauwoods To get involved get in touch with the project leader https://www.owasp.org/index.php/OWASP_Mobile_Security_Project