Security misconfigurations have surged from #5 to #2 in OWASP's 2025 Top 10, and the data shows why this should concern every development team. Here's what changed and how to protect yourself.
Julian Morley
If you're in application security or DevOps, November 2025 brought an early holiday surprise—but not the kind you want. OWASP released their 2025 Top 10 list, and Security Misconfiguration jumped from position #5 all the way up to #2, beaten only by Broken Access Control. This isn't just numbers moving around on a list—it's backed by real data showing that misconfigurations are becoming the easiest way into modern systems.
Here's the thing: 3% of all tested applications had at least one misconfiguration vulnerability. That might sound small, but think about it—we're talking about production systems handling your data, processing payments, storing personal information. When you're running hundreds of services across cloud platforms, Kubernetes clusters, databases, and deployment pipelines, that 3% adds up fast.
The problem isn't that developers suddenly got lazy or careless. It's that building software has become ridiculously complex. Remember when an application just ran on one server? Now that same app might span multiple cloud providers, container platforms, serverless functions, and dozens of interconnected microservices. Each piece has its own configuration, and every configuration choice can create a security hole.
Think about what you're probably dealing with right now:
Each of these layers is another place where a wrong setting can create problems. An S3 bucket that's too open. A Kubernetes service account with admin access when it doesn't need it. A database sitting on the public internet with default passwords. A deployment pipeline that lets anyone push to production. These aren't made-up examples—this is happening right now.
OWASP looked at 2.8 million applications for this year's list—almost twice as many as 2021. Security Misconfiguration now covers 16 different types of weaknesses, from default passwords to badly protected config files.
The jump from #5 to #2 matches what people working in security have been seeing: configuration problems aren't rare mistakes anymore. They're built into how we work. OWASP put it well: "software engineering is continuing to increase the amount of an application's behavior that is based on configurations." And it's only getting worse.
Infrastructure as code was supposed to help with this. Define everything in version-controlled files, make it reproducible, make it auditable. And it does help—but we're also creating way more infrastructure than before. The amount of stuff we need to configure has exploded faster than our ability to keep it all secure.
Misconfigurations aren't just theoretical problems—they're how attackers actually get in. Research shows that about 80% of ransomware attacks involve misconfigurations somewhere along the way. Makes sense when you think about it: why hunt for complicated security flaws when you can just walk through a door someone left open?
Look at what's been happening:
Here's the frustrating part: in most of these cases, the actual code was fine. The developers followed best practices. The application logic was solid. But a configuration mistake created a path in that bypassed everything else.
When you look at security audits and assessments, you see the same problems over and over:
This is the big one. It shows up everywhere:
*) when they should be specificWhat makes this worse is how it happens. Someone needs to debug something, so they temporarily give themselves full access. They fix the problem, move on, and forget to lock things back down. Then that overly-permissive config ends up in production.
Management interfaces that should only be accessible internally end up exposed to everyone:
These tools are powerful and weren't built expecting to face constant attacks from the entire internet.
You'd think this would be solved by now, but it's still incredibly common:
Automated scanners hammer these defaults constantly. When they work, attackers get deep access immediately.
Web applications and APIs often ship without fundamental protections:
Each of these either gives attackers information or creates a direct way in.
Tools like Terraform, CloudFormation, and Pulumi were supposed to fix this. Make infrastructure reproducible, keep it in version control, treat it like code. And they do work for that—but they created new problems.
When you configured servers by hand, a mistake usually only affected that one server. Now? A mistake in a Terraform module can instantly create hundreds of misconfigured resources. The blast radius got way bigger.
Think about a Terraform module that creates S3 buckets. If that module has permissions set too loosely, every single bucket created with it inherits that problem. Multiply that across dozens of modules and multiple teams, and you see how quickly things scale.
The good news is that infrastructure as code also makes it easier to catch problems automatically. You can scan Terraform files, Kubernetes configs, and CloudFormation templates before they get applied—catching misconfigurations before they make it to production.
You need to check for misconfigurations at multiple stages—while you're writing code, when you're deploying, and after things are running.
Before configurations reach production, run them through automated checks. The tools for this have gotten a lot better:
CoGuard does something interesting here. Instead of just checking each config file by itself, they analyze how your configurations work together across your whole infrastructure—cloud settings, infrastructure code, containers, applications, everything.
For example: an S3 bucket policy might look fine on its own. But combine it with an overly permissive IAM role and a public subnet, and suddenly you have a security gap. CoGuard's contextual scanning can spot these cross-configuration problems that single-file scanners miss.
They're also using AI (funded by OpenAI's cybersecurity grant) to automatically create security policies for new technologies. This helps with a real problem: by the time traditional security scanners support new tools, those tools are already everywhere with possibly insecure defaults.
Security scanning needs to happen automatically as part of your build process, not as something separate you remember to do sometimes:
# Example GitHub Actions workflow
name: Security Scan
on: [push, pull_request]
jobs:
config-security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run configuration security scan
run: |
# Scan Terraform files
tfsec .
# Scan Kubernetes manifests
kubesec scan k8s/*.yaml
# Scan Dockerfiles
hadolint Dockerfile
Failing the build when you find security problems means misconfigurations get caught before production. But you need to balance this with keeping your team productive—overly aggressive policies that flag too many false positives will just get ignored or worked around.
Even with perfect pre-deployment scanning, configurations change over time. Someone makes a quick fix in the cloud console. An automation tool applies an update. A compromised account modifies settings.
Runtime monitoring catches this through:
Don't write every security check from scratch. Use established standards:
These represent what the security community agrees on for secure configurations, and they're updated regularly as new threats emerge.
If you're serious about fixing misconfiguration problems, you need a systematic approach, not just ad-hoc scanning:
Document what secure configuration actually looks like for your setup:
These standards need to be specific enough that you can test them and enforce them automatically.
Set up config security checks everywhere:
This prevents remediation paralysis where teams are overwhelmed by hundreds of low-priority findings and miss critical issues.
Measure your configuration security over time:
Use these numbers to spot systemic problems and see if your security controls are actually working.
Tools alone won't fix this. The human side matters just as much:
Developers and ops engineers need security training that's actually about configuration:
This needs to be practical and specific to what they're working with—not generic "here's what phishing is" training.
When a misconfiguration causes a problem, focus on learning, not punishment. Good post-mortems:
Blame culture makes people hide mistakes and not report issues. Learning culture makes security stronger.
Designate security champions within teams—people who are interested in security and can help their teammates. They:
Security Misconfiguration jumping to #2 on the OWASP Top 10 highlights a real tension: we're building increasingly complex systems with more and more configuration options, but we haven't figured out how to secure all those configs.
This isn't going away. If anything, it's getting worse as we adopt more cloud services, more container orchestration, more serverless functions, more microservices. The configuration surface just keeps expanding.
But there's also good news: this is an area where automation can really help. Unlike many security problems that require rewriting application logic, configuration security can be automated—both detection and sometimes even remediation. Tools like CoGuard that look at how configurations interact across your whole infrastructure represent real progress beyond simple file-by-file scanners.
The organizations that handle this well will be the ones that:
Misconfigurations moving to #2 isn't just a ranking change—it's acknowledging a fundamental challenge in how we build software now. We have the tools and knowledge to deal with it. The question is whether organizations will take it seriously enough, soon enough.
If you're running production infrastructure and haven't looked at your configurations recently, this is your sign. Those misconfigurations aren't just theoretical—they might be exactly how someone gets into your systems.
CoGuard. (2025). Misconfiguration causes 80% of all ransomware attacks. CoGuard. https://www.coguard.io/
OWASP Foundation. (2025). OWASP Top 10:2025. OWASP. https://owasp.org/Top10/2025/
OWASP Foundation. (2025). A02:2025 - Security Misconfiguration. OWASP Top 10. https://owasp.org/Top10/2025/A02_2025-Security_Misconfiguration/
SDET: The Unsung Heroes of Enterprise Software Quality
Why Software Development Engineers in Test represent the future of quality assurance, and why enterprises that don't invest in SDET talent are setting themselves up for failure.
TLS Protocol Versions: Understanding 1.0, 1.1, 1.2, and 1.3
A comprehensive guide to Transport Layer Security protocol versions, their differences, vulnerabilities, and migration strategies for enterprise environments.