Files
opencode-filter/filter.config.json
T
2026-04-10 21:57:22 -07:00

191 lines
6.2 KiB
JSON

{
"enabled": true,
"mode": "fail-closed",
"entropyThreshold": 4.5,
"minSecretLength": 16,
"maxSecretsPerSession": 1000,
"patterns": [
{
"name": "aws_access_key_id",
"pattern": "AKIA[0-9A-Z]{16}",
"flags": "",
"category": "credential",
"description": "AWS Access Key ID starting with AKIA",
"severity": "critical",
"example": "AKIAIOSFODNN7EXAMPLE"
},
{
"name": "aws_secret_access_key",
"pattern": "[0-9a-zA-Z/+]{40}",
"flags": "",
"category": "credential",
"description": "AWS Secret Access Key (40-character base64-like string)",
"severity": "critical",
"example": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
},
{
"name": "azure_subscription_key",
"pattern": "[a-f0-9]{32}",
"flags": "",
"category": "credential",
"description": "Azure Subscription Key (32-character hex string)",
"severity": "high",
"example": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6"
},
{
"name": "gcp_api_key",
"pattern": "AIza[0-9A-Za-z_-]{35}",
"flags": "",
"category": "api_key",
"description": "Google Cloud Platform API Key starting with AIza",
"severity": "high",
"example": "AIzaSyDdI0hCZtE6vySjMm-WEfRq3CPzqKqqsHI"
},
{
"name": "gcp_oauth_token",
"pattern": "ya29\\.[0-9A-Za-z_-]+",
"flags": "",
"category": "token",
"description": "Google OAuth 2.0 Access Token starting with ya29",
"severity": "critical",
"example": "ya29.a0Aa4b16C3D4e5F6g7H8i9J0k1L2m3N4o5P6q7R8s9T0"
},
{
"name": "github_personal_token",
"pattern": "ghp_[a-zA-Z0-9]{36}",
"flags": "",
"category": "token",
"description": "GitHub Personal Access Token starting with ghp_",
"severity": "critical",
"example": "ghp_aBcDeFgHiJkLmNoPqRsTuVwXyZ1234567890"
},
{
"name": "gitlab_personal_token",
"pattern": "glpat-[a-zA-Z0-9\\-]{20}",
"flags": "",
"category": "token",
"description": "GitLab Personal Access Token starting with glpat-",
"severity": "critical",
"example": "glpat-abcdefghij12345678"
},
{
"name": "bitbucket_app_password",
"pattern": "[a-zA-Z0-9]{32}@[a-zA-Z0-9_-]+",
"flags": "",
"category": "password",
"description": "Bitbucket App Password with username suffix",
"severity": "high",
"example": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6@username"
},
{
"name": "slack_bot_token",
"pattern": "xoxb-[0-9]{10,13}-[0-9]{10,13}-[a-zA-Z0-9]{24}",
"flags": "",
"category": "token",
"description": "Slack Bot Token starting with xoxb-",
"severity": "critical",
"example": "xoxb-1234567890123-1234567890123-AbCdEfGhIjKlMnOpQrStUvWx"
},
{
"name": "slack_user_token",
"pattern": "xoxp-[0-9]{10,13}-[0-9]{10,13}-[a-zA-Z0-9]{24}",
"flags": "",
"category": "token",
"description": "Slack User Token starting with xoxp-",
"severity": "critical",
"example": "xoxp-1234567890123-1234567890123-AbCdEfGhIjKlMnOpQrStUvWx"
},
{
"name": "stripe_live_key",
"pattern": "sk_live_[a-zA-Z0-9]{24,}",
"flags": "",
"category": "api_key",
"description": "Stripe Live Secret Key starting with sk_live_",
"severity": "critical",
"example": "sk_live_abcdefghijklmnopqrstuvwxyz123456"
},
{
"name": "stripe_test_key",
"pattern": "sk_test_[a-zA-Z0-9]{24,}",
"flags": "",
"category": "api_key",
"description": "Stripe Test Secret Key starting with sk_test_",
"severity": "high",
"example": "sk_test_abcdefghijklmnopqrstuvwxyz123456"
},
{
"name": "jwt_token",
"pattern": "eyJ[a-zA-Z0-9_-]*\\.eyJ[a-zA-Z0-9_-]*\\.[a-zA-Z0-9_-]*",
"flags": "",
"category": "token",
"description": "JSON Web Token (JWT) in standard format",
"severity": "high",
"example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.dozjgNryP4J3jVmNHl0w5N_XgL0n3I9PlFUP0THgR8o"
},
{
"name": "bearer_token",
"pattern": "Bearer\\s+[a-zA-Z0-9_\\-\\.=]+",
"flags": "",
"category": "token",
"description": "Bearer token in Authorization header",
"severity": "high",
"example": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"
},
{
"name": "oauth_access_token",
"pattern": "[a-zA-Z0-9_-]{20,}",
"flags": "",
"category": "token",
"description": "OAuth 2.0 Access Token (20+ alphanumeric characters)",
"severity": "high",
"example": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0"
},
{
"name": "basic_auth",
"pattern": "Basic\\s+[a-zA-Z0-9+/=]+",
"flags": "",
"category": "credential",
"description": "Basic Authentication header with base64 credentials",
"severity": "critical",
"example": "Basic dXNlcjpwYXNzd29yZA=="
},
{
"name": "generic_api_key",
"pattern": "(api[_-]?key|apikey)\\s*[:=]\\s*[a-zA-Z0-9_\\-]{16,}",
"flags": "i",
"category": "api_key",
"description": "Generic API key pattern (api_key, api-key, apikey followed by value)",
"severity": "medium",
"example": "api_key: a1b2c3d4e5f6g7h8i9j0k1l2"
},
{
"name": "private_key",
"pattern": "-----BEGIN\\s+(RSA\\s+)?PRIVATE\\s+KEY-----",
"flags": "",
"category": "private_key",
"description": "Private key in PEM format (RSA or generic)",
"severity": "critical",
"example": "-----BEGIN RSA PRIVATE KEY-----"
},
{
"name": "database_connection_string",
"pattern": "(postgres|mysql|mongodb|redis)://[^:]+:[^@]+@[^/]+/[^\\s]+",
"flags": "",
"category": "connection_string",
"description": "Database connection string with embedded credentials",
"severity": "critical",
"example": "postgres://user:password@localhost:5432/database"
},
{
"name": "password_in_code",
"pattern": "(password|passwd|pwd)\\s*[:=]\\s*[\"']?[^\"'\\s]{8,}[\"']?",
"flags": "i",
"category": "password",
"description": "Password assignment in code (password = value)",
"severity": "high",
"example": "password = 'secret123456'"
}
],
"customPatterns": []
}