Cybersecurity is not only about hacking

When I tell anyone that I am interested in cybersecurity, they immediately get Mr. Robot vibes, thinking that I am only interested in hacking, because thats what’s most interesting in cybersecurity, isn’t it? While I enjoy hacking and attempting to figure out how things work (a process known as reverse engineering), I still consider myself a developer with a passion for cyber. Today, I’d like to introduce you to one of my favorite topics: DevSecOps.

What is DevSecOps?

DevSecOps stands for development, security, and operations. It is a way of building and maintaining software that makes sure that security is a key consideration throughout the entire process. It’s a way of making sure that the software is as safe and secure as possible, from the very beginning of the development process all the way to when it’s being used by people.

Think of it like building a house. Normally, people build the house first, and then they bring in a security expert to make sure that the house is safe and secure. With DevSecOps, the security expert is involved from the very beginning of the building process, making sure that the house is built in a way that is as safe and secure as possible.

DevSecOps also involves collaboration between different teams such as developers, security experts, and operations team, to make sure that everyone is working together to create a product that is as safe and secure as possible. It’s a way of making sure that security is not an afterthought, but is built into the software from the very beginning.

Why is DevSecOps important?

In the past, the security checks were only done in the final stage of development, which wasn’t a problem when development cycles lasted months or even years, but those days are over. With effective DevOps, we now have rapid and frequent development cycles (they usually take weeks or days), but outdated security practices can undo even the most efficient DevOps initiatives.

In addition to that, cybersecurity threats are becoming more sophisticated and frequent. As software systems become more complex and interconnected, they are also becoming more vulnerable to cyberattacks. DevSecOps helps to address these threats by identifying and mitigating security risks early in the development process.

Besides that many industries are subject to regulations that require them to meet certain security standards. DevSecOps helps organizations to comply with these regulations by making security an integral part of the software development process.

As a society, we are rapidly adopting cloud, mobile, and IoT technologies, which brings in more attack vectors and increased the complexity of securing software systems. DevSecOps allows organizations to keep up with the pace of innovation while still ensuring that security is a top priority.

Overall, DevSecOps is important because it helps organizations to develop and deploy software quickly while still ensuring that security is a top priority. It helps organizations to stay ahead of the constantly evolving cybersecurity threats and to comply with increasingly strict regulations.

How to incorporate DevSecOps?

First, let me emphasize that DevSecOps isn’t just some kind of checkbox we can tick and be done with it. DevSecOps is more about thinking about application and infrastructure security from the start. These are some of the key points on how to incorporate DevSecOps into your software development life cycle.

Automation, automation, automation…

Automating security testing and vulnerability assessments can help to identify and fix security issues early in the development process. This can include using tools such as static code analysis, dynamic analysis, and penetration testing.

As for SAST (Static Application Security Testing), I personally use both CodeQL and Snyk CLI as I believe that using more security tools can provide comprehensive security solution.

CodeQL is a semantic code analysis engine developed by GitHub, it allows developers to write custom queries to find and fix security vulnerabilities in their code. With CodeQL, developers can also create their own security rules to detect vulnerabilities specific to their environment and use cases.

Snyk CLI is an open-source tool that automates the process of finding and fixing vulnerabilities in open-source dependencies. It can scan the source code of your application, identify the open-source libraries it is using and the vulnerabilities associated with them. Additionally, Snyk CLI can automatically fix or upgrade the vulnerable dependencies to their secure versions.

For DAST (Dynamic Application Security Testing) I like OWASP ZAP as it is quite beginner friendly, but offers a lot of functionality.

Communication and collaboration are the keys

In cybersecurity, communication is everything. Encouraging collaboration between development, security, and operations teams can help to break down silos and ensure that security is considered throughout the entire software development life cycle. This can be achieved through regular meetings, cross-functional teams, and shared metrics. Tools such as JIRA, Confluence, and Trello can be also used to manage and track tasks and bugs, and to facilitate communication between teams. At work, I use the combination of JIRA and Confluence. For my personal projects, I tend to prefer Trello.

Continuous integration and delivery (CI/CD)

Incorporating security testing into the continuous integration and delivery (CI/CD) process can help to catch and fix security issues before they make it into production. Tools such as Jenkins, Travis CI, and CircleCI can be used to automate the build, test, and deployment of code. In addition, security gates can be implemented using tools like Snyk, Aqua Security, and Anchore to block deployments if they fail security tests.

Don’t forget about security training

We might think that incorporating the security tools would do the trick, but providing regular security training to developers can help to ensure that they are aware of the latest threats and vulnerabilities and know how to write secure code. We can use tools such as SecureCode Warrior, HackerOne, and OWASP Juice Shop can be used to provide interactive and hands-on training for developers. In addition to that, I have found that it is quite beneficial to have regular Security DevTalks in order to let every one catch up on what is new in the world of cyber.

Security as Code (SaC)

We should treat security as code and store security configurations, policies and test data in source control. This enables collaboration, versioning and auditing of security. Tools such as HashiCorp’s Vault, CyberArk, and AWS Secrets Manager can be used to securely store and manage security credentials and configurations.

Security in design

It is recommended to incorporate security considerations into the design process. For example, by using threat modeling, we can help identify and mitigate risks before they become issues. Threat modeling tools such as Microsoft’s Threat Modeling Tool, IriusRisk, and PASTA (Process for Attack Simulation and Threat Analysis) can be used to identify and mitigate risks during the design process.

Conclusion

Overall, DevSecOps is important because it helps organizations to develop and deploy software quickly while still ensuring that security is a top priority. It helps organizations to stay ahead of the constantly evolving cybersecurity threats and to comply with increasingly strict regulations.

I have also summer up some of the best practices to implement DevSecOps, keep in mind that it is important to find the right balance between security and speed in your organization and tailor the implementation to your specific needs.

If you have read so far, you might want to follow me here on Hashnode. Feel free to connect with me over at LinkedIn or Mastodon.