Application security is an essential part of application development and security activities within organizations that develop and maintain their own applications or produce applications for other organizations. Adversaries continue to discover and exploit vulnerabilities in applications at a pace that often exceeds the organization’s ability to remediate them or to implement compensating controls fast enough to protect themselves while they are taking corrective actions. With the emerging practices of continuous integration and continuous development/deployment (CI/CD) quickly becoming the norm for application development activities, the ability to apply reasonable and adequate security concepts, controls, and testing becomes more daunting.
The drive to what is termed “shift left,” or integrate quality assurance, functional and security testing, and practices into application development activities is quickly becoming an industry leading practice to enhance application security and a key component of successful application security programs. Shifting left for application security requires changes in philosophies, approaches and work practices for most organizations. It requires risk and security to be considered, integrated and tested at every step of the application development process and orchestrated into an application security program. Application security programs encompass all the tools, processes, functions and capabilities that support these efforts.
There are five key components of an application security program:
Once an application architecture and design are defined, security risk assessments should be performed that identify and categorize the inherent security risk of the planned application architecture and the application’s expected functional capabilities. These assessments should be inclusive of types of data, business processes, third-party systems and platforms, and/or information infrastructure with which the application will interact and/or to and from which it will store, process, and transmit data. By gaining insight into inherent security risk, appropriate security control objectives and associated security controls can be defined to manage risk appropriately within the applications. Controls can include, but are not limited to, the use of web application firewalls (WAFs) and application program interface (API) security gateways, encryption capabilities, authentication and secrets management, logging requirements, and other security controls.
The identification of security instrumentation requirements should also be included in the architecture and design stage of application development. The insights that security teams need to appropriately monitor the application and how the data should be interpreted must be identified and documented by the development staff. This information should be validated for comprehensiveness by security staff prior to being incorporated into application-coding activities.
Both techniques are useful in identifying security concerns in code that will need to be addressed. SAST testing has the advantage of being able to identify issues and concerns at the time of code development or soon after. When using SAST, approval gates should be implemented in the software development life cycle (SDLC). Ideally, code scanning should be implemented in an integrated development environment (IDE) where code can pass through gates prior to being part of the application build branch, ensuring that all identified security issues are addressed before the code is allowed to be merged into the larger code base that makes up the application. This minimizes the effort expended during corrective recoding activities and prevents deficiencies from becoming part of the larger code base that will be compiled into applications.
Penetration (pen) testing can also be integrated into the testing process. Pen testing can be accomplished using automated tools that operate autonomously as part of the testing pipeline (e.g., Burp Suite, portswigger.net) or through a combination of manual human-driven testing and automated testing prior to release of code to production environments. If a risk-based approach is followed, low-risk code can be scanned through automated testing alone, but high-risk applications should have human testing performed at least annually. This ensures that cause-and-effect pen testing is performed to compensate for weaknesses in automated testing. In this type of pen testing, pen testers can utilize and interpret data from multiple testing tools and try multiple attack methods and techniques based on how the application reacts to them. Cause-and-effect pen testing also comprehensively evaluates the effectiveness of security controls across multiple dimensions of attack techniques.
A core component
Application security is a core component of any successful information risk and security program. Adversaries are regularly and consistently identifying and exploiting new application vulnerabilities. An effective application security program can significantly reduce the presence of these vulnerabilities, which, in turn, enhances the security of the developed applications. Application security can also reduce the time and effort exerted to perform any corrective actions taken to rectify security issues and vulnerabilities that are often both disruptive and challenging for organizations.
Is the president of IP Architects LLC.