Most companies have hundreds of apps so it is impractical to ensure every single app is always meeting your security policies especially when they may have third-party components embedded. Another way to approach this may be to look at zero-trust networking and micro-segmentation. Using low-cost cloud-based micro-segmentation tools you can prevent any new code from running on servers and apps.
Furthermore, keep legacy software and OS operational that may not be receiving security updates anymore. Even if a third-party component gets infected the zero-trust approach will prevent it from launching. Additionally, if a device did get infected with ransomware the micro-segmentation would prevent the ransomware from moving laterally throughout the network - this is an area most networks are not protected -
Micro-segmentation and zero-trust are recommended by Gartner and Forrester as a key initiative for every enterprise. It will help you secure applications and will add a lot more security, visibility and control to your network.
Multiple aspects need to be looked at. I'm listing a few critical ones:
1. Hidden passwords and secrets within the application.
2. Check IaaC, Docker, K8 scripts - do they have the right configuration? Wrt Kubernetes and "Hardening Guidance" were released by NSA and CISA (Cybersecurity Technical Report). You need to check if these checks are successful.
3. Validate open-source security vulnerabilities (SCA). This is one area that many projects miss out on and is a very important one to focus on. Read the May 12 release (from US Whitehouse) around this.
4. Do dynamic application security testing using the application URL, in addition to static code check.
Application Security solutions need to work for developers and facilitate their interaction with AppSec including things like training/education. It needs to be fast enough to work on the main CI/CD pipeline and it needs to be trustworthy.
Secure User access solution, (2 factor authentication etc). Ability to provide only the required user access privileges based on user type. Secure communication between user and application and application and database. Encryption of database depending on sensitivity of data.
Applications is not an easy task -- especially when the application is in a constant state of flux to accommodate and adapt to business needs. One of the most important, yet overlooked aspects of application security is to know what you are defending and to understand it properly. It's critical to have an understanding of an application from the outside-in of what technologies it relies on; potential risks associated with it; and organizational impact associated with a security breach in that application.
Properly understanding an application allows you to identify possible weak spots and also helps you narrow down your scope during testing, as well as knowing what vulnerabilities, bad coding practices and patches your organization need to watch out for. It's good to also keep in mind that understanding a target is the first step an attacker takes -- knowing about, and fixing that bug or mis-configuration before an attacker exploits it is the aim of the game.
Furthermore, while aiming to prevent security vulnerabilities is a step in the right direction towards reducing your risk surface, preventive measures alone are not going to provide you with evidence to back-up your efforts. Even the best and brightest security conscious engineers miss a vulnerability or a patch now and then -- it’s part of being human.
You need to back-up your application security efforts with frequent testing. Unfortunately, it’s very difficult to manually pen-test an application at the speed at which new code gets deployed. Moreover, manual testing can get very costly very quickly, and is not salable. Automated security testing helps organizations test for vulnerabilities against an increasingly growing threat surface very quickly and in a scalable manner at a low, predictable costs, meaning that new code can roll off the assembly line faster without compromising your application's security baseline.
So in summary, know what you're trying to secure well, test continuously, and leverage the agility of automated testing to build security into applications as opposed to bolting it on.
The most important aspect to look for in Application Security should be about Data Handling. It should be able to answer the basic questions like where does the data from the application go, who has access to the data and how long does the data need to be accessible for consumption which the Application may or may not expose.