Skip to content

Rule Reference

SEC337lintai-ai-securitystablejsonwarn

MCP config: Docker image not digest-pinned

MCP configuration launches Docker with an image reference that is not digest-pinned

Provider
lintai-ai-security
Surface
json
Scope
per_file
Tier
stable
Severity
warn
Confidence
high
Detection
structural
Remediation
message_only

Activation Model

Preset Membership

This rule is part of the builtin activation graph through these preset memberships.

Lifecycle

Stable Lifecycle Contract

State

stable_gated

Graduation rationale

Checks committed MCP config Docker launch paths for image references that are not pinned by digest, including tag-only refs such as :latest or :1.2.3.

Deterministic signal basis

JsonSignals docker run argument analysis over ArtifactKind::McpConfig objects, limited to command == docker plus args beginning with run.

Malicious corpus
mcp-docker-unpinned-image
Benign corpus
mcp-docker-digest-pinned-safe
structured evidence required remediation reviewed
Canonical note

Structural stable rule intended as a high-precision check with deterministic evidence.

Nearby Signals

Related Rules

Why It Matters

SEC337 flags MCP configuration that launches Docker with an image reference that is not digest-pinned.

Because this rule targets committed executable MCP config rather than markdown examples, it is a stronger operational signal than the markdown-only Docker guidance family. A hit means the committed server launch path still depends on mutable registry state.

What Triggers

SEC337 applies to MCP JSON config and triggers when:

  • the config launches Docker
  • the selected image token looks like a registry-distributed image
  • and the image is not pinned with @sha256:...

Example that triggers:

json
{"command":"docker","args":["run","ghcr.io/acme/mcp-server:1.2.3"]}

Example that stays clean:

json
{"command":"docker","args":["run","ghcr.io/acme/mcp-server@sha256:0123..."]}

False Positives

This is a strong structural config rule. The main boundary is that it only targets Docker-backed MCP launch paths and requires an actual non-digest image token.

Remediation

Pin the Docker image by digest or replace the launch path with another reproducible execution mechanism.