profile picture

Clean water & secure SDLC

June 28, 2021 - sdlc application security secure sdlc

Hi. In this post, I would like to write a few words about the secure software development life cycle. Why is it worth implementing and what is the deal with the water?
To the point.

Software Development Life Cycle

Taking into account that the SDLC concept is commonly known so, in a nutshell: The software development life cycle (SDLC) is a framework that development teams use to produce high-quality software systematically and cost-effectively​. The SDLC consists of the stages:

All of it looks pretty well in theory but there is one disadvantage of SDLC in terms of security, namely some security-related activities may appear or not. The lack of security activities causes what follows:

secure SDLC

Could we do something better? Yes, secure SDLC comes with the help.

What is Secure SDLC? Secure SDLC

Imagine you are at the river and have two bottles, one with a water filter. You take water from the river. One bottle without a filter is full of micro-plastic particles - security bugs, the other has almost clean water. This is how you can imagine the difference between SDLC and secure SDLC. Secure SDLC is a bottle with a filter that stops most of the pollution.

Secure SDLC brings security assurance activities to every stage of the Software Development Life Cycle. The secure SDLC aims at putting additional security layers in the development process. Secure SDL contains five core components:

  1. Requirements: This stage involves a risk assessment. In this phase the group of specialists (developers, security specialists, product owners) discover the possible risk connected with the software and establish security requirements. This is an extension of the ‘Requirements’ stage of SDLC. Every phase of the secure SDLC should be an ongoing process during software changes. It will help to illustrate possible risks.

  2. Design: This phase identifies potential surfaces of attacks and countermeasures for them. This step, known as Threat Modeling, basically allows the developer team to find answers to 4 questions:

    • What are we building?
    • What can go wrong?
    • What are we going to do about that?
    • Was our job good enough? There are many ways to approach this, brainstorming or using a structure model(STRIDE, Kill Chains, CAPEC and others). Also software architecture has to be reviewed and appropriate security requirements have to be defined.
  3. Implementation: The implementation phase concerns writing secure code. In this stage, engineers will write high-quality code based on their knowledge, threat modeling, secure practice guides and static application security testing tools. This step is completed along with the ‘Development’ phase of the SDLC.

  4. Verification: This phase is the completion of the ‘Testing’ stage of SDLC. In this phase, unit and integration tests should be extended to security test cases to validate both positive and negative requirements for security controls such as authentication, access control, input validation & encoding, encryption, user and session management, error handling, auditing and logging. Also, dynamic application security testing (DAST) should be implemented and manual security testing should be conducted.

  5. Release: The last step takes place when all the security activities are confirmed and developers have completed activities from the SDLC (Deployment and Maintenance). As soon as the software is released it is sent to the production environment and then the users can interact with it securely and productively. After that, we should be prepared for handling security incidents. So it is important to have an incident response plan. This topic is very broad, but in short is a set of instructions to help IT staff detect, respond to and recover from security incidents.

Matters that are worth attention in the context of the effective implementation of security SDLC:

Conclusion

Above I described general lifecycle phases that cover end-to-end security of the SDLC.

It's worth becoming familiar with various frameworks (link in the References section), approach of secure SDLC before taking a decision on implementation - relay on standard on build own secure SDLC program. The most important thing, before starting your secure SDLC program, should be approved by stakeholders. I believe that it is worth implementing a secure development life cycle. Secure SDLC allows us to catch many security bugs before code of application will be deployed to production. Thanks for that, we can save time and money.

References