Loading SOVA...
Loading SOVA...
Catch misconfigurations before they reach production. SOVA scans your Terraform, CloudFormation, Kubernetes, Dockerfile, Ansible, and Helm templates for security issues and maps findings to CIS, PCI-DSS, SOC 2, HIPAA, and NIST compliance frameworks.
The Problem
One misconfigured S3 bucket. One overly permissive security group. One hardcoded secret in Terraform. Infrastructure-as-Code shifts deployment left — but also shifts risk left.
67%
Of IaC templates have misconfigurations
Palo Alto research found that 67% of IaC templates have at least one security misconfiguration. Your infrastructure is only as secure as the code that defines it.
49%
Of data breaches from misconfiguration
Nearly half of all cloud data breaches are caused by misconfigurations, not sophisticated attacks. The door was left open.
$5.3M
Average cloud breach cost
Cloud security breaches cost 13% more than the average breach (IBM). Most are preventable with proper IaC scanning.
Real-World Incident Analysis
criticalAttack Timeline
Mar 2019
discovery
WAF misconfiguration found
Attacker discovers SSRF vulnerability in WAF
Mar-Jul 2019
exploit
Data exfiltration
Attacker accesses S3 buckets via SSRF exploit
Jul 17, 2019
disclosure
Breach reported
Tipster reports findings on GitHub
Jul 19, 2019
impact
FBI arrests attacker
Paige Thompson arrested for unauthorized access
Aug 2019
patch
Public disclosure
Capital One discloses 100M+ records exposed
Mar 2019
WAF misconfiguration found
Attacker discovers SSRF vulnerability in WAF
Mar-Jul 2019
Data exfiltration
Attacker accesses S3 buckets via SSRF exploit
Jul 17, 2019
Breach reported
Tipster reports findings on GitHub
Jul 19, 2019
FBI arrests attacker
Paige Thompson arrested for unauthorized access
Aug 2019
Public disclosure
Capital One discloses 100M+ records exposed
Attack Flow
Attacker
SSRF via misconfigured WAF
EC2 Metadata
169.254.169.254 returns IAM credentials
IAM Role
Stolen credentials have S3 read access
S3 Buckets
100M+ customer records exfiltrated
Attacker
SSRF via misconfigured WAF
EC2 Metadata
169.254.169.254 returns IAM credentials
IAM Role
Stolen credentials have S3 read access
S3 Buckets
100M+ customer records exfiltrated
Vulnerable Code
1# MISCONFIGURED (no encryption, public access)2resource "aws_s3_bucket" "customer_data" {3bucket = "capitalone-customer-data"4acl = "public-read" # VULNERABLE!56# MISSING: Server-side encryption7# MISSING: Bucket policy8# MISSING: VPC endpoint restriction9}1011# SECURE Configuration12resource "aws_s3_bucket" "customer_data_secure" {13bucket = "capitalone-customer-data"1415server_side_encryption_configuration {16rule {17apply_server_side_encryption_by_default {18sse_algorithm = "aws:kms"19}20}21}22}
What Happened
The S3 bucket was publicly accessible with no encryption. A WAF misconfiguration allowed SSRF to the EC2 metadata endpoint, which returned IAM credentials with S3 access.
How SOVA Prevents This
SOVA catches IaC security issues before deployment.
IaC Scanning
IaCEngine scans Terraform files, detects acl = 'public-read' on S3
Rule Matching
Rule engine flags: CIS AWS 2.1.1 (S3 not publicly accessible)
Critical Finding
CRITICAL — Missing encryption + missing public access block
Auto-Remediation
Generates secure configuration with KMS encryption and public access block
IaC Scanning
IaCEngine scans Terraform files, detects acl = 'public-read' on S3
Rule Matching
Rule engine flags: CIS AWS 2.1.1 (S3 not publicly accessible)
Critical Finding
CRITICAL — Missing encryption + missing public access block
Auto-Remediation
Generates secure configuration with KMS encryption and public access block
How It Works
IaC Files
IaCEngine: Parse & Analyze
main.tf:14 — S3 bucket without encryption
Dockerfile:3 — Running as root
Rule Engine: 200+ Rules
Findings Dashboard
Remediation
Fix Suggestions + PR Comments
resource "aws_s3_bucket" "data" {
bucket = "company-data-lake"
acl = "public-read"
}S3 bucket publicly accessible
MyRDSInstance:
Type: AWS::RDS::DBInstance
Properties:
Engine: mysql
PubliclyAccessible: true
StorageEncrypted: falseDatabase exposed to internet
containers:
- name: app
image: myapp:latest
securityContext:
privileged: true
runAsUser: 0Container running as privileged
FROM ubuntu:latest RUN apt-get update && apt-get install -y curl COPY . /app USER root CMD ["python", "app.py"]
Container running as root
- hosts: webservers
become: yes
vars:
db_password: "SuperSecret123!"
tasks:
- name: Configure database
shell: "mysql -p{{ db_password }}"Credentials in playbook
service: type: LoadBalancer port: 8080 networkPolicy: enabled: false ingress: tls: []
Service exposed without restrictions
Real-time findings from SOVA's IaC analysis engine. Every misconfiguration is mapped to a severity level, file location, rule ID, and description with remediation guidance.
Industry-standard security configuration benchmarks. SOVA maps each IaC finding to specific CIS controls with remediation guidance. Covers compute, storage, networking, IAM, logging, and monitoring controls.
Payment card data security requirements. Validates that infrastructure configurations do not use default credentials, enforce strong authentication, and segment cardholder data environments.
Trust Services Criteria for security, availability, and confidentiality. Maps IaC configurations to logical access controls, system boundaries, encryption requirements, and change management processes.
Technical safeguards for electronic protected health information (ePHI). Validates encryption at rest and in transit, access controls, audit logging, and integrity verification for infrastructure handling PHI.
Security and privacy controls for federal information systems. Comprehensive mapping for access control (AC), audit and accountability (AU), configuration management (CM), and system and communications protection (SC).
Define custom security rules using a declarative YAML format. Specify resource types, attribute conditions, severity levels, framework mappings, and remediation guidance. SOVA evaluates every IaC resource against your custom rule set at scan time.
rule: no-public-s3 severity: critical resource: aws_s3_bucket condition: acl != "public-read" AND acl != "public-read-write" message: "S3 buckets must not be publicly accessible" frameworks: [CIS-AWS-2.1.5, PCI-DSS-1.3.1] remediation: | Remove the 'acl' argument or set it to 'private'. Enable S3 Block Public Access at the account level. tags: [storage, public-access, data-exposure]
Catch misconfigurations in Terraform, Kubernetes, and Dockerfiles before they reach production.