The controls in this group ensure that the app uses platform APIs and standard components in a secure manner. Additionally, the controls cover communication between apps (IPC).
The app only requests the minimum set of permissions necessary.
All inputs from external sources and the user are validated and if necessary sanitized. This includes data received via the UI, IPC mechanisms such as intents, custom URLs, and network sources.
The app does not export sensitive functionality via custom URL schemes, unless these mechanisms are properly protected.
The app does not export sensitive functionality through IPC facilities, unless these mechanisms are properly protected.
WebViews are configured to allow only the minimum set of protocol handlers required (ideally, only https is supported). Potentially dangerous handlers, such as file, tel and app-id, are disabled.
Object deserialization, if any, is implemented using safe serialization APIs.
The app protects itself against screen overlay attacks. (Android only)
Verify that the app prevents usage of custom third-party keyboards whenever sensitive data is entered.
The OWASP Mobile Security Testing Guide provides detailed instructions for verifying the requirements listed in this section.
Android: Testing Platform Interaction - https://github.com/OWASP/owasp-mstg/blob/master/Document/0x05h-Testing-Platform-Interaction.md
iOS: Testing Platform Interaction - https://github.com/OWASP/owasp-mstg/blob/master/Document/0x06h-Testing-Platform-Interaction.md
For more information, see also:
OWASP Mobile Top 10: M1 (Improper Platform Usage) - https://owasp.org/www-project-mobile-top-10/2016-risks/m1-improper-platform-usage
OWASP Mobile Top 10: M7 (Poor Code Quality) - https://owasp.org/www-project-mobile-top-10/2016-risks/m7-client-code-quality
CWE 20 (Improper Input Validation) - https://cwe.mitre.org/data/definitions/20.html
CWE 79 (Improper Neutralization of Input During Web Page Generation) - https://cwe.mitre.org/data/definitions/79.html
CWE 200 (Information Leak / Disclosure) - https://cwe.mitre.org/data/definitions/200.html
CWE 250 (Execution with Unnecessary Privileges) - https://cwe.mitre.org/data/definitions/250.html
CWE 672 (Operation on a Resource after Expiration or Release) - https://cwe.mitre.org/data/definitions/672.html
CWE 749 (Exposed Dangerous Method or Function) - https://cwe.mitre.org/data/definitions/749.html
CWE 772 (Missing Release of Resource after Effective Lifetime) - https://cwe.mitre.org/data/definitions/772.html
CWE 920 (Improper Restriction of Power Consumption) - https://cwe.mitre.org/data/definitions/920.html
CWE 925 (Improper Verification of Intent by Broadcast Receiver) - https://cwe.mitre.org/data/definitions/925.html
CWE 926 (Improper Export of Android Application Components) - https://cwe.mitre.org/data/definitions/926.html
CWE 927 (Use of Implicit Intent for Sensitive Communication) - https://cwe.mitre.org/data/definitions/927.html
CWE 939 (Improper Authorization in Handler for Custom URL Scheme) - https://cwe.mitre.org/data/definitions/939.html