mcp-server-semgrep
Version:
MCP Server for Semgrep Integration - static code analysis with AI
175 lines (174 loc) • 4.68 kB
YAML
rules:
- id: no-iam-creds-exposure
patterns:
- pattern-either:
- patterns:
- pattern-inside: |
resource $TYPE "..." {
...
policy = jsonencode({
...
Statement = [
...
]
...
})
...
}
- pattern-not-inside: |
resource $TYPE "..." {
...
policy = jsonencode({
...
Statement = [
...,
{... Effect = "Deny" ...},
...
]
...
})
...
}
- pattern: |
Action = $ACTION
- metavariable-pattern:
metavariable: $TYPE
pattern-either:
- pattern: |
"aws_iam_role_policy"
- pattern: |
"aws_iam_policy"
- pattern: |
"aws_iam_user_policy"
- pattern: |
"aws_iam_group_policy"
- patterns:
- pattern-inside: |
data aws_iam_policy_document "..." {
...
statement {
...
}
...
}
- pattern-not-inside: |
data aws_iam_policy_document "..." {
...
statement {
...
effect = "Deny"
...
}
...
}
- pattern: |
actions = [..., $ACTION, ...]
- metavariable-pattern:
metavariable: $ACTION
pattern-either:
- pattern: |
"chime:CreateApiKey"
- pattern: |
"codepipeline:PollForJobs"
- pattern: |
"cognito-identity:GetOpenIdToken"
- pattern: |
"cognito-identity:GetOpenIdTokenForDeveloperEdentity"
- pattern: |
"cognito-identity:GetCredentialsForIdentity"
- pattern: |
"connect:GetFederationToken"
- pattern: |
"connect:GetFederationTokens"
- pattern: |
"ec2:GetPasswordData"
- pattern: |
"ecr:GetAuthorizationToken"
- pattern: |
"gamelift:RequestUploadCredentials"
- pattern: |
"iam:CreateAccessKey"
- pattern: |
"iam:CreateLoginProfile"
- pattern: |
"iam:CreateServiceSpecificCredential"
- pattern: |
"iam:ResetServiceSpecificCredential"
- pattern: |
"iam:UpdateAccessKey"
- pattern: |
"lightsail:GetInstanceAccessDetails"
- pattern: |
"lightsail:GetRelationalDatabaseMasterUserPassword"
- pattern: |
"rds-db:Connect"
- pattern: |
"redshift:GetClusterCredentials"
- pattern: |
"sso:GetRoleCredentials"
- pattern: |
"mediapackage:RotateChannelCredentials"
- pattern: |
"mediapackage:RotateIngestEndpointCredentials"
- pattern: |
"sts:AssumeRole"
- pattern: |
"sts:AssumeRoleWithSaml"
- pattern: |
"sts:AssumeRoleWithWebIdentity"
- pattern: |
"sts:GetFederationToken"
- pattern: |
"sts:GetSessionToken"
- pattern: |
"ec2:*"
- pattern: |
"codepipeline:*"
- pattern: |
"rds-db:*"
- pattern: |
"connect:*"
- pattern: |
"iam:*"
- pattern: |
"ecr:*"
- pattern: |
"sts:*"
- pattern: |
"chime:*"
- pattern: |
"mediapackage:*"
- pattern: |
"redshift:*"
- pattern: |
"gamelift:*"
- pattern: |
"cognito-identity:*"
- pattern: |
"lightsail:*"
- pattern: |
"sso:*"
message: >-
Ensure IAM policies don't allow credentials exposure. Credentials exposure actions return credentials
as part of the API response, and can possibly lead to leaking important credentials. Instead,
use another action that doesn't return sensitive data as part of the API response.
metadata:
references:
- https://cloudsplaining.readthedocs.io/en/latest/glossary/credentials-exposure/
- https://github.com/bridgecrewio/checkov/blob/ca830e14745c2c8e1b941985f305abe985d7f1f9/checkov/terraform/checks/data/aws/IAMCredentialsExposure.py
category: security
cwe:
- 'CWE-200: Exposure of Sensitive Information to an Unauthorized Actor'
technology:
- terraform
- aws
owasp:
- A01:2021 - Broken Access Control
cwe2021-top25: true
subcategory:
- audit
likelihood: LOW
impact: LOW
confidence: LOW
languages: [hcl]
severity: WARNING