Five Key Components of an Application Security Program

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:

    Security by design—The most effective method to enhance the security of applications and application development activities is to consider security at the point of architecture and design, before any source code is written or compiled. Collaboration between application security professionals and developers at the onset of any new application development project is likely to result in more secure applications than the traditional approach of addressing security during or after the completion of application development. This collaboration should include a risk-based identification and specification of security control objectives and requirements that need to be integrated into the application to fit the organization’s risk appetite.

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.

  1. Secure code testing—Secure code testing should be conducted on an ongoing basis, not merely at the time of quality assurance or security testing. There are several primary types of security code testing that should be performed: