Jan 27, 2017
The most effective way to improve security is to tackle the problem at its source. Though we can't control attacks from malicious third parties, we can control the vulnerabilities and bugs that allow attackers to gain entry and wreak havoc. To help your organisation improve the security of its applications, we're looking at a straightforward 5-step strategy for identifying and remediating vulnerabilities. Armed with the strategies outlined here, you'll be able to act on potential problems before they cause a serious security breach.
1) Application Threat Modeling
Threat modeling is an exercise to help dev teams understand the potential vulnerabilities and threats an application may encounter in its deployed environment. It's important to start the threat modeling process before coding has begun, and continually re-evaluate the application's risks as it evolves through the software development lifecycle (SDLC).This process offers a systematic and organised way to identify and track potential vulnerabilities. By ranking threats, limited development resources can be used in the most effective way possible; ensuring that effective countermeasures are chosen to combat the biggest perceived threats.The threat modeling process can be broken-down into 3 simple stages:
- Decomposing the application.
- Identifying and ranking threats.
- Identifying suitable countermeasures.
2) Security Design Reviews
Security design reviews are designed to cast a critical eye over the security of an application's structure. Application architecture, deployment infrastructure and design at each tier of development are analysed for vulnerabilities and bugs. The more frequently these code reviews are conducted, the easier it becomes to identify potential problems as soon as they appear. As well as being easier to fix, any problems that are identified early in the SDLC are significantly cheaper to remediate than those identified after launch. Though it isn't always possible to budget for regular formal code reviews, it's often easier to incorporate an informal design review into the development process. Pair programming offers an efficient and cost-effective way of identifying early stage problems; and does so in a collaborative (and even competitive) manner.
3) Developer Security Education
A developer's primary role isn't to ensure application security - it's to create fast, functionality-rich code, quickly and to budget. There are myriad ways for a developer to achieve their objectives and create functional code, but without education into the best practices of secure coding, there's no guarantee their code will be secure. To minimise the number of vulnerabilities and bugs that make it into a finished product, it's important to stem the problem at the source: and help developers create secure code. The exact nature of secure code will vary by their role and specialism, but thanks to online eLearning courses, it's easier than ever to tailor-make a syllabus that fits their needs. Whether your developer is using PHP or C++, it's possible to create an engaging and effective security syllabus to teach them about the best practices of secure code.
4) Penetration Testing
Penetration testing allow you to test-out the security of your application, and model the type of attacks it might encounter after release. The types of attack vectors used by the testers (for example SQL injection or cross-site scripting) allows you to identify the most at-risk points of entry into your application. These can then be used to prioritise further testing and redevelopment, allowing you to plug-up the biggest holes in your security before release. Penetration testing is also invaluable for improving the security awareness of developers. Seeing how their code is interacted with in real-life, and understanding the vulnerabilities that allowed a third-party to gain access to the application, will help devs to improve their coding, and avoid creating the same loopholes in the future.
5) Final Security Review
The final security review acts as a sanity check prior to release. It provides the development team with an opportunity to reflect on their previous security findings, and ensure that all the problems they've identified have been remediated to a suitable degree. If each of the prior steps have been followed, the dev team should be able to rest easy - safe in the knowledge that the security of their application has been tested throughout the software development lifecycle. When release day finally comes, this should minimise the number of problems encountered, and significantly reduce the costs of issuing expensive post-release fixes and patches.