Thank you for your interest in contributing to the AWS Misconfiguration Database! This document provides guidelines and instructions for contributing.
- Code of Conduct
- How Can I Contribute?
- Adding New Misconfigurations
- Improving Existing Entries
- Submission Process
- Style Guidelines
- Validation
- Review Process
This project adheres to a code of conduct that all contributors are expected to follow. Please be respectful, inclusive, and professional in all interactions.
There are many ways to contribute to this project:
- Add new misconfiguration entries - Document new AWS misconfigurations
- Improve existing entries - Add details, references, or remediation steps
- Add detection methods - Provide AWS Config rules or CLI commands
- Add remediation examples - Contribute Terraform, CloudFormation, or script examples
- Fix typos or errors - Improve documentation and correct mistakes
- Suggest improvements - Open issues with suggestions for new features
- Review pull requests - Help review and test contributions from others
Before adding a new entry, search the existing database to ensure it doesn't already exist:
# Search by service
grep -r "your-search-term" data/by-service/
# Or check the unified file
cat data/all-misconfigs.json | jq '.misconfigurations[] | select(.scenario | contains("your-search-term"))'Create a new JSON entry following the schema. You can use this template:
{
"id": "generate-uuid-here",
"status": "open",
"service_name": "ec2",
"scenario": "Brief description of the misconfiguration",
"alert_criteria": "Specific conditions that indicate this misconfiguration exists",
"recommendation_action": "Clear, actionable recommendation for fixing the issue",
"risk_detail": "cost",
"build_priority": 0,
"action_value": 2,
"effort_level": 1,
"risk_value": 2,
"recommendation_description_detailed": "Detailed explanation of the issue, why it matters, and what happens if not fixed",
"category": "compute",
"output_notes": "",
"notes": "Additional context or special considerations",
"references": [
"https://docs.aws.amazon.com/relevant-documentation"
],
"metadata": {
"created_at": "2025-01-04T00:00:00Z",
"updated_at": "2025-01-04T00:00:00Z",
"contributors": ["your-github-username"],
"source": "Community Contribution"
},
"tags": ["tag1", "tag2"],
"detection_methods": [
{
"method": "AWS Config Rule",
"details": "required-tags"
}
],
"remediation_examples": [
{
"language": "aws-cli",
"code": "aws ec2 create-tags --resources i-1234567890abcdef0 --tags Key=Name,Value=MyInstance",
"description": "Add tags to an EC2 instance"
}
]
}Add your entry to the appropriate service file in data/by-service/:
- For EC2:
data/by-service/ec2.json - For S3:
data/by-service/s3.json - For Lambda:
data/by-service/lambda.json - etc.
If the service doesn't have a file yet, create one with this structure:
{
"service": "service-name",
"count": 1,
"misconfigurations": [
{
"your-entry-here": "..."
}
]
}Generate a UUID for your entry:
import uuid
print(str(uuid.uuid4()))Or use an online UUID generator: https://www.uuidgenerator.net/
- id: UUID v4 format
- service_name: AWS service name (lowercase, use hyphens for multi-word)
- scenario: Brief, clear description of the issue
- risk_detail: One or more of:
cost,security,operations,performance,reliability
-
status:
open- New entry, not yet validateddone- Validated and completeice- On hold, needs more informationpending- Being worked on
-
build_priority: 0 (highest) to 3 (lowest)
-
action_value: Estimated value/impact of fixing (1-3)
-
effort_level: Estimated effort to fix (1-3)
-
risk_value: Severity of risk if not fixed (0-3)
-
category:
compute- EC2, Lambda, ECS, etc.networking- VPC, Route53, CloudFront, etc.database- RDS, DynamoDB, etc.storage- S3, EBS, etc.security- IAM, KMS, etc.
Scenario should be:
- Brief (1-2 sentences)
- Specific about what's wrong
- Example: "EC2 instances running on previous generation instance types"
Alert Criteria should be:
- Measurable and specific
- Include thresholds where applicable
- Example: "CPU utilization < 5% for 4+ days in last 14 days"
Recommendation Action should be:
- Clear and actionable
- Start with a verb
- Example: "Upgrade to current generation instance types (t3, m5, c5, etc.)"
Detailed Description should:
- Explain why this matters
- Describe the impact
- Provide context
- Be comprehensive but concise
To improve an existing entry:
- Find the entry in the appropriate service file
- Make your changes
- Update the
updated_attimestamp - Add your username to
contributorsarray if not already there - Follow the submission process below
Common improvements:
- Adding missing references
- Adding detection methods
- Adding remediation examples
- Clarifying descriptions
- Fixing typos or errors
- Adding compliance mappings
gh repo fork aws-misconfig-db/aws-misconfig-db
cd aws-misconfig-dbgit checkout -b add-s3-misconfigurationEdit the appropriate JSON file(s) in data/by-service/.
# Validate the specific file you changed
python3 scripts/validate.py data/by-service/s3.json
# Or validate everything
python3 scripts/validate.py data/by-service/ --strictpython3 scripts/generate.pygit add data/by-service/s3.json
git add data/all-misconfigs.json
git add data/by-category/
git add data/summary-stats.json
git add docs/SUMMARY.md
git commit -m "Add S3 bucket versioning misconfiguration
- Added new entry for unversioned S3 buckets
- Includes detection method via AWS Config
- Added remediation example with CLI command"git push origin add-s3-misconfiguration
gh pr create --title "Add S3 bucket versioning misconfiguration" --body "Description of changes"- Use 2-space indentation
- Keep arrays on single line if < 3 items
- Multi-line for longer content
- No trailing commas
- Ensure valid JSON
- Use clear, professional language
- Be concise but thorough
- Use active voice
- Avoid jargon when possible
- Include examples when helpful
- Prefer official AWS documentation
- Include blog posts or articles from reputable sources
- Ensure links are HTTPS
- Check that links are still valid
All submissions must pass validation before being merged:
python3 scripts/validate.py data/by-service/ --strictThe validation checks:
- Required fields are present
- Field types are correct
- Enum values are valid
- UUID format is correct
- Reference URLs are properly formatted
- Automated Checks: GitHub Actions will run validation on your PR
- Community Review: Other contributors may review and comment
- Maintainer Review: A maintainer will do a final review
- Feedback: You may be asked to make changes
- Merge: Once approved, your PR will be merged
Typical review time: 2-7 days
- Questions: Open a Discussion
- Bugs: Open an Issue
- Ideas: Open an Issue with the "enhancement" label
Contributors will be:
- Listed in the entry's
contributorsfield - Added to the CONTRIBUTORS.md file
- Acknowledged in release notes
Thank you for contributing to make AWS infrastructure more secure, cost-effective, and reliable!