Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Mobile apps security. Beyond XSS, CSRF and SQLi

765 views

Published on

This talk will be focused on how to develop secure mobile apps. We will look into specifics regarding mobile development and what are the best practices. Usually developers take into account the well-known vulnerabilities such as SQLi, XSS, CSRF, etc. forgetting about those impacting specifically the mobile platform. We will make an emphasis on all those other issues affecting the mobile platform such as protocols, secure storage, secrets, caching, logging, etc.

Published in: Technology
  • Be the first to comment

Mobile apps security. Beyond XSS, CSRF and SQLi

  1. 1. Building Secure Mobile Apps Sergey Gorbaty @ser_gor Martin Vigo @martin_vigo
  2. 2. Martin Vigo Product Security Engineer
  3. 3. Sergey Gorbaty Senior Product Security Engineer
  4. 4. Outline ¡ Attacks on Mobile Apps ¡ Developing Secure Mobile Apps ¡ What Frameworks Help You With ¡ Demos
  5. 5. Attacks on Mobile Apps
  6. 6. Mobile App Threats ¡ Native Mobile App Threats ¡ File system, DB Storage, Logs ¡ Network Communication ¡ Clipboard ¡ Backups ¡ RPC, URL scheme handlers ¡ Web App Threats ¡ Input validation ¡ Session management ¡ Web app logic flaws ¡ Web vulnerabilities ¡ XSS, CSRF ¡ Injections ¡  SQL, header
  7. 7. Outline ¡ Attacks on Mobile Apps ¡ Developing Secure Mobile Apps ¡ What Frameworks Help You With ¡ Demos
  8. 8. Developing Secure Mobile Apps ¡ iOS/OS X ‘Secure Coding Guide’ ¡ Comprehensive, 120 pages long ¡ Covers topics from buffer overflows to web vulnerabilities ¡ https://developer.apple.com/library/iOs/documentation/ Security/Conceptual/SecureCodingGuide/SecureCodingGuide.pdf ¡ Android.com ‘Security Tips’ ¡ 6 articles on ¡ Storing data ¡ Using permissions ¡ Using networking ¡ Using RPC ¡ Webview security ¡ http://developer.android.com/training/articles/security-tips.html
  9. 9. File System
  10. 10. Excessive Logging ¡ Explicit logging ¡ Debugging ¡ Feedback ¡ Analytics ¡ Automatic logging ¡ Generic information ¡ Exceptions
  11. 11. Excessive Logging - TODO ¡  Do not log credentials including username, password, and OAuth tokens ¡  Do not log emails, names, titles, company information ¡  Do not log hardware ids including IMEI, UDID ¡  Prefer to log internal opaque IDs if possible ¡ Disable logging before shipping
  12. 12. Hardcoded Secrets ¡ Encryption keys ¡ PINs ¡ Settings ¡ Credentials
  13. 13. Hardcoded Secrets - TODO ¡ Don’t hardcode ANY secrets ¡ Query secrets only when necessary ¡ Don’t keep them in memory longer than needed. ¡ Do not assign secrets to global variables ¡ Disable autocorrect on sensitive fields
  14. 14. Insecure storage ¡ Explicit storage ¡ Data ¡ Preferences ¡ Logs ¡ Crash Reports ¡ Automatic storage ¡ Temp Files ¡ Cache
  15. 15. Insecure storage - TODO ¡ Use secure storage for secrets ¡ Keychain ¡ AccountManager ¡ Verify that no sensitive data is stored without your knowledge ¡ Control App flow and encrypt data when device is in background or locked
  16. 16. Automatic Caching ¡ Databases ¡ Preference files ¡ Plists ¡ Logs ¡ Requests and responses
  17. 17. Automatic Caching - TODO ¡ Double check what is being cached ¡ File system explorers ¡ Database managers ¡  Prevent network requests caching ¡  ‘Cache-control: no-cache, no-store’ ¡  Disable web view disk caching ¡  Use in-memory caching only ¡  Destroy Cache data on logout
  18. 18. Encryption ¡ Do we need encryption? ¡ Types of Crypto ¡ Personal implementation ¡ Performance
  19. 19. Encryption - TODO ¡  Encrypt customer data stored on the device and removable media ¡  Use AES 128 bit or stronger ¡  Never use ECB mode ¡ Use Key Derivation for encryption key ¡ PBKDF2 (10000 rounds, SHA 256 or higher) ¡  bcrypt ¡  scrypt ¡ Passcode Protection ¡ Store it hashed ¡  Use SHA-256 + secure random generated salt ¡  Store salted hashes of passcode in secure storage ¡  Use PIN for additional entropy
  20. 20. Network Communication
  21. 21. Protocols ¡ Use of encryption layer? ¡ All endpoints covered/secure? ¡ Cyphers supported ¡ Default cyphers ¡ Caching
  22. 22. Protocols- TODO ¡  Do not implement SSL/TLS trust validation bypasses ¡  Use SSL3/TLS1.x ¡  Disable caching containing sensitive data
  23. 23. Certificates ¡ Self-signed ¡ Invalid ¡ Certificate validations ¡ Bypass
  24. 24. Certificates - TODO ¡ Don’t allow self-signed certificates ¡ Validate all certificates ¡ Never bypass Certificate Authority root of trust
  25. 25. Session management ¡ Logout ¡ Expiration ¡ Data destruction
  26. 26. Session management - TODO ¡  Implement inactivity timeouts to prompt user to re-login after prolonged inactivity ¡ Implement business logic for logout ¡ Delete all associated data ¡ Expire the session on client AND server side ¡ Protect your Cookies
  27. 27. Clipboard
  28. 28. Clipboard ¡ What data can make it to the clipboard? ¡ Who can access the it? ¡ Is there any security layer?
  29. 29. Clipboard - TODO ¡  Clipboard is not a secure method of information exchange ¡  Clipboard can be accessed by any application ¡  At any point in time ¡  Without user prompt ¡ Limit the data available to Clipboard ¡ Don’t allow sensitive data
  30. 30. Backups
  31. 31. Backups ¡ What data is backed up ¡ Encryption ¡ Access limitations
  32. 32. Backups - TODO ¡ Filter what data can be backed up ¡ NSURLIsExcludedFromBackupKey ¡ android:allowBackup ¡ Backups are not a secure storage ¡ Create backups and explore them for sensitive data
  33. 33. Screenshots
  34. 34. Screenshots ¡ What can be captured ¡ Automatic screenshots ¡ Any way to set limitations?
  35. 35. Screenshots- TODO ¡  Prevent users from taking screenshots of sensitive data ¡  getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE); ¡  Prevent automatic caching in iOS ¡  willEnterBackground API ¡  Use splash screen
  36. 36. Outline ¡ Attacks on Mobile Apps ¡ Developing Secure Mobile Apps ¡ What Frameworks Help You With ¡ Demos
  37. 37. Mobile Frameworks The breakdown ¡ All focus on rapid development using HTML ¡ Most provide easy ways of creating secure TLS connections ¡ Fair amount provide authentication support ¡ Few provide secure credential storage ¡ Very few provide secure data storage
  38. 38. Hybrid Apps ¡  Can access device internals through plugins ¡  Camera, photos ¡  Accelerometer, GPS, Compass, Gyroscope ¡  Keychain ¡  SD card ¡  Etc.
  39. 39. Frameworks Security
  40. 40. WebView ¡ Additional Threats ¡ JavaScript support ¡ Framework specific security requirements
  41. 41. WebView - TODO ¡  Third party scripts shouldn’t be trusted ¡  Iframe sandboxing ¡  Don’t include script in the context of application ¡  Whitelist specific domains and paths ¡  Avoid wildcard (*) whitelist ¡  Minimize the number of exposed plugins
  42. 42. Outline ¡ Attacks on Mobile Apps ¡ Developing Secure Mobile Apps ¡ What Frameworks Help You With ¡ Demos
  43. 43. Demo Looking at files inside Apple Sandbox - iExplorer
  44. 44. Demo XSS with BEEF on Hybrid mobile app
  45. 45. Protecting Mobile Apps What to focus on ¡  Follow best development practices ¡  Brush up on OWASP top 10 mobile threats ¡  Review official vendor recommendations ¡  Follow recommendations for storing secrets and data ¡  Exercise minimal logging ¡  Using TLS ¡  Use security frameworks, don’t roll your own crypto ¡  Use free security assessment tools ¡  HTTP traffic examination: Burp Suite, Fiddler, Charles Proxy ¡  App sandbox examination: iExplorer, drozer, Android debugging bridge ¡  Source code review: Findbugs, Brakeman, Scanjs
  46. 46. THANK YOU! Sergey Gorbaty @ser_gor Martin Vigo @martin_vigo

×