CSA Safe Standard App User Guide

June 16, 2024
CSA

Safe Standard App

Product Information

Specifications

  • Product Name: CSA’s Safe App Standard
  • Version: 1.0
  • Release Date: January 10th, 2024

About the Standard

The CSA’s Safe App Standard is a set of guidelines and best
practices for implementing authentication security controls in
mobile applications. It aims to ensure secure authentication
mechanisms and protect sensitive data from unauthorized access. The
standard is developed in consultation with various organizations
and experts in the field of cybersecurity.

Purpose, Scope, and Intended Audience

The purpose of the CSA’s Safe App Standard is to provide
developers with recommendations and best practices for implementing
secure authentication controls in mobile applications. The standard
is applicable to developers and organizations involved in the
development of mobile applications that require authentication. It
is designed to enhance the overall security of the authentication
process and protect user privacy.

Notice and Developer Guidance

The CSA’s Safe App Standard provides guidance to developers on
implementing authentication security controls. It emphasizes the
importance of following industry best practices and ensuring the
secure implementation of authentication mechanisms. Developers
should refer to the standard for detailed guidance on implementing
the recommended security controls.

Document Definitions and Normative References

The CSA’s Safe App Standard includes document definitions and
normative references that provide clarity on the terminology used
and refer to other relevant industry standards and guidelines.
Developers should refer to these definitions and references for a
better understanding of the standard.

Product Usage Instructions

Authentication

Authentication is an essential component of most mobile
applications. It verifies the identity of users, clients,
applications, and devices before granting access to specific
resources or allowing certain actions. The CSA’s Safe App Standard
provides recommendations and best practices for implementing secure
authentication controls.

Security Controls

The CSA’s Safe App Standard includes the following
authentication security controls:

ID Control
AUTHN-BP01 The app uses Multi-Factor Authentication (MFA) to authenticate

high-risk transactions.
AUTHN-BP02| Control description
AUTHN-BP03| Control description
AUTHN-BP04| Control description
AUTHN-BP05| Control description
AUTHN-BP06| Control description

AUTHN-BP01 – Multi-Factor Authentication (MFA)

In a traditional single-factor authentication system, users
typically only need to input Something-You-Know (such as usernames
and passwords). However, MFA adds layers of identity verification
by requiring additional factors like Something-You-Have and
Something-You-Are. This makes it more challenging for malicious
actors to compromise accounts and enhances the overall security of
the authentication process.

Implementation Guidance

Developers should implement Step-up MFA, which requires an
additional authentication level for higher-risk transactions. The
CSA’s Safe App Standard prioritizes the following MFA
combinations:

  1. Something-You-Know
  2. Something-You-Have
  3. Something-You-Are

Frequently Asked Questions (FAQ)

Q: What is the purpose of the CSA’s Safe App Standard?

A: The purpose of the CSA’s Safe App Standard is to provide
developers with recommendations and best practices for implementing
secure authentication controls in mobile applications.

Q: Who is the intended audience for the CSA’s Safe App

Standard?

A: The CSA’s Safe App Standard is intended for developers and
organizations involved in the development of mobile applications
that require authentication.

Q: What are the benefits of implementing Multi-Factor

Authentication (MFA)?

A: Implementing MFA adds layers of identity verification, making
it more challenging for malicious actors to compromise accounts and
enhancing the overall security of the authentication process.

1

CSA’s Safe App Standard Version 1.0 Released January 10th 2024
2

In Consultation With:
The Association of Banks Singapore, Standing Committee on Cyber Committee Deloitte Southeast Asia Risk Advisory Ernst & Young Advisory Pte. Ltd. KPMG in Singapore Lazada Microsoft Singapore PricewaterhouseCoopers Risk Services Pte. Ltd.
Disclaimer:
These organisations were consulted on the Standard for feedback and comments on the security control, description of the security control, and technical implementation guidelines. To the maximum extent permitted under law, CSA, and external consultants shall not be liable for any inaccuracies, errors and/or omissions contained herein nor for any losses or damages of any kind (including any loss of profits, business, goodwill, or reputation, and/or any special, incidental, or consequential damages) in connection with any use or reliance on this Standard. Organisations developing mobile apps, service providers and developers are advised to consider how the Standard may be applied to their specific circumstances obtain their own legal and/or technical advice in relation to the contents and/or implementation of the recommendations in the Standard Organisations developing mobile apps, service providers and developers should exercise professional judgement if and when implementing the recommendations in the Standard, and should also consider if additional measures are necessary in relation to their specific circumstances.
3

Contents
In Consultation With: ……………………………………………………………………………………………………………… 3 Disclaimer: ……………………………………………………………………………………………………………………………. 3 About the Standard………………………………………………………………………………………………………………… 6 Purpose, Scope, and Intended Audience …………………………………………………………………………………… 6 Notice and Developer Guidance ………………………………………………………………………………………………. 7 Document Definitions and Normative References ……………………………………………………………………… 8 1. Authentication ……………………………………………………………………………………………………………… 10
AUTHN-BP01 ……………………………………………………………………………………………………………………. 11 AUTHN-BP01a ………………………………………………………………………………………………………………. 13 AUTHN-BP01b ………………………………………………………………………………………………………………. 14 AUTHN- BP01c……………………………………………………………………………………………………………….. 15
AUTHN-BP02 ……………………………………………………………………………………………………………………. 16 AUTHN-BP03 ……………………………………………………………………………………………………………………. 17
AUTHN-BP03a ………………………………………………………………………………………………………………. 18 AUTHN-BP03b ………………………………………………………………………………………………………………. 19 AUTHN-BP04 ……………………………………………………………………………………………………………………. 20 AUTHN-BP05 ……………………………………………………………………………………………………………………. 21 AUTHN-BP06 ……………………………………………………………………………………………………………………. 22 ………………………………………………………………………………………………………………………………………….. 23 2. Authorisation ……………………………………………………………………………………………………………….. 24 AUTHOR-BP01 ………………………………………………………………………………………………………………….. 25 AUTHOR-BP02 ………………………………………………………………………………………………………………….. 26 AUTHOR-BP03 ………………………………………………………………………………………………………………….. 27 AUTHOR-BP04 ………………………………………………………………………………………………………………….. 28 ………………………………………………………………………………………………………………………………………….. 29 3. Data Storage (Data-at-Rest) ……………………………………………………………………………………………. 30 STORAGE-BP01 …………………………………………………………………………………………………………………. 31 STORAGE-BP02 …………………………………………………………………………………………………………………. 32 STORAGE-BP02a ……………………………………………………………………………………………………………. 33 STORAGE-BP02b ……………………………………………………………………………………………………………. 34 STORAGE-BP03 …………………………………………………………………………………………………………………. 35 ………………………………………………………………………………………………………………………………………….. 36 4. Anti-Tampering & Anti-Reversing……………………………………………………………………………………..37 RESILIENCE-BP01 ………………………………………………………………………………………………………………. 38 RESILIENCE-BP02 ………………………………………………………………………………………………………………. 39
4

RESILIENCE-BP03 ………………………………………………………………………………………………………………. 41 RESILIENCE-BP04 ………………………………………………………………………………………………………………. 42 RESILIENCE-BP05 ………………………………………………………………………………………………………………. 43 RESILIENCE-BP06 ………………………………………………………………………………………………………………. 44 RESILIENCE-BP07 ………………………………………………………………………………………………………………. 45 References…………………………………………………………………………………………………………………………… 46
5

About the Standard
Introduction The Safe App Standard is a recommended standard for mobile applications (apps), developed by the Cyber Security Agency of Singapore (CSA), in consultation with the industry partners from financial institutions, tech organisations, consultancy firms and government agencies. Overview The objective of the Standard is to put forward a recommended baseline of security controls for mobile app developers and providers to follow. This would ensure that all local apps adhere to a similar set of security controls for mobile apps, thereby raising security levels of the apps hosted and created in Singapore.
Purpose, Scope, and Intended Audience
This document was developed to provide recommendations and suggestions to developers to assist them in implementing security functions into their apps. Such recommendations and suggestions are aimed towards assisting developers in mitigating against a broad spectrum of cybersecurity threats and in protecting their apps from the latest mobile scams and mobile malware exploits. The contents herein are non-binding, provided on a non-reliance basis and meant to be informative in nature, and are not intended to exhaustively identify potential cybersecurity threats nor exhaustively specify processes or systems that developers should put in place to address or prevent such threats. Version 1 of Safe App Standard’s guidelines and security controls will focus primarily on providing security guidelines to developers of high-risk apps to counteract the latest mobile malware and scam exploits seen in Singapore’s threat landscape. However, these security controls can also benefit and be implemented by other apps. It is recommended that all developers strive to implement these measures for enhanced mobile app security. Although this Standard has a primary focus area, future iterations will expand to address security best practices and guidelines for the entire mobile app stack.
6

Notice and Developer Guidance
This is a living document that will be subjected to review and revision periodically. Like many other established standards, the Safe App Standard is a living document that will be regularly updated to match the current and evolving threat landscape and new attack vectors. Please refer to CSA’s website to stay updated with the latest version of the Safe App Standard and adapt security measures and controls accordingly. This Standard should be read in conjunction with and does not replace, vary, or supersede any legal, regulatory, or other obligations and duties of app developers and providers, including those under the Cybersecurity Act 2018, and any subsidiary legislation, codes of practice, standards of performance, or written directions issued thereunder. The use of this document and implementation of the recommendations herein also does not exempt or automatically discharge the app developer and provider from any such obligations or duties. The contents of this document are not intended to be an authoritative statement of the law or a substitute for legal or other professional advice. Developer guidance on Safe App Standard security framework For ease of use, developers should take note that Version 1 of the Safe App Standard targets the following critical areas, and the document itself can be split into the following subsections:
· Authentication · Authorisation · Data Storage (Data-at-Rest) · Anti-Tamper & Anti-Reversing These critical areas are included to ensure the standardisation of mobile app security against the most common attack vectors used by malicious actors in our local ecosystem. The Safe App Standard provides a clear and concise set of security controls, guidelines, and best practices for enhancing the security of mobile apps that provide or enable high-risk transactions.
7

Document Definitions and Normative References
Document Definitions The following are some definitions that developers and readers should keep in mind as they utilise this document: Sensitive data ­ User data such as Personal Identifiable Information (PII) and authentication data such as credentials, encryption keys, one-time passwords, biometric data, security tokens, certificates, etc. High-risk transactions are those that involve:
· Changes to financial functions ­ some examples include but are not limited to registration of third-party payee details, increase of fund transfer limit, etc.
· Initiation of financial transactions ­ some examples include but are not limited to high-value funds transactions, high-value funds transfers, online card transactions, direct debit access, money storage functions, and top-ups, etc.
· Changes to the application’s security configurations­ some examples of this include but are not limited to disabling authentication methods, updating digital tokens or credentials, etc.
Security controls ­ Operational or technical measures recommended in this document that should be implemented to manage, monitor, and mitigate potential security vulnerabilities or incidents. These security controls have the following IDs attached to them, e.g., AUTHN-BP01, AUTHOR-BP01, STORAGE-BP01, RESILIENCE-BP01. Normative References The Safe App Standard references industry standards from the Open Web Application Security Project (OWASP), the European Union Agency for Network and Information Security (ENISA) and the Payment Card Industry Data Security Standard (PCI DSS). The list of references is as follows:
· OWASP’s MASVS (Mobile Application Security Verification Standard) · OWASP’s MASTG (Mobile Application Security Testing Guide) · ENISA’s Secure Development Guidelines (SSDG) · PCI DSS’ Mobile Payment Acceptance Security Guidelines for Developers
8

9

1. Authentication

Introduction
Authentication is an essential component of most mobile applications. These applications commonly employ various forms of authentication, including biometrics, PINs, or multi-factor authentication code generators. Ensuring the authentication mechanism is secure and implemented following industry best practices is crucial to validate user identity.
By implementing robust security controls for authentication, developers can ensure that only authenticated users, clients, applications and devices can access specific resources or perform certain actions. Through secure authentication controls, developers can also mitigate the risk of unauthorised data access, maintain the integrity of sensitive data, uphold user privacy and protect the integrity of high-risk transaction functionalities.
The controls in this category aim to recommend authentication security controls that the application should implement to safeguard sensitive data and prevent unauthorised access. It also gives developers relevant best practices to implement these security controls.
Security controls

ID

Control

AUTHN-BP01 AUTHN-BP01a AUTHN-BP01b AUTHN-BP01c AUTHN-BP02 AUTHN-BP03 AUTHN- BP03a AUTHN-BP03b AUTHN-BP04 AUTHN-BP05 AUTHN-BP06

Use Multi-Factor Authentication to authenticate high-risk transactions. Implement Something-You-Know authentication as one of the MFA factors. Implement Something-You-Have authentication as one of the MFA factors. Implement Something-You-Are authentication as one of the MFA factors. Use context-based factors to authenticate. Implement secure session authentication. Implement secure stateful authentication. Implement secure stateless authentication. Implement secure session termination during logout, inactivity, or application closure. Implement brute force protection for authentication. Implement transaction integrity verification mechanism.

10

AUTHN-BP01
Control
The app uses Multi-Factor Authentication (MFA) to authenticate high-risk transactions.
Description
In a traditional single-factor authentication system, users typically only need to input Something-YouKnow1 such as usernames and passwords. However, if this single factor fails or is compromised, the entire authentication process is vulnerable to threats.
MFA is an authentication procedure that adds layers of identity verification, requiring not only Something-You-Know but also Something-You-Have2 and Something-You-Are3. Implementing MFA makes it more challenging for malicious actors to compromise accounts and enhance the overall security of the authentication process.
Implementation guidance
Developers should use Step-up MFA. It is a specific type of MFA where the app incorporates an authentication strategy that requires an additional authentication level, especially when attempting higher-risk transactions.
Developers should prioritise the following MFA combinations in the order of 1, 2, 3, and 4, with option 1 as the most secure choice.

Factors / Option Something-You-Know Something-You-Have
· Software token · Hardware token · SMS OTP Something-You-Are

1

2

3

4

1 Something-You-Know refers to information that the user knows, such as PIN (Personal Identification Number), password, or pattern, etc. 2 Something-You- Have refers to the possession of a physical device, app, or token that generates authentication credentials, which may include time-based One-Time Passwords (OTPs). Examples of such tokens include software tokens, hardware tokens, and SMS OTP. 3 Something-You-Are refers to biometric identifiers, where the user’s unique physical characteristics are used for verification, such as fingerprints, retina scans, facial recognition, or voice recognition.
11

Developers are strongly advised to not rely on SMS and email OTP as a channel for authentication for high-risk transactions. If not able to, it is critical to implement a biometric factor or an additional authentication factor in conjunction with SMS OTP and email OTP. Things to note
· It is strongly recommended to choose off-the-shelf solutions when possible. · Developers should ensure that at least one MFA factor is verified on the client-side, with all
others verified on the server-side. In cases where authentication is verified on the client side, especially for Android, enforce Trusted Execution Environment (TEE) based code. · This security control is referenced in other standards. Please refer to the documentation(s) provided in:
o OWASP Mobile Application Security Verification Standard (MASVS) v2.0.0 (2023), pg. 21.
o OWASP Mobile Application Security Testing Guide (MASTG) v1.7.0 (2023), pg. 51, 56. o MAS Technology Risk Management Guidelines (2021), pg. 34, 50. o ENISA Smartphone Secure Development Guidelines (2016), pg. 11.
12

AUTHN-BP01a Control The app implements Something-You-Know authentication as one of the MFA factors. Description Something-You-Know represents a fundamental layer of identity verification involving information known only to the user, such as a PIN (Personal Identification Number), password, pattern, etc. Implementing Something-You-Know as one of the MFA factors ensures a basic level of identity verification by requiring users to provide unique information associated with their accounts. It is a crucial factor in the principle of “Something-You-Know, Something-You-Have, and Something-You-Are,” contributing to a comprehensive and effective multi-layered security strategy. Implementation guidance Developers should adopt the following guidelines in creating strong and secure passwords:
· Ensure a minimum password length of 12 characters or more. · Include a mix of uppercase and lowercase letters, numbers, and special characters limited to
~`! @#$%^&*()_-+=:;,.? Developers should also recognise and avoid common pitfalls in password creation:
· Avoid using guessable words, phrases, or combinations. · Refrain from incorporating personal details. · Steer clear of sequential characters (e.g., “123456”) or repeated characters (e.g., “aaaaa”). Things to note · Developers should enforce credential rotation only on organisational assets or if there is no
MFA implementation on the user end, e.g. changed yearly or as per an appropriate timeframe. · This security control is referenced in other standards. Please refer to the documentation(s)
provided in: o MAS Technology Risk Management Guidelines (2021), pg. 34. o ENISA Smartphone Secure Development Guidelines (2016), pg. 10.
13

AUTHN-BP01b Control The app implements Something-You-Have authentication as one of the MFA factors. Description Something-You-Have requires users to authenticate with a physical device, app, or token that generates authentication credentials, which may include time-based One-Time Passwords (OTPs). Examples of such tokens include software tokens, hardware tokens, and SMS OTP. Implementing Something-You-Have as one of the MFA factors adds complexity to the authentication process by requiring the possession of a tangible element, significantly reducing the likelihood of unauthorised access. It is a crucial factor in the principle of ” Something-You-Know, Something-YouHave, and Something-You-Are,” contributing to a comprehensive and effective multi-layered security strategy. Implementation guidance Developers should use a time-based OTP for software tokens, hardware tokens and SMS OTP. The following guidelines should be followed:
· An OTP should only be valid for not more than 30s. · An OTP that is incorrectly input after 3 attempts should be invalidated, and the user’s session
should be revoked or rejected. Things to note
· This security control is referenced in other standards. Please refer to the documentation(s) provided in: o OWASP Mobile Application Security Testing Guide (MASTG) v1.7.0 (2023), pg. 56-57. o MAS Technology Risk Management Guidelines (2021), pg. 50, 51. o ENISA Smartphone Secure Development Guidelines (2016), pg. 10.
14

AUTHN-BP01c
Control The app implements Something-You-Are authentication as one of the MFA factors.
Description Something-You-Are requires users to authenticate with biometric identifiers such as fingerprints, retina scans, or facial recognition. Implementing Something-You-Are as one of the MFA factors adds a highly personalised and difficultto-replicate authentication factor. It provides a more robust means of verifying user identity than Something-You-Know and Something-You-Have factors, reducing the risk of unauthorised access. It is a crucial factor in the principle of ” Something-You-Know, Something-You-Have, and Something-YouAre,” contributing to a comprehensive and effective multi- layered security strategy. Implementation guidance Developers should implement server-side biometric authentication using a trusted biometric identification platform like Singpass. However, if it is not feasible, developers should implement client-side biometric authentication through the device’s Trusted Execution Environments (TEEs) mechanisms such as CryptoObject and Android Protected Confirmation for Android or Keychain services for iOS. Things to note
· Developers should limit apps’ functionalities on devices lacking hardware Trusted Executed Environment (TEE) or biometrics. For example, Android devices lacking TEE can be detected using the “isInsideSecureHardware” Android API.
· Developers should invalidate biometric authentication if changes occur in the biometric mechanism, like enrolling a new fingerprint on the device. Both iOS and Android platforms support setting an app crypto key to expire in response to such changes.
· This security control is referenced in other standards. Please refer to the documentation(s) provided in: o OWASP Mobile Application Security Testing Guide (MASTG) v1.7.0 (2023), pg. 227233, 422-426. o MAS Technology Risk Management Guidelines (2021), pg. 51. o ENISA Smartphone Secure Development Guidelines (2016), pg. 11, 26.
15

AUTHN-BP02
Control The app uses context-based factors to authenticate. Description Context-based factors introduce dynamic elements such as user location and device attributes. While MFA provides a robust layer of security by requiring multiple authentication factors, incorporating context-based factors creates a more comprehensive and adaptive authentication process that can offer additional benefits in addressing the evolving risks of unauthorised access. Implementing context-based factors minimises the reliance on static credentials, making it more challenging for malicious actors to attempt unauthorised access. Implementation guidance Developers should consider the following contextual factors to verify the identity of a user:
· Geolocation: Allow access based on the real-world location of a device using GPS, Wi-Fi, or IP address geolocation.
· Device Type: Allow access based on the characteristics of a device. e.g. screen size can determine if a device is a smartphone or tablet.
Things to note This security control is referenced in other standards. Please refer to the documentation(s) provided in:
· OWASP Mobile Application Security Testing Guide (MASTG) v1.7.0 (2023), pg. 56, 58. · ENISA Smartphone Secure Development Guidelines (2016), pg. 11.
16

AUTHN-BP03
Control The app implements secure session authentication. Description Secure session authentication ensures robust session management for both stateful and stateless authentication. Poorly managed sessions, irrespective of whether the app follows stateful4 or stateless5 authentication methods, can lead to security threats such as unauthorised access, session hijacking, or data breaches. Implementing secure session authentication for stateful sessions employs secure session identifiers, encrypted communication and proper timeouts to prevent unauthorised access. For stateless authentication, it ensures that tokens are tamper-resistant, maintaining authentication integrity without relying on server-side storage. Implementation guidance Developers should implement secure session authentication by adopting the following best practices for stateful (AUTHN-BP03a) and stateless (AUTHN-BP03b) authentication methods for sessions. Things to note This security control is referenced in other standards. Please refer to the documentation(s) provided in:
· OWASP Mobile Application Security Testing Guide (MASTG) v1.7.0 (2023), pg. 51-55. · MAS Technology Risk Management Guidelines (2021), pg. 51. · ENISA Smartphone Secure Development Guidelines (2016), pg. 10.
4 Stateful authentication refers to the management of session states on the server side, typically requiring the use of session identifiers. 5 Stateless authentication refers to the management of sessions without storing user- related information on the server side.
17

AUTHN-BP03a Control The app implements secure stateful authentication. Description Secure stateful authentication involves protecting and maintaining persistent sessions. While stateful authentication provides a seamless user experience through persistent user sessions, it can be vulnerable to various security threats, such as malicious actors attempting to steal session identifiers. Implementing secure stateful authentication protects user accounts from unauthorised access and potential vulnerabilities associated with session management without compromising the balance between usability and security. Implementation guidance Developers should identify server-side endpoints that exposes sensitive information or critical functionalities. Developers should also adopt the following stateful session authentication best practices:
· Reject requests with missing or invalid session IDs or tokens. · Generate Session IDs randomly on the server side without appending them to URLs. · Enhance Session IDs security with proper length and entropy, making guessing difficult. · Exchange Session IDs only over secure HTTPS connections. · Avoid storing session IDs in persistent storage. · Verify sessions IDs for user access to privileged app elements. · Terminate sessions on the server side, deleting session information upon timeout or logout. Things to note If in doubt, consider using trusted authentication platforms and protocols. This security control is referenced in other standards. Please refer to the documentation(s) provided in: · OWASP Mobile Application Security Testing Guide (MASTG) v1.7.0 (2023), pg. 52.
18

AUTHN-BP03b Control The app implements secure stateless authentication. Description Secure stateless authentication involves secure token practices for effective and scalable authentication. While stateless authentication provides benefits, it can be more vulnerable to security threats such as user impersonation if tokens are not securely generated, transmitted and stored. Implementing secure stateless authentication ensures that each authentication token is securely handled while reaping the benefits of efficiency and scalability, reducing the risk of unauthorised access. Implementation guidance Developers should adopt the following stateless session authentication best practices:
· Generate tokens on the server side without appending them to URLs. · Enhance tokens security with proper length and entropy, making guessing difficult. · Exchange tokens only over secure HTTPS connections. · Verify that no sensitive data, such as PII, is embedded in tokens. · Avoid storing tokens in persistent storage. · Verify tokens for user access to privileged app elements. · Terminate tokens on the server side, deleting tokens information upon timeout or logout. · Cryptographically sign tokens using a secure algorithm, avoiding the use of null algorithms. Things to note · If in doubt, consider using trusted authentication platforms and protocols. · This security control is referenced in other standards. Please refer to the documentation(s)
provided in: o OWASP Mobile Application Security Testing Guide (MASTG) v1.7.0 (2023), pg. 52-53.
19

AUTHN-BP04
Control The app implements secure session termination during logout, inactivity or app closure. Description Secure session termination ensures the effective closure of user sessions. In scenarios such as logout, inactivity, or app closure scenarios, there is a potential for malicious actors to exploit any lingering access points if sessions are not appropriately managed. Implementing secure session termination during logout, inactivity or app closure can significantly reduce the risk of unauthorised access by automatically terminating user sessions and safeguarding user information from being accessed by unauthorised parties. Implementation guidance Developers should reauthenticate users after logging out, app inactivity, idleness, backgrounding, absolute session timeouts, or abrupt/force closure. Developers should also generate new session identifiers on the server whenever users move up to a new authentication level to prevent session fixation. Things to note
· Developers should ensure that session termination includes clearing or deauthorising all locally stored tokens or session identifiers.
· Developers should determine the idle timeout value based on the risk and nature of financial services.
· This security control is referenced in other standards. Please refer to the documentation(s) provided in: o OWASP Mobile Application Security Testing Guide (MASTG) v1.7.0 (2023), pg. 55-56, 58. o MAS Technology Risk Management Guidelines (2021), pg. 51. o ENISA Smartphone Secure Development Guidelines (2016), pg. 11.
20

AUTHN-BP05
Control The app implements brute force protection for authentication. Description Brute force attacks involve automated and systematic attempts to guess user credentials, for example, by trying various combinations of usernames and passwords to gain unauthorised access. Brute force protection restricts the number of login attempts within a specified period. Implementing brute force protection for authentication can significantly mitigate the risk of unauthorised access, protect user accounts and maintain the integrity of the authentication process. Implementation guidance Developers should implement brute force mechanisms through the following best practices:
· Implement anti-automation checks. · Apply rate limiting for login attempts. · Incorporate progressive incremental time delays (e.g. 30 seconds, 1 minute, 2 minutes, 5
minutes) for login attempts. · Enforce account lockouts. Things to note · Developers should note that all MFA mechanisms are vulnerable to brute force. · Developers should convey the reasons for the account lockout and provide accessible means
for users to authenticate themselves and remove the lockout. Examples include calling a helpline or utilising biometric verification. · This security control is referenced in other standards. Please refer to the documentation(s) provided in:
o ENISA Smartphone Secure Development Guidelines (2016), pg. 10, 16.
21

AUTHN-BP06
Control The app implements transaction integrity verification mechanism. Description While authentication ensures the user’s identity, it does not eliminate the possibility of fraudulent activities during the transaction process. Transaction integrity verification mechanisms are auxiliary security functions that give users the time and tools to react to potential frauds. Implementing a transaction integrity verification mechanism ensures that each transaction undergoes thorough scrutiny to confirm its accuracy and authenticity. Implementation guidance Developers can implement the following suggested best practices:
· Initiate a transaction verification/confirmation call. · Provide a real-time transaction history. · Implement a cooldown period of 12 hours to 24 hours. · Disable overseas transactions by default; enable only through MFA. Things to note This security control is referenced in other standards. Please refer to the documentation(s) provided in: · OWASP Mobile Application Security Testing Guide (MASTG) v1.7.0 (2023), pg. 57-58.
22

23

2. Authorisation

Introduction
Authorisation security operates in conjunction with authentication security. Authorisation security in mobile apps is a crucial line of defence as it delineates who can access what resources within an app. It creates systematic controls and validates user access rights within an app.
Developers can ensure that only authorised users, clients, apps, and devices can access specific resources or perform certain actions by implementing strong authorisation controls and authorisation setups. Through authorisation controls, developers can also mitigate the risk of unauthorised data access, maintain the integrity of sensitive data, uphold user privacy and protect the integrity of highrisk transaction functionalities. Although the enforcement of these mechanisms must be on the remote endpoint, it is equally important for the client-side app to follow relevant best practices to ensure the secure use of the involved authorisation protocols.
The controls in this category provides authorisation security controls that the app should implement to safeguard sensitive data and prevent unauthorised access. It also gives developers relevant best practices on how to implement these security controls.
Security controls

ID

Control

AUTHOR-BP01 Implement server-side authorisation.

AUTHOR-BP02 Implement client-side authorisation via device binding.

AUTHOR-BP03 Notify users of all required permissions before they start using the app.

AUTHOR-BP04

Notify users for all high-risk transactions that has been authorised and completed.

24

AUTHOR-BP01
Control The app implements server-side authorisation. Description Server-side authorisation refers to validating and granting access permissions to users or apps by a server or an authorisation server. This ensures that access control decisions and permissions are managed and enforced on the server-side rather than the client. By implementing server-side authorisation, developers reduce opportunities for malicious attackers to tamper or bypass security measures on the app to gain unauthorised access to sensitive data (i.e. PIIs and Authentication data). Implementation guidance Developers should implement server-side authorisation after successful authentication, before granting access permissions. Developers should ensure that users are granted access based on the following:
· Assigned role with permissions: Ensure that users can only perform tasks relevant to their responsibilities.
· Contextual factors: Dynamic access scenarios such as Time of Access and Behavioural Analysis.
Things to note This security control is referenced in other standards. Please refer to the documentation(s) provided in:
· OWASP Mobile Application Security Testing Guide (MASTG) v1.7.0 (2023), pg. 50-55, 58. · PCI Mobile Payment Acceptance Security Guidelines v2.0.0 (2017), pg. 10. · ENISA Smartphone Secure Development Guidelines (2016), pg. 10-11.
25

AUTHOR-BP02
Control The app implements client-side authorisation via device binding.
Description
Client-side authorisation is the process of managing access permissions within a mobile app. This is risky as relying on the client-side can expose apps to vulnerabilities such as unauthorised access and potential fraud.
If an app’s business functions (e.g., instantiating software tokens) require client-side authorisations, device binding (a security practice that associates authorisations to access privileges on a particular device) is recommended. By implementing device binding, apps can verify device identity and establish trust. This reduces the risks associated with unauthorised access and maintains a secure, trusted path between devices, apps, and servers.
Implementation guidance
Developers should establish binding between apps and the device when a user’s identity is used for the first time on an unregistered mobile device.
Developers should also verify that apps:
· Check for modifications to the device since the last runtime. · Check for modifications to the device identity markers. · Check that the device running the app is in a secure state (e.g. no jailbreaking or rooting). The above are just some examples of best-practice techniques used by the industry. As the ecosystem of mobile devices evolves, these techniques may become out of date. As such, developers should keep abreast of the latest industry best practices to verify device bindings. Things to note
To verify device on Android devices, developers can:
· Obtain unique identifiers like IMEI or Android ID. · Retrieve build information. · Leverage native OS API features, such as Google’s SafetyNet.
To verify device on iOS devices, developers can:
· Leverage native OS services, such as Apple’s device ID via UIDevice.
This security control is referenced in other standards. Please refer to the documentation(s) provided in:
· OWASP Mobile Application Security Testing Guide (MASTG) v1.7.0 (2023), pg. 316-317, 516. · MAS Technology Risk Management Guidelines (2021), pg. 51, 56.
26

AUTHOR-BP03
Control The app notifies users of all required permissions before they start using the app. Description Required permissions are specific rights and capabilities that the app requests from the mobile device. These permissions define what resources or functionalities the app can access on users’ devices. Some examples include, but are not limited to, camera, microphone, location, etc. By implementing proper notifications that inform the users of what permissions are being requested, developers can prevent users from unknowingly granting excessive permissions, which may allow malicious actors to exploit vulnerabilities and steal sensitive data (i.e. PIIs and Authentication Data). Such notifications will also allow users to make informed decisions about the apps they install. Implementation guidance Developers should use In-App (In- App) alerts to request users for access permission. Developers should also ensure that Notifications/Alerts do not display sensitive data. Things to note Developers should only request essential permissions for the app’s functionality. This security control is referenced in other standards. Please refer to the documentation(s) provided in:
· OWASP Mobile Application Security Testing Guide (MASTG) v1.7.0 (2023), pg. 56, 58. · ENISA Smartphone Secure Development Guidelines (2016), pg. 8, 18, 28. · Apple Developer Guide on Privacy, https://developer.apple.com/design /human-interface-
guidelines/privacy (Jan 2024). · Android Developer Guide on Privacy, https://developer.android.com/quality/privacy-and-
security (Jan 2024).
27

AUTHOR-BP04
Control The app notifies users for all high-risk transactions that has been authorised and completed.
Description If an app has high-risk transaction functionalities, users should be notified immediately when a transaction has been authorised and completed. By implementing this control, developers can ensure that users are made aware immediately when high-risk transactions have been authorised and completed so that they may be able to identify potential fraudulent transactions as soon as possible.
Implementation guidance Developers should adopt the following methods to alert user:
· In-Application (In-App) alerts. · Email notifications. · Short Message Service (SMS) notifications. Developers should also ensure that Notifications/Alerts do not display sensitive data.
The above are just some examples of best-practice notification techniques used by the industry. As the ecosystem of mobile devices evolves, these techniques may become out of date. As such, developers should keep abreast of the latest industry best practices to notify users of high-risk transactions authorised and completed.
Things to note Developers should request only essential permissions for the app’s functionality.
This security control is referenced in other standards. Please refer to the documentation(s) provided in:
· MAS Technology Risk Management Guidelines (2021), pg. 52. · PCI Mobile Payment Acceptance Security Guidelines v2.0.0 (2017), pg. 10. · ENISA Smartphone Secure Development Guidelines (2016), pg. 8. · Apple Developer Guide on Privacy, https://developer.apple.com/design/human-interface-
guidelines/privacy (Jan 2024). · Android Developer Guide on Privacy, https://developer.android.com/quality/privacy-and-
security (Jan 2024).
28

29

3. Data Storage (Data-at-Rest)

Introduction
Data Storage security for data-at-rest pertains to safeguarding the integrity and confidentiality of sensitive data (i.e. PIIs and Authentication data) stored locally on the client-side device and app serverside when it is not actively being used or transmitted. This encompasses the best practices, protective measures and encryption techniques employed to secure data stored in databases, files, caches, memory, and Trusted Execution Environment (TEE) on mobile devices and similar areas in app servers.
Developers can ensure that user data is preserved and protected by implementing strong security controls for storing data at rest. Proper data- at-rest controls also ensure that the app can mitigate the risks of unauthorised access, device compromise, potential data breaches, and data leaks and fortify the app defences.
The following controls ensures that any sensitive data intentionally stored by the app is adequately protected, regardless of the target location. It also covers unintentional leaks due to improper use of APIs or system capabilities.
Security controls

ID

Control

STORAGE-BP01 Store sensitive data that is only necessary for transactions.

STORAGE-BP02 Implement secure storage of sensitive data.

STORAGE-BP02a Store sensitive data securely on server-side.

STORAGE-BP02b

Store sensitive data securely on client-side in a Trusted Execution Environment (TEE).

STORAGE-BP03 Delete sensitive data when no longer necessary.

30

STORAGE-BP01
Control The app stores sensitive data that is only necessary for transactions. Description Sensitive data is defined as user data (PIIs) and authentication data (e.g., credentials, encryption keys, etc.) Developers should only store sensitive data that is necessary for app business functions. Accumulating unnecessary information increases the impact of potential security breaches, making an app an attractive target for malicious actors. By implementing this security control, developers can ensure that exposure is limited to the data required for specific business functions, minimising the impact in the event of unauthorised access or data breaches. Implementation guidance Developers should classify data being used by the app based on an organisation’s sensitivity levels and based on legal law requirements. Developers should adopt the following guidelines to secure data that are classified as sensitive:
1. Implement a secure storage solution based on its sensitivity on the client-side/server-side. 2. Apply data protection measures (e.g. tokenising, hashing with salt, encrypting) 3. Delete sensitive data when no longer necessary. Things to note This security control is referenced in other standards. Please refer to the documentation(s) provided in: · OWASP Mobile Application Security Testing Guide (MASTG) v1.7.0 (2023), pg. 190, 398. · MAS Technology Risk Management Guidelines (2021), pg. 9-10, 36, 38. · ENISA Smartphone Secure Development Guidelines (2016), pg. 6.
31

STORAGE-BP02
Control The app implements secure storage of sensitive data. Description Secure storage for mobile apps refers to implementing techniques and practices to protect sensitive data stored on mobile devices and app servers from unauthorised access, theft or tampering. This involves best practices such as encryption, hashing, tokenisation, and proper access controls. By implementing secure storage, developers can mitigate against unauthorised access, device compromise, potential data breaches and data leaks. Implementation guidance Developers should implement a secure storage solution that commensurate with the sensitivity of data. Developers should also prioritise the following order for secure storage solution (from the most sensitive data to the least sensitive data):
1. Server-side (all sensitive data should be stored on the server-side). 2. Client-side within the Trusted Execution Environment (in the case where server-side is not
possible, store all sensitive data in the client-side TEE). Things to note This security control is referenced in other standards. Please refer to the documentation(s) provided in:
· OWASP Mobile Application Security Verification Standard (MASVS) v2.0.0 (2023), pg. 17-18. · OWASP Mobile Application Security Testing Guide (MASTG) v1.7.0 (2023), pg. 190-203, 398-
406. · ENISA Smartphone Secure Development Guidelines (2016), pg. 06-07.
32

STORAGE-BP02a
Control
The app stores sensitive data securely on server-side.
Description
Storing sensitive data on the server-side refers to storing data on remote app servers or databases. Such an approach creates a better environment to protect data from unauthorised access or breaches, enabling more secured access control, options to implement better security measures such as more complex encryptions and provisions of quicker security updates.
By implementing server-side storage of sensitive data, developers can mitigate against the inherent risks of client-side data storage, as client-side storage is inherently more susceptible to data storage exploitation techniques commonly used by malicious actors in mobile scams.
Implementation guidance
Developers should apply at least 1 of the following data protection measures:
1. For passwords only, developers can use hashing with salt6. Instead of storing actual passwords, unique salts are generated and combined with passwords, creating salted hashes.
2. Developers can encrypt7 sensitive data with encryption standards such as AES-128. 3. Developers can implement tokenisation8 with self-managed tokenisation or a tokenisation
service, replacing sensitive data with tokens where possible. In addition, developers should ensure tokenisation is of sufficient length and complexity (backed by secure cryptography) based on the data sensitivity and business needs.
The above are just some examples of best practices used by the industry. As the ecosystem of mobile devices evolves, these best practices may become out of date. As such, developers should abreast of the latest industry best practices to store sensitive data securely on the server-side.
Things to note
This security control is referenced in other standards. Please refer to the documentation(s) provided in:
· OWASP Mobile Application Security Verification Standard (MASVS) v2.0.0 (2023), pg. 19-20. · OWASP Mobile Application Security Testing Guide (MASTG) v1.7.0 (2023), pg. 71-77, 219-227,
416-421. · MAS Technology Risk Management Guidelines (2021), pg. 30, 36-37, 39. · PCI Mobile Payment Acceptance Security Guidelines v2.0.0 (2017), pg. 9. · ENISA Smartphone Secure Development Guidelines (2016), pg. 6-9.
6 Hashing with salt is used to add an extra layer of security by making it computationally intensive for attackers to decipher original sensitive data. In the context of password storage or key derivation, developers should utilise one-way key derivation functions or slow hash algorithms, such as PBKDF2, bcrypt, or scrypt. 7 Encryption is used to transform data into an unreadable format, ensuring that even if accessed without authorisation, sensitive data remains confidential. 8 Tokenisation is used to substitute sensitive data with tokens to minimise the risk of sensitive data exposure.
33

STORAGE-BP02b
Control
The app stores sensitive data securely on client-side in a Trusted Execution Environment (TEE).
Description
The Trusted Execution Environment (TEE) is an isolated area within a mobile device’s hardware or processor architecture that provides a highly secure environment for storing sensitive data and executing sensitive or critical operations. It is designed to protect sensitive data, cryptographic keys and critical processes from unauthorised access or tampering. If an app’s business functions require storage of sensitive data on the client-side, it is recommended to store it in the device’s TEE.
By implementing proper storage of sensitive data in the client-side TEE, developers can mitigate against threats originating from within a compromised device and from external malicious actors. Such storage can also mitigate against unauthorised access to user’s sensitive data on an app and prevent any encryption keys from being stolen.
Implementation guidance
Developers should store sensitive data securely on client-side in a Trusted Execution Environment (TEE) such as Android’s ARM’s TrustZone, Apple’s Secure Enclave.
Developers should also store minimally the following list of sensitive data in a TEE:
· Biometric identifiers. · Authentication tokens. · Cryptographic keys in a secure key management system such as Android Keystore, iOS
Keychain.
The above are just some examples of what sensitive data developers should store in the TEE. As the ecosystem of mobile devices evolves, developers should exercise the freedom to store any data they deem necessary to be stored in the TEE.
Things to note
For devices without hardware TEEs, developers may consider the usage of virtualised TEEs.
Alternatively, developers can consider disabling the app or disabling high- risk transaction functions of the app, as the app is deemed as insecure for high-risk transactions.
This security control is referenced in other standards. Please refer to the documentation(s) provided in:
· OWASP Mobile Application Security Verification Standard (MASVS) v2.0.0 (2023), pg. 19-20. · OWASP Mobile Application Security Testing Guide (MASTG) v1.7.0 (2023), pg. 75, 93, 194-200. · MAS Technology Risk Management Guidelines (2021), pg. 51. · PCI Mobile Payment Acceptance Security Guidelines v2.0.0 (2017), pg. 07-09, 14. · ENISA Smartphone Secure Development Guidelines (2016), pg. 10.
34

STORAGE-BP03
Control
The app deletes sensitive data when no longer necessary.
Description
Deleting sensitive data refers to the process of permanently removing or erasing confidential, private or sensitive data from storage devices, servers or databases. This process ensures that sensitive data is irrecoverably removed and cannot be accessed, retrieved, accidentally exposed, or reconstructed by unauthorised individuals or through data recovery methods.
By implementing this process, developers can minimise the window in which attackers can exploit vulnerabilities to steal sensitive data.
Implementation guidance
Developers should use the following persistent storage security techniques:
· Clear stored cookies on app termination or use in-memory cookie storage. · Remove all sensitive data on app uninstallation. · Manually remove all database files that contain sensitive data (e.g., iOS WebView caches) from
the file system when related business functions cease to exist.
The above are just some examples of best practices used by the industry. As the ecosystem of mobile devices evolves, these techniques may become out of date. As such, developers should abreast of the latest industry best practices to delete sensitive data when no longer necessary.
Things to note
Developers should be mindful of adhering to widely accepted standards and relevant data retention law including but not limited to:
· Personal Data Protection Act (PDPA) · General Data Protection Regulation (GDPR) · The Payment Card Industry Data Security Standard (PCI DSS)
This security control is referenced in other standards. Please refer to the documentation(s) provided in:
· OWASP Mobile Application Security Testing Guide (MASTG) v1.7.0 (2023), pg. 199, 206-214, 403-414.
· MAS Technology Risk Management Guidelines (2021), pg. 39. · ENISA Smartphone Secure Development Guidelines (2016), pg. 07, 09-10.
35

36

4. Anti-Tampering & Anti-Reversing

Introduction
Anti-Tampering and Anti-Reversing security controls are additional measures that developers can implement to counteract attacks attempting to tamper or reverse engineer apps. By implementing both features, developers add multiple layers of defences to apps, making it more difficult for malicious actors to successfully tamper or reverse engineer apps, which could result in:
· The theft or compromise of valuable business assets such as proprietary algorithms, trade secrets, or sensitive data,
· Financial losses of users who utilise the app for high-risk transactions, · Financial losses of organisations due to loss of revenue or legal action, · Damage on brand reputation due to negative publicity or customer dissatisfaction

The controls ensures that apps run on trusted platforms, prevent tampering at runtime and ensure the integrity of the apps’ functionalities. In addition, the controls impede comprehension by making it difficult for attackers to figure out how the apps operate.
Security controls

ID

Control

RESILIENCE-BP01 Sign with certificates from official app stores.

RESILIENCE-BP02 Implement jailbreak/root detection. RESILIENCE-BP03 Implement emulator detection.

RESILIENCE-BP04 Implement anti-malware detection.

RESILIENCE-BP05 Implement anti-hooking mechanisms.

RESILIENCE-BP06 Implement overlay, remote viewing, and screenshot countermeasures.

RESILIENCE-BP07

Implement anti-keystroke capturing or anti-keylogger against third-party virtual keyboards.

37

RESILIENCE-BP01
Control
The app is code signed with certificates from official app stores.
Description
Apps are often spoofed by malicious actors and distributed via less strictly regulated channels. Signing an app with certificates provided by official app stores assures the mobile OS and users that the mobile app is from a verified source.
Implementing code signing helps operating systems determine whether to allow software to run or install based on the signatures or certificates used to sign the code. This helps prevent the installation and execution of potentially harmful apps. In addition, code signing also assists with integrity verification, as signatures will change if the app has been tampered with.
Implementation guidance
Developers should code sign their apps with certificates. This section provides examples of how to do this via the two most popular platforms iOS and Android.
For Apple’s App Store, it can be done by enrolling in the Apple Developer Programme and creating a certificate signing request in the developer portal. Developers can register for the Apple Developer Programme and can reference the following developer guide for code signing under things to note.
For Android, there are variety of App stores. For Google’s Play Store, it can be done by configuring Play App Signing which is requirement for distribution through Google’s Play Store. For more information on how to do so developers can visit the Android developer guide under things to note.
For other official stores, refer to their respective developer guidelines on app source code signing. Things to note This security control is also a requirement for publishing apps on official app stores, as such, the recommendation is for your app to be code signed with certificates from official app stores. This security control is referenced in other standards. Please refer to the documentation(s) provided in:
· Apple Developer Programme Guide for Code Signing, https://developer.apple.com/support/code-signing (Jan 2024).
· Android Developer Guide on Privacy, https://developer.android.com/quality /privacy-andsecurity (Jan 2024).
· OWASP Mobile Application Security Testing Guide (MASTG) v1.7.0 (2023), pg. 325-326, 522523.
· ENISA Smartphone Secure Development Guidelines (2016), pg. 21.
38

RESILIENCE-BP02
Control
The app implements jailbreak or root detection.
Description
Rooted and jailbroken devices are generally considered insecure. Rooted or jailbroken devices allow users to gain elevated privileges, enabling easier circumvention of security and OS limitations. Such elevated privileges can be unsafe for apps as these privileges allow malicious actors to potentially exploit vulnerabilities, steal credentials, take over user devices and execute fraudulent app transactions.
By implementing jailbreak or root detection, developers can prevent the abovementioned exploits from happening, protect apps’ intellectual property, ensure the stability of apps and prevent the bypass of in-app systems.
Implementation guidance
Developers should implement jailbreak or root detection by implementing the following checks in their app for Android devices:
1. Check for superuser or SU binary. 2. Detect root file system changes. 3. Look for rooted apps. 4. Check for custom recovery. 5. Check for unsafe API usage.
Developers should implement jailbreak or root detection by implementing the following checks in their app for iOS devices:
1. Detect the use of restricted APIs. 2. Look for jailbreak tweaks like mods. 3. Look for unofficial app stores, e.g., check for Cydia App Store signature. 4. Look for kernel modifications. 5. Check for integrity of the critical file systems. 6. Use 3rd-party libraries designed to detect device tampering.
The above are just some examples of best-practice checks used by the industry. As the ecosystem of mobile devices evolves, these checks may become out of date. As such, developers should abreast of the latest industry best practices to implement jailbreak or root detection.
39

Things to note This security control is referenced in other standards. Please refer to the documentation(s) provided in:
· OWASP Mobile Application Security Verification Standard (MASVS) v2.0.0 (2023), pg. 31. · OWASP Mobile Application Security Testing Guide (MASTG) v1.7.0 (2023), pg. 319-320, 5069,
518-519. · MAS Technology Risk Management Guidelines (2021), pg. 50. · ENISA Smartphone Secure Development Guidelines (2016), pg. 11, 23.
9 https://github.com/crazykid95/Backup-Mobile-Security-Report/blob/master /Jailbreak-Root-DetectionEvasion-Study-on-iOS-and-Android.pdf
40

RESILIENCE-BP03
Control
The app implements emulator detection.
Description
Emulators are software used to test mobile apps by allowing a user to test a mobile app on a variety of mimicked mobile versions and devices. Although useful for testing, apps should not allow themselves to be mounted on emulators outside of the development environment.
By implementing emulation detection, developers can prevent malicious actors from running dynamic analysis, rooting, debugging, instrumentation, hooking, and fuzz testing on an emulated device they can control. In doing so, developers can prevent malicious actors from discovering vulnerabilities within the app for exploitation.
Implementation guidance
Developers should implement the following detection strategy to identify features for commonly used emulation solutions. Some recommendations of things to check for are:
· Check battery usage. · Check timestamps and clocks. · Check multi-touch behaviours. · Check memory and performance analysis. · Perform network checks. · Check whether it is hardware-based. · Check what is the OS based on. · Check for device fingerprints. · Check build configurations. · Check for emulator services and apps.
The above are just some examples of best-practice checks used by the industry. As the ecosystem of mobile devices evolves, these checks may become out of date. As such, developers should abreast of the latest industry best practices to implement emulator detection. Things to note This security control is referenced in other standards. Please refer to the documentation(s) provided in:
· OWASP Mobile Application Security Verification Standard (MASVS) v2.0.0 (2023), pg. 31-32. · OWASP Mobile Application Security Testing Guide (MASTG) v1.7.0 (2023), pg. 325, 521.
41

RESILIENCE-BP04
Control
The app implements anti-malware detection.
Description
Malware apps are increasingly used by malicious actors as a vector to compromise users’ mobile devices as such devices provide users with the convenience needed to perform day-to-day transactions. Malware apps primarily utilise sideloading features as a channel to get users to install malware on their devices.
By implementing anti-malware detection capabilities on an app at runtime, developers can prevent users from being exploited via malware exploiting app vulnerabilities and OS vulnerabilities, stealing credentials, taking over the device, and executing fraudulent transactions.
Implementation guidance
Developers should implement anti-malware detection capabilities in their apps. This can be done in a variety of ways, but are not limited to:
· Incorporate a Runtime-Application-Self-Protection (RASP) Software Development Kit (SDK) into their apps.
· Utilise RASP SDKs to check and detect for malware apps at runtime. · Check for and prevent overlays. · Prevent clickjacking. · Prevent app memory hooking.
The above are just some examples of best-practice checks used by the industry. As the ecosystem of mobile devices evolves, these checks may become out of date. As such, developers should abreast of the latest industry best practices to implement anti-malware detection.
Things to note
If the any form of maliciousness is detected, developers should disable the app and provide the user with the necessary information on why the app has been disabled and urge the user to uninstall the malicious app(s) on their device.
Alternatively, developers should warn the user, and disable high-risk functions on the app until the user remediates the malicious app(s). This security control is referenced in other standards. Please refer to the documentation(s) provided in:
· OWASP Mobile Application Security Verification Standard (MASVS) v2.0.0 (2023), pg. 31. · MAS Technology Risk Management Guidelines (2021), pg. 40, 49. · ENISA Smartphone Secure Development Guidelines (2016), pg. 23.
42

RESILIENCE-BP05
Control
The app implements anti-hooking mechanisms.
Description
Hooking refers to a technique used by attackers to intercept or modify the behaviour of a mobile app at runtime. This involves inserting or hooking into the execution flow of an app to either monitor its activities, alter its behaviour, inject malicious code or modify existing code functions to exploit vulnerabilities.
By implementing anti-hooking mechanisms on apps, developers can prevent the above attacks from happening and prevent unauthorised access, protect high- risk transaction operations, detect and prevent tampering and modification attempts, preserve intellectual property and maintain app reliability.
Implementation guidance
Developers should implement the following example mechanisms to mitigate against hooking attacks:
· Implement protections to block code injections. · Implement protections to prevent method hooking by preventing modifications to the app
source code (both on the client and server). · Implement protections to prevent the execution of modified codes in your app. · Implement protections to prevent memory access and memory manipulation for your app. · Implement tamper resistant algorithms or anti-tampering SDKs (commonly known as
Runtime-Application-Self-Protection SDKs). · Check for insecure parameters such as obsolete APIs and parameters.
The above are just some examples of best-practice checks used by the industry. As the ecosystem of mobile devices evolves, these checks may become out of date. As such, developers should abreast of the latest industry best practices to implement anti-hooking mechanisms. Things to note This security control is referenced in other standards. Please refer to the documentation(s) provided in:
· OWASP Mobile Application Security Verification Standard (MASVS) v2.0.0 (2023), pg. 31. · OWASP Mobile Application Security Testing Guide (MASTG) v1.7.0 (2023), pg. 135-140, 189,
318-319, 339-340, 390, 520. · MAS Technology Risk Management Guidelines (2021), pg. 56. · ENISA Smartphone Secure Development Guidelines (2016), pg. 23, 26.
43

RESILIENCE-BP06
Control
The app implements overlay, remote viewing, and screenshot countermeasures.
Description
Sensitive information can be captured or recorded without the user’s explicit consent when an app has screen recording, screenshot or overlay functionalities. For example:
· Overlay attacks deceive users by creating a fake layer mimicking trusted apps, aiming to steal sensitive data.
· Remote viewing attacks involve unauthorised access to a device’s screen, allowing attackers to harvest sensitive data remotely.
· Screenshot attacks occur when malicious actors capture a device’s screen without user consent, extracting sensitive data.
Implementing overlay, remote viewing and screenshot countermeasures can ensure that sensitive information remains secure, user privacy is upheld and sensitive data is protected against the inadvertent loss or misuse.
Implementation guidance
Developers should implement anti-tampering and anti-malware checks via RASP SDKs to prevent malicious apps from utilising overlays, and remote viewing exploits.
For screenshots, developers can utilise the FLAG_SECURE flag for Android apps and similar flags for iOS to block out all screenshot capabilities when using the app. However, suppose business functions require screenshot capabilities (e.g. Taking a screenshot of a completed PayNow transaction). In that case, the recommendation is to disable screenshot capabilities for screens or pages that include sensitive data (PII and Authentication Data).
Developers can also consider masking input with sensitive data and sensor screens when app is backgrounded.
Things to note
Some examples of where to disable these screenshot capabilities include but are not limited to: Login pages, Multi-Factor Authentication pages, Security Credentials, and PII changing pages, etc.
This security control is referenced in other standards. Please refer to the documentation(s) provided in:
· OWASP Mobile Application Security Verification Standard (MASVS) v2.0.0 (2023), pg. 31. · OWASP Mobile Application Security Testing Guide (MASTG) v1.7.0 (2023), pg. 166-168, 257,
259, 265-267, 366, 480-481. · MAS Technology Risk Management Guidelines (2021), pg. 56. · ENISA Smartphone Secure Development Guidelines (2016), pg. 8.
44

RESILIENCE-BP07
Control
The app implements anti-keystroke capturing or anti-keylogger against third- party virtual keyboards.
Description
Keystroke capturing and keylogging are methods malicious actors utilise to monitor, log, and record the keys pressed on a keyboard without the user’s knowledge and consent. This allows logging and capturing of potentially sensitive data (i.e. PII and authentication Data).
By implementing keystroke and keylogging countermeasures, developers can prevent the unnecessary loss of sensitive data. More specifically, this control is targeting Android devices, as the native keyboard of Android devices can be changed. Such changes can expose apps to security vulnerabilities as the trusted path between keyboard inputs and apps have untrusted parties between them.
Implementation guidance
Developers should not allow insecure third-party virtual keyboards to be used for inputs that may contain sensitive data. Secure in-app custom keyboard is preferred for such inputs.
By implementing an in-app keyboard, developers can control where the logging data goes and mitigate against the risk of insecure third-party virtual keyboards acting as keyloggers to capture keystrokes.
Along with using in-app keyboards, developers should implement the following suggestions for inputs that require sensitive data (i.e. PII and Authentication Data): Disable autocorrect, autofill, autosuggestion, cut, copy, and paste for functions/or apps that contain sensitive data.
Things to note Some examples of functions that should utilize in-app keyboards include but are not limited to logging in, entering an OTP, or other verification factors, etc.
This security control and best practice primarily targets Android devices. The main goal is to ensure the security of the trusted path. Since Android does not provide a method by which to enforce the usage of native/trusted keyboards, developers should implement an in-app keyboard to ensure insecure third-party virtual keyboards do not log information.
Implementing a secure in-app keyboard does not mitigate the risks associated with a compromised device.
This security control is referenced in other standards. Please refer to the documentation(s) provided in:
· OWASP Mobile Application Security Verification Standard (MASVS) v2.0.0 (2023), pg. 31. · OWASP Mobile Application Security Testing Guide (MASTG) v1.7.0 (2023), pg. 203, 214-215,
257, 259, 400, 414-415. · MAS Technology Risk Management Guidelines (2021), pg. 56. · ENISA Smartphone Secure Development Guidelines (2016), pg. 08, 23.
45

References

S/N 1
2
3
4
5
6 7

Document OWASP Mobile Application Security Verification Standard (MASVS) v2.0.0 OWASP Mobile Application Security Testing Guide (MASTG) v1.7.0 MAS Technology Risk Management Guidelines, PCI Mobile Payment Acceptance Security Guidelines v2.0.0 ENISA Smartphone Secure Development Guidelines Android Developers Apple Developer Documentation

Source OWASP
OWASP
MAS
PCI-DSS
ENISA
Android Apple

Dated 2023
2023
2021
2017
2016
2024 2024

46

References

Read User Manual Online (PDF format)

Loading......

Download This Manual (PDF format)

Download this manual  >>

CSA User Manuals

Related Manuals