Detect integrity violation incidents (code modification prevention)

From OWASP
Jump to: navigation, search

This is a principle or a set of principles. To view all principles, please see the Principle Category page.


Context

Mobile app developers must take into account a whole host of new risks that relate to hosting code in an uncontrolled environment. If you are hosting code in an untrustworthy environment, you are susceptible to the risk that an adversary will reverse engineer and modify your code via binary attacks [1] [2] [3] [4].

Whether a hacker is trying to pirate your app, steal your data, or alter the behavior of a critical piece of infrastructure software as part of a larger crime – inspecting and/or modifying an application can play an essential role. As part of a layered protection strategy, companies should have mechanisms in place that add anti-decompile, anti-debug, anti-tamper and anti-root controls directly into an application to protect, detect, and respond to attacks on the application's integrity. Consider how reverse engineering and debugging application attacks can cross data, operational, and IP risk boundaries:

Attack Resulting Risk
Circumventing encryption used during data transmission or storage exposes otherwise secured data Unauthorized data access leads to data loss, loss of revenue, privacy breaches, regulatory non-compliance, and trade secret theft
Insert and modify data within your application Altering application to circumvent controls and voiding authorization and access controls to gain access to restricted information or gain additional access for free
View critical function code, the values of dynamic keys and how sensitive information is saved to your file systems and databases Loss of highly sensitive data such as: digital keys, certificates, credentials, and proprietary algorithms
Modify and release a copycat or malware infected version of your application A redistributed version of your application performs illicit actions that cause reputational damage and exposure



MainProjectIcon.png This content is part of a much bigger set of principles. See the Architectural Principles That Prevent Code Modification or Reverse Engineering project for more information.

Description

Detecting integrity violation is important because otherwise the attacker has unlimited time to perfect an integrity attack. An integrity violation is defined as an insertion of code into the application. As part of a layered protection strategy, companies should have mechanisms in place that add vulnerability masking, anti-debug and anti-tamper functionality directly into an application to protect, detect, and respond to attacks on the application's integrity.

Examples

For example, a Checksum control is responsible for detecting code changes between compile-time and runtime of the application.
As another example, an anti-debug control is important not only because it is a hacker's tool of choice, but because it can be used to insert and modify data within your application.[5]


External References

[1] Arxan Research: State of Security in the App Economy, Volume 2, November 2013:

“Adversaries have hacked 78 percent of the top 100 paid Android and iOS apps in 2013.”

[2] HP Research: HP Research Reveals Nine out of 10 Mobile Applications Vulnerable to Attack, 18 November 2013:

"86 percent of applications tested lacked binary hardening, leaving applications vulnerable to information disclosure, buffer overflows and poor performance. To ensure security throughout the life cycle of the application, it is essential to build in the best security practices from conception."

[3] North Carolina State University: Dissecting Android Malware: Characterization and Evolution, 7 September 2011:

“Our results show that 86.0% of them (Android Malware) repackage legitimate apps to include malicious payloads; 36.7% contain platform-level exploits to escalate privilege; 93.0% exhibit the bot-like capability.”

[4] InfoSecurity Magazine: Two Thirds of Personal Banking Apps Found Full of Vulnerabilities, January 3 2014:

“But one of his more worrying findings came from disassembling the apps themselves ... what he found was hardcoded development credentials within the code. An attacker could gain access to the development infrastructure of the bank and infest the application with malware causing a massive infection for all of the application’s users.”

[5] PreEmptive and Deloitte Review: Application Integrity Protection,

“Whether a hacker is trying to pirate your app, steal your data, or alter the behavior of a critical piece of infrastructure software as part of a larger crime – inspecting and/or modifying an application can play an essential role...”