Back to skill

Security audit

Dcc Docker Container Control

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed Docker deployment helper, but it gives an agent root-level control over a remote Docker server and can install a persistent controller automatically.

Install only if you intentionally want this skill to control a specific Docker host. Confirm the server and app names before use, review the bundled controller, and prefer a restricted sudoers rule or service account so the agent cannot perform broader root operations than these deployment commands require.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (6)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
96% confidence
Finding

The skill invokes shell, environment resolution, file reads, SSH, and privileged remote operations, but it does not declare any explicit tool scope or permission boundaries. That omission increases the chance an agent will execute sensitive actions more broadly than intended, especially because the skill directs immediate deployment and possible installation of a controller on a remote host.

Content

No source excerpt is available for this finding.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
92% confidence
Finding

This instruction causes the agent to execute a root-privileged deployment command on a remote Docker server. In context, the app name comes from user input and the action performs code fetch, build, and container restart, so a mistaken target, compromised repository, or unsafe command construction in the controller could lead to full server compromise or service disruption.

Content

Scanner excerpt · SKILL.md (reported line 23)May include surrounding context.

run this on the known Docker server:

text
sudo /opt/docker-container-control deploy website_app

Do the work immediately. The controller finds the app under /opt, fast-forward pulls its latest Git commit, pulls images, builds, starts/restarts the Compose deployment, waits for it to become running/healthy, and prints final status.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
95% confidence
Finding

The skill instructs the agent to install a controller onto the remote server as a root-owned executable in /opt and then invoke it with sudo. Even with local py_compile, this is effectively remote privileged code deployment, which can persistently change server behavior and becomes especially risky if the bundled controller or transfer path is tampered with.

Content

Scanner excerpt · SKILL.md (reported line 52)May include surrounding context.

md
2. Validate it locally with `python3 -m py_compile <controller>`.
3. Copy it to a temporary path on the Docker server.
4. Install it as root-owned mode `755` at `/opt/docker-container-control`.
5. Verify with `sudo /opt/docker-container-control list`.
6. Continue the user's requested DCC action without making them repeat it.

If an existing remote controller differs from the bundled version, do not silently overwrite it. Report the difference and ask before replacing it.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
91% confidence
Finding

Directly mapping user-requested actions to a sudo-executed controller command creates a privileged command interface exposed through the skill. Although the skill says to use exact names, this still concentrates risk because any parsing flaw, ambiguous target resolution, or controller bug could turn a normal request into root-level impact on production containers.

Content

Scanner excerpt · SKILL.md (reported line 69)May include surrounding context.

Map them directly to:

text
sudo /opt/docker-container-control <action> [app]

Deployment names can be the app folder name, Compose project name, or running container name. Use exact names. If no deployment matches or more than one matches, show the detected names and ask the user to choose.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · docker-container-control.txt (reported line 14)May include surrounding context.

text
def usage(exit_code=2):
    print(
        'Usage: sudo /opt/docker-container-control <list|status|restart|recreate|deploy|dry-run> [name]\n\n'
        'Names are discovered from Docker compose labels and compose files under /opt.\n'
        'Use the folder-style name, compose project name, or running container name.\n\n'
        '  list              Show detected deployments.\n'

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
90% confidence
Finding

The script enforces execution as root and then performs high-impact operations based on data discovered from Docker labels, compose files under /opt, and git repositories. In this skill context, that is dangerous because it creates a privileged deployment control plane: if an attacker can influence discovered compose definitions, git remotes, or container metadata, the operator can be induced to run attacker-controlled build/deploy actions as root on the Docker host.

Content

Scanner excerpt · docker-container-control.txt (reported line 274)May include surrounding context.

text
def main():
    if os.geteuid() != 0:
        print('ERROR: run this script with sudo', file=sys.stderr)
        raise SystemExit(2)
    action = sys.argv[1] if len(sys.argv) > 1 else 'list'
    if action == 'list':

Static analysis

No suspicious patterns detected.