Container Findings
Data Leakage Outside Secure Container¶
- Clipboard
- Long press keys with menu
- Screenshots
- Through User Interaction data leakage
Overview¶
The
The clipboard and IPC mechanisms are some common methods for data leakage.
Remediation Procedure¶
The
As a defense in depth mechanism,
Incomplete Secure Container Implementation¶
- Files that are not encrypted but not by user interaction
- Unencrypted container files stored in any location
- Snapshots when device locks
- AirDrop
- Media Playback
Overview¶
The
Remediation Procedure¶
The security framework should implement encryption on all data that could be written by the application.
Insecure Application Logging Mechanism¶
- Can log be viewed in application
Overview¶
The
Remediation Procedure¶
The development team should remove the application logging interface from the user interface. This functionality should never be exposed to the end-user. If such functionality must exist, consider storing sensitive debug information encrypted within the secure container. This will ensure that the data cannot be accessed by attackers who gain access to the device.
Incomplete Data Wipe of Secure Container¶
- Preform a wipe of the data and look for things that were not deleted
Overview¶
When a user exceeds the configured number of incorrect password attempts to cause an account lockout, the data associated with the application is removed from the secure container. It was observed that, after 10 incorrect password attempts, files were deleted from the application container; however, not all files/data were removed. See the Issue Listing below for further details.
Remediation Procedure¶
A more complete wipe of the
iOS Keyboard Caches Data¶
Overview¶
To enhance the results of the iOS auto-correct functionality, iOS stores words typed into textboxes to the keyboard cache file. The contents of this file are not encrypted, which could result in the disclosure of sensitive application data entered into text fields in the event of unauthorized access to the device.
Remediation Procedure¶
Consider the following recommendations to prevent keyboard caching:
- Set the autocorrectType property to UITextAutocorrectionNo on the UITextField control in order to prevent the information from being stored in the keyboard cache.
- When requesting credentials or any other sensitive data that should not be view-able, set the secureTextEntry property to YES on the UITextField control. In addition to disabling keyboard caching, the typed letters will be hidden.
Android Keyboard Caches Data¶
- Create a word in a textbox in the application and save it by clicking on it. Then navigate outside of the application and see if that word has been saved in the system dictionary.
Overview¶
Mobile keyboards cache items typed by users in order to provide features such as customized auto-correct and form completion. In the case of Android, the user dictionary is available to any application without special permissions. Both the Japanese and English keyboards used by the
Remediation Procedure¶
The
Sensitive Data Visible in Application Switching Window¶
- When on the application click the switch app button and see if the application
Overview¶
When the application is backgrounded and the user double-clicks the home button (iOS) or Windows button (Android), the OS will display the list of running applications along with a preview of each application. The application does not remove data from the application screen before the context is switched to another application. Since the data is not cleared from the screen prior to entering the background, it is possible to see application data in the preview of the application during context switching.
Remediation Procedure¶
When switching applications remove sensitive data from the screen when the application is not on the main screen.
Crash Report Stored Outside Secure Container¶
Overview¶
Detailed error messages often result from unhandled or unexpected exceptions within application code. These messages are often the stepping-stone to more complex attacks because they typically provide information that indicates why an error occurred which can be further leveraged to refine successful attacks.
Remediation Procedure¶
Traffic Leakage Outside Secure Tunnel¶
Overview¶
Application relies on the device's or user's certificate store to ensure the authenticity of the connection while establishing the connection. The Device/User Certificate Store contains information about the trusted digital certificates of trusted publishers and Certificate Authorities. This helps the device and the applications on the device use it to ensure the security of the connection between the communicating parties. This also can be used by an attacker to install their own Certificates into the device's certificate store and force applications, using the device certificate store, to trust it and potentially provide a false sense of security to the application while attacker middles the connection between the application and the server.
Application respects the device's proxy settings while communicating with the remote server. This could potentially allow one to setup proxy settings on the device to forward traffic to the intermediate proxy server that an attacker controls and allow the attacker to view the traffic.
Remediation Procedure¶
The application should also use its own proxy settings that are separate from the system's HTTP proxy settings to prevent one from setting system wide proxy and hijacking the traffic between the application and the server.
Authorization Not Re-Validated At Service Layer¶
Overview¶
By default, Services such as Proxy Server, Forward Proxy, etc., do not verify whether a user is authorized to use that particular Service. Instead, the current implementation depends on the
By not verifying that the User with the Authentication Token has access the Service, an attacker that is already positioned on the internal network can communicate with Services directly. Although this attack requires a position in the Near DMZ and a valid Authentication Token, this authorization flow still presents a considerable risk to
Remediation Procedure¶
By default, all Services should perform authorization checks to ensure that the Authentication Token presented is permitted to access the Service rather than relying on assumptions about the security of a customer’s deployment and network architecture.
Insecure Lock Screen Protection Policy¶
Overview¶
Remediation Procedure¶
Device Policy should force reauthentication when the device is put into a locked state and require a password on application launch or when power button is pressed. This will display the lock screen whenever the
Sensitive Data Remains in Memory after Application Timeout¶
Overview¶
Sensitive Data including secret keys, passwords, and other sensitive data is still stored in memory when the application has timed out and asked the user to re-authenticate. A malicious user who gains access to the device and is able to get root access without requiring a reboot, would be able to dump the application’s heap contents and extract the sensitive data. Although, most modern exploits require a reboot due to performing modifications to the firmware of the device,
Remediation Procedure¶
Data written to the heap using the String object will only be wiped from memory when garbage collection is performed by the JVM. It is recommended that sensitive data is not stored using the String object and instead char arrays should be utilized. The data in memory should also be overwritten with random data when the application timeout is reached.
Inadequate Browser SSL/TLS Checks¶
Overview¶
When the
Remediation Procedure¶
Inadequate Client-Side Controls and Policies¶
Overview¶
Due to the nature of client-side controls, it should be understood that client-side controls and policies can always be bypassed given enough time and effort. As a result, the goal of implementing such controls is to increase the work factor required by an attacker to bypass such controls.
The
- Jailbreak/Root Detection - A strong jailbreak/root detection policy is the foundation of any MAM/MDM solution. This is especially true for other security controls within the solution. The bypass of jailbreak / root detection policies can help facilitate the bypass of all other client-side policies more easily. This is also recommended practice due to rooted devices having less stringent security controls than stock devices and an increased exposure to privilege escalation scenarios. Ultimately, this increases the risk that application data is leaked to an unauthorized party via physical interaction with the phone or through a malicious application installed on the device.
- Certificate Pinning - Mobile applications have the ability to perform their own validation of certificates sent by the server. Therefore, mobile applications no longer have to rely on Certificate Authorities (CA) for validating SSL certificates. It is a best practice to implement client-side certificate pinning within mobile applications in order to avoid any security issues that may arise with Certificate Authorities (e.g. in situations where a "rogue" or compromised CA issues an unauthorized certificate for the affected domain), which could then expose the application to man-in-the-middle attacks against TLS/SSL communications.
Further, the
Remediation Procedure¶
Due to client-side controls being inherently bypassable given enough time and effort,
To increase the work factor required to bypass the