Showing 24 controls
The app uses secure authentication and authorization protocols and follows the relevant best practices.
Most apps connecting to a remote endpoint require user authentication and also enforce some kind of autho- rization. While the enforcement of these mechanisms must be on the remote endpoint, the apps...
The app performs local authentication securely according to the platform best practices.
Many apps allow users to authenticate via biometrics or a local PIN code. These authentication mechanisms need to be correctly implemented. Additionally, some apps might not have a remote endpoint, an...
The app secures sensitive operations with additional authentication.
Some additional form of authentication is often desirable for sensitive actions inside the app. This can be done in different ways (biometric, pin, MFA code generator, email, deep links, etc) and they...
The app requires an up-to-date platform version.
Every release of the mobile OS includes security patches and new security features. By supporting older versions, apps stay vulnerable to well-known threats. This control ensures that the app is runni...
The app has a mechanism for enforcing app updates.
Sometimes critical vulnerabilities are discovered in the app when it is already in production. This control ensures that there is a mechanism to force the users to update the app before they can conti...
The app only uses software components without known vulnerabilities.
To be truly secure, a full whitebox assessment should have been performed on all app components. However, as it usually happens with e.g. for third-party components this is not always feasible and not...
The app validates and sanitizes all untrusted inputs.
Apps have many data entry points including the UI, IPC, the network, the file system, etc. This incoming data might have been inadvertently modified by untrusted actors and may lead to bypass of criti...
The app employs current strong cryptography and uses it according to industry best practices.
Cryptography plays an especially important role in securing the user's data - even more so in a mobile environment, where attackers having physical access to the user's device is a likely scenario. Th...
The app performs key management according to industry best practices.
Even the strongest cryptography would be compromised by poor key management. This control covers the management of cryptographic keys throughout their lifecycle, including key generation, storage and...
The app secures all network traffic according to the current best practices.
Ensuring data privacy and integrity of any data in transit is critical for any app that communicates over the network. This is typically done by encrypting data and authenticating the remote endpoint,...
The app performs identity pinning for all remote endpoints under the developer's control.
Instead of trusting all the default root CAs of the framework or device, this control will make sure that only very specific CAs are trusted. This practice is typically called certificate pinning or p...
The app uses IPC mechanisms securely.
Apps typically use platform provided IPC mechanisms to intentionally expose data or functionality. Both installed apps and the user are able to interact with the app in many different ways. This contr...
The app uses WebViews securely.
WebViews are typically used by apps that have a need for increased control over the UI. This control ensures that WebViews are configured securely to prevent sensitive data leakage as well as sensitiv...
The app uses the user interface securely.
Sensitive data has to be displayed in the UI in many situations (e.g. passwords, credit card details, OTP codes in notifications). This control ensures that this data doesn't end up being unintentiona...
The app minimizes access to sensitive data and resources.
Apps should only request access to the data they absolutely need for their functionality and always with informed consent from the user. This control ensures that apps practice data minimization and r...
The app prevents identification of the user.
Protecting user identity is crucial. This control emphasizes the use of unlinkability techniques like data abstraction, anonymization and pseudonymization to prevent user identification and tracking....
The app is transparent about data collection and usage.
Users have the right to know how their data is being used. This control ensures that apps provide clear information about data collection, storage, and sharing practices, including any behavior a user...
The app offers user control over their data.
Users should have control over their data. This control ensures that apps provide mechanisms for users to manage, delete, and modify their data, and change privacy settings as needed (e.g. to revoke c...
The app validates the integrity of the platform.
Running on a platform that has been tampered with can be very dangerous for apps, as this may disable certain security features, putting the data of the app at risk. Trusting the platform is essential...
The app implements anti-tampering mechanisms.
Apps run on a user-controlled device, and without proper protections it's relatively easy to run a modified version locally (e.g. to cheat in a game, or enable premium features without paying), or upl...
The app implements anti-static analysis mechanisms.
Understanding the internals of an app is typically the first step towards tampering with it (either dynamically, or statically). This control tries to impede comprehension by making it as difficult as...
The app implements anti-dynamic analysis techniques.
Sometimes pure static analysis is very difficult and time consuming so it typically goes hand in hand with dynamic analysis. Observing and manipulating an app during runtime makes it much easier to de...
The app securely stores sensitive data.
Apps handle sensitive data coming from many sources such as the user, the backend, system services or other apps on the device and usually need to store it locally. The storage locations may be privat...
The app prevents leakage of sensitive data.
There are cases when sensitive data is unintentionally stored or exposed to publicly accessible locations; typically as a side-effect of using certain APIs, system capabilities such as backups or logs...