Skip to main content
Security skill for detecting insecure default configurations that create vulnerabilities when applications run with missing or incomplete configuration. Focuses on fail-open patterns where apps run insecurely rather than crash safely.

Overview

The insecure-defaults plugin identifies security vulnerabilities caused by dangerous default values that allow applications to run in production with weak or missing security controls. It distinguishes between fail-secure patterns (app crashes) and fail-open patterns (app runs insecurely).
Author: Trail of Bits
Version: 1.0.0
Critical Distinction: Applications that crash without proper configuration are safe (fail-secure). Applications that run with insecure defaults are vulnerable (fail-open).

Vulnerability Categories

The plugin detects five categories of insecure defaults:

Hardcoded Fallback Secrets

JWT keys, API keys, session secrets with fallback values

Default Credentials

admin/admin, root/password, test API keys

Weak Cryptographic Defaults

MD5, DES, ECB mode for security-sensitive operations

Permissive Access Control

CORS *, public by default, world-writable permissions

Missing Security Configuration

Authentication disabled by default, debug mode enabled

When to Use

Use this skill when:
  • Security auditing production applications or services
  • Configuration review of deployment manifests (Docker, Kubernetes, IaC)
  • Pre-production checks before deploying new services
  • Code review of authentication, authorization, or cryptographic code
  • Environment variable handling analysis for secrets management
  • API security review checking CORS, rate limiting, authentication
  • Third-party integration review for hardcoded test credentials

When NOT to Use

Do not use this skill for:
  • Test fixtures explicitly scoped to test environments (test/, spec/, __tests__/)
  • Example/template files (.example, .template, .sample suffixes)
  • Development-only tools (local Docker Compose for dev, debug scripts)
  • Documentation examples in README.md or docs/ directories
  • Build-time configuration that gets replaced during deployment
  • Crash-on-missing behavior where app won’t start without proper config (fail-secure)
When in doubt: trace the code path to determine if the app runs with the default or crashes.

Installation

Workflow

Follow this workflow for every potential finding:
1

SEARCH: Project Discovery

Determine language, framework, and project conventions. Find secret storage locations, credentialed integrations, cryptography usage, and security configuration.
2

VERIFY: Actual Behavior

Trace code paths to understand runtime behavior. Determine what happens if configuration is missing.
3

CONFIRM: Production Impact

Check if production config provides the variable or if the insecure default reaches production.
4

REPORT: With Evidence

Document location, pattern, verification results, production impact, and exploitation scenario.

Category 1: Fallback Secrets

Vulnerable Patterns

Why vulnerable: App runs with known secret if env var is missing. Attacker can forge tokens/access database.

Secure Patterns

Category 2: Default Credentials

Vulnerable Patterns

Why vulnerable: Default admin accounts or test credentials reach production if env vars missing.

Secure Patterns

Disabled default account

Category 3: Fail-Open Security

Vulnerable Patterns

Why vulnerable: Default is insecure. App runs without authentication, accepts requests from any origin, or leaks stack traces if env var missing.

Secure Patterns

Category 4: Weak Crypto

Vulnerable Patterns

Why vulnerable:
  • MD5 is cryptographically broken, rainbow tables exist
  • DES has 56-bit keys (brute-forceable), ECB mode leaks patterns
  • SHA1 collisions exist
Use bcrypt/Argon2 for passwords, AES-GCM for encryption, SHA256+ for signatures.

Secure Patterns

Weak crypto for non-security checksums (cache keys, ETags) is acceptable.

Category 5: Permissive Access

Vulnerable Patterns

Why vulnerable:
  • Any user can write to file (should be 0o600 or 0o644)
  • Sensitive data exposed publicly
  • CORS misconfiguration allows credential theft from any site

Search Patterns

Use these grep patterns to discover insecure defaults:

Rationalizations to Reject

Reject these shortcuts that lead to missed findings:

Report Format

For each finding, document: