Prerequisites
Before using this skill, ensure:
- Configuration files accessible in {baseDir}/ (Terraform, CloudFormation, YAML, JSON)
- Infrastructure-as-code files (.tf, .yaml, .json, .template)
- Application configuration files (application.yml, config.json, .env.example)
- System configuration exports available
- Write permissions for findings report in {baseDir}/security-findings/
Instructions
1. Configuration Discovery Phase
Locate configuration files to analyze:
- Infrastructure-as-code: Terraform (.tf), CloudFormation (.yaml/.json), Ansible, Kubernetes
- Application configs: application.yml, config.json, web.config, .properties
- Cloud provider configs: AWS, GCP, Azure resource definitions
- Container configs: Dockerfile, docker-compose.yml, Kubernetes manifests
- Web server configs: nginx.conf, httpd.conf, .htaccess
2. IaC Misconfiguration Checks
Cloud Storage:
- S3 buckets with public read/write access
- Storage accounts without encryption
- Publicly accessible blob containers
- Missing versioning on data stores
Network Security:
- Security groups allowing 0.0.0.0/0 on sensitive ports (22, 3389, 3306, 5432)
- Network ACLs with overly permissive rules
- VPCs without flow logs enabled
- Missing network segmentation
Identity and Access:
- IAM policies with wildcard (*) permissions
- Service accounts with admin privileges
- Missing MFA enforcement
- Overly broad role assignments
- Hardcoded credentials in code
Compute Resources:
- EC2 instances with public IPs unnecessarily
- Unencrypted EBS volumes
- Missing instance metadata service v2
- Outdated AMIs/images
Database Security:
- RDS instances publicly accessible
- Databases without encryption at rest
- Missing automated backups
- Weak password policies
- Default ports exposed
3. Application Configuration Checks
Authentication/Authorization:
- Debug mode enabled in production
- Default credentials present
- Weak session timeout values
- Missing CSRF protection
- Insecure password policies
API Security:
- API keys in configuration files
- CORS configured with wildcard (*)
- Missing rate limiting
- Unencrypted API endpoints
- Disabled authentication
Data Protection:
- Sensitive data in plain text
- Missing encryption configuration
- Insecure cookie settings (no HttpOnly, Secure flags)
- Logging sensitive information
Dependencies:
- Outdated library versions with CVEs
- Unmaintained packages
- Unnecessary dependencies
4. System Configuration Checks
Operating System:
- Unnecessary services enabled
- Weak SSH configurations
- Missing security updates
- Insecure file permissions
- Disabled firewalls
Web Servers:
- Directory listing enabled
- Server tokens exposed
- Missing security headers
- Weak TLS configurations
- Default error pages revealing information
5. Severity Classification
Rate findings by severity:
- Critical: Immediate exploitation risk (public S3, hardcoded secrets)
- High: Significant security impact (weak auth, missing encryption)
- Medium: Configuration weaknesses (overly permissive, missing logs)
- Low: Best practice violations (information disclosure, outdated configs)
6. Generate Findings Report
Document all misconfigurations with:
- Severity and category
- Specific configuration issue
- Security impact explanation
- Remediation steps with code examples
- Compliance implications (CIS, NIST, PCI-DSS)
Output
The skill produces:
Primary Output: Security misconfigurations report saved to {baseDir}/security-findings/misconfig-YYYYMMDD.md
Report Structure:
# Security Misconfiguration Findings
Scan Date: 2024-01-15
Files Analyzed: 42
Findings: 15 (3 Critical, 5 High, 4 Medium, 3 Low)
## Critical Findings
### 1. Publicly Accessible S3 Bucket
**File**: {baseDir}/terraform/storage.tf
**Line**: 23
**Issue**: S3 bucket allows public read access
**Code**:
```hcl
resource "aws_s3_bucket" "data" {
acl = "public-read" # CRITICAL: Public access
}
Impact: Sensitive data exposed to internet
Remediation:
resource "aws_s3_bucket" "data" {
acl = "private"
public_access_block {
block_public_acls = true
block_public_policy = true
ignore_public_acls = true
restrict_public_buckets = true
}
}
Compliance: Violates CIS AWS 2.1.5, NIST AC-3
High Findings
2. Security Group Allows SSH from Anywhere
File: {baseDir}/terraform/network.tf
Line: 45
Issue: Port 22 open to 0.0.0.0/0
Impact: Brute force attack surface
Remediation: Restrict to specific IP ranges or use bastion host
[Additional findings follow similar structure]
Summary by Category
- IAM/Access Control: 4 findings
- Network Security: 6 findings
- Data Protection: 3 findings
- Logging/Monitoring: 2 findings
Compliance Impact
- CIS Benchmarks: 8 violations
- NIST 800-53: 5 controls affected
- PCI-DSS: 3 requirements unmet
**Secondary Outputs**:
- JSON for CI/CD integration: {baseDir}/security-findings/misconfig-YYYYMMDD.json
- CSV for spreadsheet tracking
- SARIF format for GitHub Security tab
## Error Handling
**Common Issues and Resolutions**:
1. **Unable to Parse Configuration File**
- Error: "Syntax error in {baseDir}/terraform/main.tf"
- Resolution: Validate file syntax first, report parse errors separately
- Fallback: Skip malformed files, note in report
2. **Missing Cloud Provider Context**
- Error: "Cannot determine cloud provider from configuration"
- Resolution: Look for provider blocks, file naming conventions
- Fallback: Apply generic security checks only
3. **Encrypted or Binary Configuration Files**
- Error: "Cannot read encrypted configuration"
- Resolution: Request decrypted version or configuration export
- Note: Document inability to audit in report
4. **Large Configuration Sets**
- Error: "Too many files to analyze ({baseDir}/ has 500+ configs)"
- Resolution: Prioritize by file type and location
- Strategy: Start with IaC, then app configs, then system configs
5. **False Positives**
- Error: "Flagged configuration is intentional (dev environment)"
- Resolution: Allow environment-specific exceptions
- Enhancement: Support ignore/exception rules file
## Resources
**Security Benchmarks**:
- CIS Benchmarks: https://www.cisecurity.org/cis-benchmarks/
- OWASP Configuration Guide: https://cheatsheetseries.owasp.org/cheatsheets/Infrastructure_as_Code_Security_Cheatsheet.html
- Cloud Security Alliance: https://cloudsecurityalliance.org/
**IaC Security Tools**:
- tfsec (Terraform): https://github.com/aquasecurity/tfsec
- Checkov (Multi-cloud): https://www.checkov.io/
- cfn-nag (CloudFormation): https://github.com/stelligent/cfn_nag
- kube-bench (Kubernetes): https://github.com/aquasecurity/kube-bench
**Configuration Best Practices**:
- AWS Security Best Practices: https://aws.amazon.com/architecture/security-identity-compliance/
- Azure Security Baseline: https://docs.microsoft.com/en-us/security/benchmark/azure/
- GCP Security Best Practices: https://cloud.google.com/security/best-practices
**Compliance Frameworks**:
- CIS Controls: https://www.cisecurity.org/controls/
- NIST 800-53: https://csrc.nist.gov/publications/detail/sp/800-53/rev-5/final
- PCI-DSS Requirements: https://www.pcisecuritystandards.org/
**Remediation Examples**:
- Terraform security modules: {baseDir}/templates/terraform-secure/
- CloudFormation secure templates: {baseDir}/templates/cfn-secure/
- Kubernetes security policies: {baseDir}/templates/k8s-policies/
1---2name: finding-security-misconfigurations3description: |4 Identify security misconfigurations in infrastructure-as-code, application settings, and system configurations.5 Use when you need to audit Terraform/CloudFormation templates, check application config files, validate system security settings, or ensure compliance with security best practices.6 Trigger with phrases like "find security misconfigurations", "audit infrastructure security", "check config security", or "scan for misconfigured settings".7allowed-tools:8- Read9- Write10- Edit11- Grep12- Glob13- Bash(config-scan:*, iac-check:*)14version: 1.0.015license: MIT16---1718## Prerequisites1920Before using this skill, ensure:21- Configuration files accessible in {baseDir}/ (Terraform, CloudFormation, YAML, JSON)22- Infrastructure-as-code files (.tf, .yaml, .json, .template)23- Application configuration files (application.yml, config.json, .env.example)24- System configuration exports available25- Write permissions for findings report in {baseDir}/security-findings/2627## Instructions2829### 1. Configuration Discovery Phase3031Locate configuration files to analyze:32- Infrastructure-as-code: Terraform (.tf), CloudFormation (.yaml/.json), Ansible, Kubernetes33- Application configs: application.yml, config.json, web.config, .properties34- Cloud provider configs: AWS, GCP, Azure resource definitions35- Container configs: Dockerfile, docker-compose.yml, Kubernetes manifests36- Web server configs: nginx.conf, httpd.conf, .htaccess3738### 2. IaC Misconfiguration Checks3940**Cloud Storage**:41- S3 buckets with public read/write access42- Storage accounts without encryption43- Publicly accessible blob containers44- Missing versioning on data stores4546**Network Security**:47- Security groups allowing 0.0.0.0/0 on sensitive ports (22, 3389, 3306, 5432)48- Network ACLs with overly permissive rules49- VPCs without flow logs enabled50- Missing network segmentation5152**Identity and Access**:53- IAM policies with wildcard (*) permissions54- Service accounts with admin privileges55- Missing MFA enforcement56- Overly broad role assignments57- Hardcoded credentials in code5859**Compute Resources**:60- EC2 instances with public IPs unnecessarily61- Unencrypted EBS volumes62- Missing instance metadata service v263- Outdated AMIs/images6465**Database Security**:66- RDS instances publicly accessible67- Databases without encryption at rest68- Missing automated backups69- Weak password policies70- Default ports exposed7172### 3. Application Configuration Checks7374**Authentication/Authorization**:75- Debug mode enabled in production76- Default credentials present77- Weak session timeout values78- Missing CSRF protection79- Insecure password policies8081**API Security**:82- API keys in configuration files83- CORS configured with wildcard (*)84- Missing rate limiting85- Unencrypted API endpoints86- Disabled authentication8788**Data Protection**:89- Sensitive data in plain text90- Missing encryption configuration91- Insecure cookie settings (no HttpOnly, Secure flags)92- Logging sensitive information9394**Dependencies**:95- Outdated library versions with CVEs96- Unmaintained packages97- Unnecessary dependencies9899### 4. System Configuration Checks100101**Operating System**:102- Unnecessary services enabled103- Weak SSH configurations104- Missing security updates105- Insecure file permissions106- Disabled firewalls107108**Web Servers**:109- Directory listing enabled110- Server tokens exposed111- Missing security headers112- Weak TLS configurations113- Default error pages revealing information114115### 5. Severity Classification116117Rate findings by severity:118- **Critical**: Immediate exploitation risk (public S3, hardcoded secrets)119- **High**: Significant security impact (weak auth, missing encryption)120- **Medium**: Configuration weaknesses (overly permissive, missing logs)121- **Low**: Best practice violations (information disclosure, outdated configs)122123### 6. Generate Findings Report124125Document all misconfigurations with:126- Severity and category127- Specific configuration issue128- Security impact explanation129- Remediation steps with code examples130- Compliance implications (CIS, NIST, PCI-DSS)131132## Output133134The skill produces:135136**Primary Output**: Security misconfigurations report saved to {baseDir}/security-findings/misconfig-YYYYMMDD.md137138**Report Structure**:139```140# Security Misconfiguration Findings141Scan Date: 2024-01-15142Files Analyzed: 42143Findings: 15 (3 Critical, 5 High, 4 Medium, 3 Low)144145## Critical Findings146147### 1. Publicly Accessible S3 Bucket148**File**: {baseDir}/terraform/storage.tf149**Line**: 23150**Issue**: S3 bucket allows public read access151**Code**:152```hcl153resource "aws_s3_bucket" "data" {154 acl = "public-read" # CRITICAL: Public access155}156```157**Impact**: Sensitive data exposed to internet158**Remediation**:159```hcl160resource "aws_s3_bucket" "data" {161 acl = "private"162163 public_access_block {164 block_public_acls = true165 block_public_policy = true166 ignore_public_acls = true167 restrict_public_buckets = true168 }169}170```171**Compliance**: Violates CIS AWS 2.1.5, NIST AC-3172173## High Findings174175### 2. Security Group Allows SSH from Anywhere176**File**: {baseDir}/terraform/network.tf177**Line**: 45178**Issue**: Port 22 open to 0.0.0.0/0179**Impact**: Brute force attack surface180**Remediation**: Restrict to specific IP ranges or use bastion host181182[Additional findings follow similar structure]183184## Summary by Category185- IAM/Access Control: 4 findings186- Network Security: 6 findings187- Data Protection: 3 findings188- Logging/Monitoring: 2 findings189190## Compliance Impact191- CIS Benchmarks: 8 violations192- NIST 800-53: 5 controls affected193- PCI-DSS: 3 requirements unmet194```195196**Secondary Outputs**:197- JSON for CI/CD integration: {baseDir}/security-findings/misconfig-YYYYMMDD.json198- CSV for spreadsheet tracking199- SARIF format for GitHub Security tab200201## Error Handling202203**Common Issues and Resolutions**:2042051. **Unable to Parse Configuration File**206 - Error: "Syntax error in {baseDir}/terraform/main.tf"207 - Resolution: Validate file syntax first, report parse errors separately208 - Fallback: Skip malformed files, note in report2092102. **Missing Cloud Provider Context**211 - Error: "Cannot determine cloud provider from configuration"212 - Resolution: Look for provider blocks, file naming conventions213 - Fallback: Apply generic security checks only2142153. **Encrypted or Binary Configuration Files**216 - Error: "Cannot read encrypted configuration"217 - Resolution: Request decrypted version or configuration export218 - Note: Document inability to audit in report2192204. **Large Configuration Sets**221 - Error: "Too many files to analyze ({baseDir}/ has 500+ configs)"222 - Resolution: Prioritize by file type and location223 - Strategy: Start with IaC, then app configs, then system configs2242255. **False Positives**226 - Error: "Flagged configuration is intentional (dev environment)"227 - Resolution: Allow environment-specific exceptions228 - Enhancement: Support ignore/exception rules file229230## Resources231232**Security Benchmarks**:233- CIS Benchmarks: https://www.cisecurity.org/cis-benchmarks/234- OWASP Configuration Guide: https://cheatsheetseries.owasp.org/cheatsheets/Infrastructure_as_Code_Security_Cheatsheet.html235- Cloud Security Alliance: https://cloudsecurityalliance.org/236237**IaC Security Tools**:238- tfsec (Terraform): https://github.com/aquasecurity/tfsec239- Checkov (Multi-cloud): https://www.checkov.io/240- cfn-nag (CloudFormation): https://github.com/stelligent/cfn_nag241- kube-bench (Kubernetes): https://github.com/aquasecurity/kube-bench242243**Configuration Best Practices**:244- AWS Security Best Practices: https://aws.amazon.com/architecture/security-identity-compliance/245- Azure Security Baseline: https://docs.microsoft.com/en-us/security/benchmark/azure/246- GCP Security Best Practices: https://cloud.google.com/security/best-practices247248**Compliance Frameworks**:249- CIS Controls: https://www.cisecurity.org/controls/250- NIST 800-53: https://csrc.nist.gov/publications/detail/sp/800-53/rev-5/final251- PCI-DSS Requirements: https://www.pcisecuritystandards.org/252253**Remediation Examples**:254- Terraform security modules: {baseDir}/templates/terraform-secure/255- CloudFormation secure templates: {baseDir}/templates/cfn-secure/256- Kubernetes security policies: {baseDir}/templates/k8s-policies/