According to Verizon’s 2024 Data Breach Investigations Report, 68% of measured data breaches involved a human element, not including malicious privilege misuse. That is to say, mistakes, accidents, ignorance, and other human errors cause a significant percentage of data breaches.
These mistakes are expensive, too. 32% of data breaches were a form of ransomware or extortion, with a median direct ransom payment of $46,000. This number doesn’t include other related costs, like the significant damage breaches can cause to reputation and platform integrity, additional expensive penalties, payouts, and legal fees.
Close to 40% of breaches included compromised credentials, a prevalent type of secret. Securing secrets through all stages of the development cycle is crucial to avoiding data breaches. In this article, we’ll go through five of the most common mistakes developers make when managing their secrets and how to avoid them.
Hardcoding secrets can simplify certain stages of development since deployment tools don't need additional permissions or infrastructure to access secrets. Yet injecting secrets like this leaves them in plain text for anyone to access. Since code repositories are collaborative spaces available to developers across projects, secrets that grant access to sensitive information should never be stored there, especially not hard-coded in plain text.
Instead, use a secrets manager that allows for dynamic secrets injection to eliminate the risk of accidental exposure of secrets in repositories. Secrets management solutions like Doppler integrate into various development services, like Kubernetes, Terraform, and AWS, to secure secrets without compromising development speed or efficiency.
In a fast-paced development environment, it’s easy for developers to abandon the Principle of Least Privilege in their application of secrets. At its core, the Principle of Least Privilege reduces the attack surface of each secret by mitigating the damage it can do if exposed. Over-provisioning a secret means granting it access to more parts of the platform than necessary, significantly increasing the risk of harm if that secret is exposed.
It’s essential to be intentional during development to reduce overprovisioning. Create secrets purposefully and intentionally, and analyze when a new secret is needed or when it’s safe to add permissions to one already in use. Using a secrets manager helps store and track secrets to make this intentional design smooth and efficient.
The secrets management lifecycle refers to the creation, rotation, revocation, and expiration of secrets. Each progression in this lifecycle represents a place where developers can implement control over the secret, influencing its vulnerability. Managing the appropriate lifecycle of a secret helps minimize its attack surface in several ways:
Creation: Creating a secret includes defining its use, storage, and privileges. Take extra care during creation to ensure the secret isn’t hard-coded into a repository or over-provisioned.
Rotation: Regularly rotate secrets so any stolen credentials will be revoked whether they are recognized as compromised or not. This also reduces the tendency to reuse credentials. User credentials are typically excluded from regular rotation unless they are detected to be compromised.
Revocation: When secrets have fulfilled their purpose, revoke their access to prevent misuse and preserve platform integrity. This revocation process can be active or predefined.
Managing the secrets lifecycle occurs before the creation of a secret, too. Platform structure may need to be altered to effectively accommodate some of these practices. Using a secrets manager can make this process smooth and straightforward. Without properly managing the secrets lifecycle, attack surfaces for hackers increase dramatically.
Implementing better secrets lifecycle practices helps mitigate the attack surface while creating new secrets, but what about secrets already in use? Secret scanning services search through code repositories to identify secrets located in vulnerable locations. They probe the platform the way a hacker might and help your team clean up vulnerabilities before the wrong people find them.
Neglecting secret scanning hamstrings a platform’s ability to identify vulnerabilities in their secret storage. It’s important to regularly scan repositories for hard-coded secrets, even if security-oriented design is a part of the development process. A secrets manager that generates audit logs can make the retroactive monitoring of secret use and access easier.
Accidents are commonplace in fast-paced development environments, regardless of experience, training, or security software. Regular scans of repositories and of previous use help decrease attack surface and detect unknown vulnerabilities before they lead to breaches.
New vulnerabilities and attack vectors are developed every year, so the risk of data breaches remains high. Despite improvements in security technology, human error remains the foremost risk in cybersecurity. A secure development environment requires education at all levels of the development pipeline.
Development techniques: It‘s important that security and development teams communicate effectively to ensure they use best practices during the development process, such as avoiding hardcoding secrets, automating secret rotation, and adhering to the principle of least privilege.
Security education: Investing in the appropriate tools is a great way to improve your platform’s security posture, but these measures can only be as effective as those implementing them. Make sure to train the team effectively in the use of your security tools.
Safety beyond the workplace: Not all data breaches are caused by vulnerabilities within work environments - Phishing and other cyberattacks occurring outside of the normal workflow can also compromise systems. Educating developers on modern cyber threats can improve everyone’s individual security posture, resulting in more secure practices.
Maintaining a secure development environment requires attention at every step of the development process. These common mistakes - hardcoding secrets, over-provisioning access, ignoring lifecycle management, neglecting scanning, and underestimating the importance of developer education - all significantly increase the risk of costly data breaches.
Fostering a culture of education and vigilance among your development team is essential since even the most sophisticated security tools cannot compensate for human error. Using a secrets management solution like Doppler can help streamline these processes and ensure that your secrets remain safe and secure throughout development and deployment.
Check out our beginner series or try a free demo to see if Doppler is the right solution for your team!
Trusted by the world’s best DevOps and security teams. Doppler is the secrets manager developers love.