status.md

July 29, 2024 ยท View on GitHub

Project Status

The rules are aligned with the version 1.5.0 of the OWASP MASTG. While complete coverage of all tests cannot be guaranteed, the authors have made significant efforts to provide a comprehensive overview of the status of each implemented rule.
The presence of False Positives (FP) is expected but limited and efforts have been done to reduce the potential occurrence of False Negatives (FN).

The grade of maturity and the reliability of each rule has been classified according to the following categories:
:heavy_check_mark: Complete: the rule is highly reliable, although there may be some false positives.
:thumbsup: Good: the rule is reliable but there may be false negatives.
:broken_heart: Partial: the rule does not sufficiently cover all static tests.
:sweat_smile: Tentative: the rule is based on a generous simplification of the static tests.
:x: Infeasible: the rule can not be implemented with the current free version of Semgrep.

MASVS-IDRequirementL1/L2/RStatus
MSTG-ARCH-9A mechanism for enforcing updates of the mobile app exists.L2Good:thumbsup:
MSTG-STORAGE-1System credential storage facilities need to be used to store sensitive data, such as PII, user credentials or cryptographic keys.L1Partial:broken_heart:
MSTG-STORAGE-2No sensitive data should be stored outside of the app container or system credential storage facilities.L1Good:thumbsup:
MSTG-STORAGE-3No sensitive data is written to application logs.L1Good:thumbsup:
MSTG-STORAGE-4No sensitive data is shared with third parties unless it is a necessary part of the architecture.L1Infeasible:x:
MSTG-STORAGE-5The keyboard cache is disabled on text inputs that process sensitive data.L1Good:thumbsup:
MSTG-STORAGE-6No sensitive data is exposed via IPC mechanisms.L1Tentative:sweat_smile:
MSTG-STORAGE-7No sensitive data, such as passwords or pins, is exposed through the user interface.L1Good:thumbsup:
MSTG-STORAGE-8No sensitive data is included in backups generated by the mobile operating system.L2Good:thumbsup:
MSTG-STORAGE-9The app removes sensitive data from views when moved to the background.L2Complete:heavy_check_mark:
MSTG-STORAGE-10The app does not hold sensitive data in memory longer than necessary, and memory is cleared explicitly after use.L2Infeasible:x:
MSTG-STORAGE-11The app enforces a minimum device-access-security policy, such as requiring the user to set a device passcode.L2Tentative:sweat_smile:
MSTG-CRYPTO-1The app does not rely on symmetric cryptography with hardcoded keys as a sole method of encryption.L1Good:thumbsup:
MSTG-CRYPTO-2The app uses proven implementations of cryptographic primitives.L1Good:thumbsup:
MSTG-CRYPTO-3The app uses cryptographic primitives that are appropriate for the particular use-case, configured with parameters that adhere to industry best practices.L1Infeasible:x:
MSTG-CRYPTO-4The app does not use cryptographic protocols or algorithms that are widely considered deprecated for security purposes.L1Partial:broken_heart:
MSTG-CRYPTO-5The app doesn't re-use the same cryptographic key for multiple purposes.L1Infeasible:x:
MSTG-CRYPTO-6All random values are generated using a sufficiently secure random number generator.L1Partial:broken_heart:
MSTG-AUTH-1If the app provides users access to a remote service, some form of authentication, such as username/password authentication, is performed at the remote endpoint.L1Infeasible:x:
MSTG-AUTH-8Biometric authentication, if any, is not event-bound (i.e. using an API that simply returns "true" or "false"). Instead, it is based on unlocking the keychain/keystore.L2Good:thumbsup:
MSTG-NETWORK-1Data is encrypted on the network using TLS. The secure channel is used consistently throughout the app.L1Partial:broken_heart:
MSTG-NETWORK-2The TLS settings are in line with current best practices, or as close as possible if the mobile operating system does not support the recommended standards.L1Complete:heavy_check_mark:
MSTG-NETWORK-3The app verifies the X.509 certificate of the remote endpoint when the secure channel is established. Only certificates signed by a trusted CA are accepted.L1Good:thumbsup:
MSTG-NETWORK-4The app either uses its own certificate store, or pins the endpoint certificate or public key, and subsequently does not establish connections with endpoints that offer a different certificate or key, even if signed by a trusted CA.L2Partial:broken_heart:
MSTG-NETWORK-6The app only depends on up-to-date connectivity and security libraries.L2Infeasible:x:
MSTG-PLATFORM-1The app only requests the minimum set of permissions necessary.L1Tentative:sweat_smile:
MSTG-PLATFORM-2All 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.L1Partial:broken_heart:
MSTG-PLATFORM-3The app does not export sensitive functionality via custom URL schemes, unless these mechanisms are properly protected.L1Tentative:sweat_smile:
MSTG-PLATFORM-4The app does not export sensitive functionality through IPC facilities, unless these mechanisms are properly protected.L1Tentative:sweat_smile:
MSTG-PLATFORM-5JavaScript is disabled in WebViews unless explicitly required.L1Complete:heavy_check_mark:
MSTG-PLATFORM-6WebViews 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.L1Good:thumbsup:
MSTG-PLATFORM-7If native methods of the app are exposed to a WebView, verify that the WebView only renders JavaScript contained within the app package.L1Tentative:sweat_smile:
MSTG-PLATFORM-8Object deserialization, if any, is implemented using safe serialization APIs.L1Partial:broken_heart:
MSTG-PLATFORM-9The app protects itself against screen overlay attacks. (Android only)L2Good:thumbsup:
MSTG-CODE-1The app is signed and provisioned with a valid certificate, of which the private key is properly protected.L2Infeasible:x:
MSTG-CODE-2The app has been built in release mode, with settings appropriate for a release build (e.g. non-debuggable).L2Complete:heavy_check_mark:
MSTG-CODE-3Debugging symbols have been removed from native binaries.L2Complete:heavy_check_mark:
MSTG-CODE-4Debugging code and developer assistance code (e.g. test code, backdoors, hidden settings) have been removed. The app does not log verbose errors or debugging messages.L2Partial:broken_heart:
MSTG-CODE-5All third party components used by the mobile app, such as libraries and frameworks, are identified, and checked for known vulnerabilities.L2Infeasible:x:
MSTG-CODE-6The app catches and handles possible exceptions.L2Infeasible:x:
MSTG-CODE-7Error handling logic in security controls denies access by default.L2Infeasible:x:
MSTG-CODE-8In unmanaged code, memory is allocated, freed and used securely.L2Tentative:sweat_smile:
MSTG-CODE-9Free security features offered by the toolchain, such as byte-code minification, stack protection, PIE support and automatic reference counting, are activated.L2Infeasible:x: