Application Developer Guidance focuses on providing developers with the knowledge, tools, and best practices needed to write secure code, reduce vulnerabilities, and implement secure design principles. By integrating security throughout the software development lifecycle (SDLC), this mitigation aims to prevent the introduction of exploitable weaknesses in applications, systems, and APIs. This mitigation can be implemented through the following measures:
Preventing SQL Injection (Secure Coding Practice):
Cross-Site Scripting (XSS) Mitigation:
Secure API Design:
Static Code Analysis in the Build Pipeline:
Threat Modeling in the Design Phase:
Tools for Implementation:
Domain | ID | Name | Use | |
---|---|---|---|---|
Enterprise | T1212 | Exploitation for Credential Access |
Application developers should consider taking measures to validate authentication requests by enabling one-time passwords, providing timestamps or sequence numbers for messages sent, using digital signatures, and/or using random session keys.[1][2] |
|
Enterprise | T1564 | Hide Artifacts |
Application developers should consider limiting the requirements for custom or otherwise difficult to manage file/folder exclusions. Where possible, install applications to trusted system folder paths that are already protected by restricted file and directory permissions. |
|
.009 | Resource Forking |
Configure applications to use the application bundle structure which leverages the |
||
.012 | File/Path Exclusions |
Application developers should consider limiting the requirements for custom or otherwise difficult to manage file/folder exclusions. Where possible, install applications to trusted system folder paths that are already protected by restricted file and directory permissions. |
||
Enterprise | T1574 | Hijack Execution Flow |
When possible, include hash values in manifest files to help prevent side-loading of malicious libraries.[4] |
|
.001 | DLL |
When possible, include hash values in manifest files to help prevent side-loading of malicious libraries. |
||
Enterprise | T1559 | Inter-Process Communication |
Enable the Hardened Runtime capability when developing applications. Do not include the |
|
.003 | XPC Services |
Enable the Hardened Runtime capability when developing applications. Do not include the |
||
Enterprise | T1647 | Plist File Modification |
Ensure applications are using Apple's developer guidance which enables hardened runtime.[5] |
|
Enterprise | T1496 | .003 | Resource Hijacking: SMS Pumping |
Consider implementing CAPTCHA protection on forms that send messages via SMS. |
Enterprise | T1593 | Search Open Websites/Domains |
Application developers uploading to public code repositories should be careful to avoid publishing sensitive information such as credentials and API keys. |
|
.003 | Code Repositories |
Application developers uploading to public code repositories should be careful to avoid publishing sensitive information such as credentials and API keys. |
||
Enterprise | T1195 | Supply Chain Compromise |
Application developers should be cautious when selecting third-party libraries to integrate into their application. Additionally, where possible, developers should lock software dependencies to specific versions rather than pulling the latest version on build.[6] |
|
.001 | Compromise Software Dependencies and Development Tools |
Application developers should be cautious when selecting third-party libraries to integrate into their application. Additionally, where possible, developers should lock software dependencies to specific versions rather than pulling the latest version on build.[6] |
||
Enterprise | T1550 | Use Alternate Authentication Material |
Consider implementing token binding strategies, such as Azure AD token protection or OAuth Proof of Possession, that cryptographically bind a token to a secret. This may prevent the token from being used without knowledge of the secret or possession of the device the token is tied to.[7][8] |
|
.001 | Application Access Token |
Consider implementing token binding strategies, such as Azure AD token protection or OAuth Proof of Possession, that cryptographically bind a token to a secret. This may prevent the token from being used without knowledge of the secret or possession of the device the token is tied to.[7][8] |
||
Enterprise | T1078 | Valid Accounts |
Ensure that applications do not store sensitive data or credentials insecurely. (e.g. plaintext credentials in code, published credentials in repositories, or credentials in public cloud storage). |
|
Mobile | T1626 | Abuse Elevation Control Mechanism |
Applications very rarely require administrator permission. Developers should be cautioned against using this higher degree of access to avoid being flagged as a potentially malicious application. |
|
Mobile | T1517 | Access Notifications |
Application developers could be encouraged to avoid placing sensitive data in notification text. |
|
Mobile | T1513 | Screen Capture |
Application developers can apply the |
|
Mobile | T1635 | Steal Application Access Token |
Developers should use Android App Links[10] and iOS Universal Links[11] to provide a secure binding between URIs and applications, preventing malicious applications from intercepting redirections. Additionally, for OAuth use cases, PKCE[12] should be used to prevent use of stolen authorization codes. |
|
.001 | URI Hijacking |
Developers should use Android App Links[10] and iOS Universal Links[11] to provide a secure binding between URIs and applications, preventing malicious applications from intercepting redirections. Additionally, for OAuth use cases, PKCE[12] should be used to prevent use of stolen authorization codes. |
||
Mobile | T1474 | Supply Chain Compromise |
Application developers should be cautious when selecting third-party libraries to integrate into their application. |
|
.001 | Compromise Software Dependencies and Development Tools |
Application developers should be cautious when selecting third-party libraries to integrate into their application. |