Skip to main content

Security Misconfiguration

Prevent unsafe defaults, unnecessary features, exposed diagnostics, excessive authority, and configuration drift across environments.

Configuration is executable security behavior

Configuration selects listeners, routes, identities, permissions, features, parsers, credentials, logging, error behavior, network paths, and update channels. A secure component can become unsafe when a default, environment value, deployment manifest, or administrative change expands its authority or exposure.

Common failures include default credentials, public administrative interfaces, verbose diagnostics, sample applications, permissive cross-origin policy, broad cloud roles, unused protocols, weak TLS choices, directory listing, unsafe file permissions, and inconsistent environments.

Secure baseline and ownership

Define a versioned secure baseline for each deployment class. Disable unnecessary features and listeners. Require an explicit choice for dangerous compatibility behavior. Separate secret values from non-secret configuration and validate both at startup. Refuse an invalid or ambiguous security setting instead of silently choosing a permissive fallback.

Assign each setting one owner and source of truth. Review configuration changes like code. Use least-privilege deployment credentials, protected approval, and reproducible promotion. Keep development diagnostics out of production artifacts and paths.

Drift and verification

Compare intended, deployed, and observed state. A repository file does not prove the running service loaded it. Verify active listeners, routes, certificate state, headers, permissions, feature flags, identity bindings, and network reachability. Detect emergency and manual changes and either codify or remove them.

Test a clean installation and upgrade path. A secure new default does not fix an existing deployment that preserves an older value. Document breaking security changes and provide a measured migration.

Failure and residual risk

Hardening every setting can break recovery or required interoperability and cause operators to bypass the product. A scanner may compare static files while runtime flags or control-plane state differ. One safe environment does not prove another. A secret value can leak through process arguments, logs, generated support bundles, or state files.

Pomerium boundary

Pomerium provides configuration and secure behavior for its own services. Operators still own route inventory, policy, identity-provider settings, upstream reachability, certificates, secrets, telemetry, and deployment permissions. A Pomerium configuration cannot close a direct application listener or cloud path that the surrounding deployment leaves open.

Evaluation checklist

  • Is there a versioned secure baseline for each deployment class and environment?
  • Are unnecessary listeners, routes, features, sample content, and diagnostics disabled?
  • Does startup reject invalid security configuration instead of falling back?
  • Can the team prove the running state matches reviewed configuration?
  • Are manual and emergency changes detected, owned, and removed or codified?
  • Do install, upgrade, rollback, and recovery paths retain safe behavior?

Sources and further reading

Keep learning

Authorization and PolicySecurity Operations and Risk

Authorization Drift

Authorization drift is the gap that develops when effective access no longer matches intended access.

Learn this term
Security Operations and Risk

Attack Surface

An attack surface is the set of boundary points where an attacker can try to enter a system, cause an effect, or extract data.

Learn this term

Get a Personalized Demo

Schedule a Call with a Pomerium Engineer

Get a Demo