Back to skill

Security audit

Hardened execution guardrails — because production only gets one chance.

Security checks for vulnerabilities and agentic risk

Overview

ProdShield is an instruction-only defensive guardrail, and the alarming scanner matches are mostly examples of unsafe actions it tells the agent to block.

Use this skill as a conservative production-safety checklist. Expect it to interrupt risky commands for environment checks, dry-runs, confirmations, and credential scans. Before following its optional scanner setup examples, pin tool versions or container digests, review packages first, mount repositories read-only where possible, and only install pre-commit hooks with explicit user approval.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (1)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:890
Finding

Unpinned Third-Party Security Tools and Mutable Container Image

Content
View full analysis
Remediation
View remediation
--hash=sha256: trufflehog== --hash=sha256: pre-commit== --hash=sha256: ``` 2. Store these constraints in a dedicated requirements file and install with hash enforcement: ```bash python -m venv .security-tools-venv . .security-tools-venv/bin/activate python -m pip install --require-hashes -r security-tools-requirements.txt ``` 3. Replace the mutable container tag with a verified immutable digest and mount the repository read-only: ```bash docker run --rm \ --network none \ -v "$(pwd):/repo:ro" \ zricethezav/gitleaks@sha256: \ detect --source /repo ``` 4. Verify package provenance, release signatures, hashes, maintainers, and source repositories before installation. 5. Run scanners in an isolated environment without cloud credentials, SSH agents, secret-bearing environment variables, or unnecessary network access. 6. Pin every pre-commit hook revision to a reviewed immutable commit SHA rather than a mutable tag. Review the generated hook configuration before running `pre-commit install`. 7. Separate tool installation from routine scanning. Installation or upgrades should require explicit approval and review, while routine scans should reuse already verified artifacts. 8. Update both `SKILL.md` and `references/git-credential-safety.md` so all examples consistently follow the skill's stated dependency-pinning policy. ]]>
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Rogue AgentSelf-Modification, Session Persistence
Findings (114)

YARA rule 'agent_skill_prompt_injection_hidden_instructions': Prompt injection or hidden instructions embedded in AI agent skill text [agent_skills]

High
Category
YARA Match
Confidence
80% confidence
Finding

YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).

Content

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

md
�️","homepage":"https://clawhub.ai","userInvocable":true}}
---

# ProdShield — Hardened Execution Guardrails

> *"Because production only gets one chance."*

ProdShield governs how Claude executes actions against real systems. Its primary mission is to
**prevent any accidental destruction of production environments, data, or business-critical
resources** while still being a powerful execution assistant. Version 1.1.0 adds a full
malicious code and supply chain security layer.

---

## Compatibility

| Property | Value |
|---|---|
| **OpenClaw versions** | All (no minimum version required) |
| **Platforms** | macOS · Linux · Windows |
| **Models** | All (Anthropic, OpenAI, local — no model-specific features) |
| **Dependencies** | None — instruction-only, zero external binaries required |
| **Agent modes** | Single-agent · Multi-agent · Sandboxed · Elevated |
| **Channels** | All (WhatsApp, Telegram, Discord, Slack, iMessage, etc.) |

> This is a pure-instruction skill —

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
85% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

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

md
| Drop a database or schema | `DROP DATABASE`, `DROP SCHEMA`, `mongodrop` |
| Truncate a table | `TRUNCATE TABLE`, `.deleteMany({})` without filter on prod |
| Mass-delete records | `DELETE FROM table` without a `WHERE` clause |
| Wipe object storage | `aws s3 rm --recursive s3://prod-*`, `gsutil rm -r gs://prod-*` |
| Terminate a cluster | Kubernetes cluster delete, ECS service destroy, RDS instance delete |
| Remove IAM roles / permissions in prod | Deleting prod access policies |
| Run `rm -rf` on non-temp paths | Any path not under `/tmp`, `/var/tmp`, or clearly throwaway |

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
70% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

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

md
| Terminate a cluster | Kubernetes cluster delete, ECS service destroy, RDS instance delete |
| Remove IAM roles / permissions in prod | Deleting prod access policies |
| Run `rm -rf` on non-temp paths | Any path not under `/tmp`, `/var/tmp`, or clearly throwaway |
| Force-push to main/master/release | `git push --force origin main` |
| Rotate/delete production secrets | Deleting keys, tokens, certificates in prod secret stores |
| Execute `curl \| bash` or `wget \| sh` | Piping remote scripts directly to a shell |
| Install packages with `--ignore-scripts` omitted from untrusted sources | Supply chain risk |

YARA rule 'agent_skill_destructive_autonomous_actions': Autonomous destructive filesystem, shell history, or repository actions in AI agent skills [agent_skills]

High
Category
YARA Match
Confidence
75% confidence
Finding

YARA rule matched a known malware signature (reverse shell, backdoor, ransomware, C2 framework, or info stealer).

Content

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

md
se |
| Wipe object storage | `aws s3 rm --recursive s3://prod-*`, `gsutil rm -r gs://prod-*` |
| Terminate a cluster | Kubernetes cluster delete, ECS service destroy, RDS instance delete |
| Remove IAM roles / permissions in prod | Deleting prod access policies |
| Run `rm -rf` on non-temp paths | Any path not under `/tmp`, `/var/tmp`, or clearly throwaway |
| Force-push to main/master/release | `git push --force origin main` |
| Rotate/delete production secrets | Deleting keys, tokens, certificates in prod secret stores |
| Execute `curl \| bash` or `wget \| sh` | Piping remote scripts directly to a shell |
| Install packages with `--ignore-scripts` omitted from untrusted sources | Supply chain risk |

---

## 4. Destructive Operation Protocols

### 4.1 Any Destructive Operation — Required Steps

1. **PAUSE** — Do not execute immediately.
2. **ANNOUNCE** — Tell the user exactly what will be deleted/destroyed, with full resource names.
3. **WARN** — State explicitly if the acti

External Script Fetching

High
Category
Supply Chain
Confidence
90% confidence
Finding

Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

Content

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

md
| Run `rm -rf` on non-temp paths | Any path not under `/tmp`, `/var/tmp`, or clearly throwaway |
| Force-push to main/master/release | `git push --force origin main` |
| Rotate/delete production secrets | Deleting keys, tokens, certificates in prod secret stores |
| Execute `curl \| bash` or `wget \| sh` | Piping remote scripts directly to a shell |
| Install packages with `--ignore-scripts` omitted from untrusted sources | Supply chain risk |

---

External Script Fetching

High
Category
Supply Chain
Confidence
90% confidence
Finding

Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

Content

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

md
| Run `rm -rf` on non-temp paths | Any path not under `/tmp`, `/var/tmp`, or clearly throwaway |
| Force-push to main/master/release | `git push --force origin main` |
| Rotate/delete production secrets | Deleting keys, tokens, certificates in prod secret stores |
| Execute `curl \| bash` or `wget \| sh` | Piping remote scripts directly to a shell |
| Install packages with `--ignore-scripts` omitted from untrusted sources | Supply chain risk |

---

External Script Fetching

High
Category
Supply Chain
Confidence
90% confidence
Finding

Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

Content

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

md
| Run `rm -rf` on non-temp paths | Any path not under `/tmp`, `/var/tmp`, or clearly throwaway |
| Force-push to main/master/release | `git push --force origin main` |
| Rotate/delete production secrets | Deleting keys, tokens, certificates in prod secret stores |
| Execute `curl \| bash` or `wget \| sh` | Piping remote scripts directly to a shell |
| Install packages with `--ignore-scripts` omitted from untrusted sources | Supply chain risk |

---

External Script Fetching

High
Category
Supply Chain
Confidence
90% confidence
Finding

Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

Content

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

md
| Run `rm -rf` on non-temp paths | Any path not under `/tmp`, `/var/tmp`, or clearly throwaway |
| Force-push to main/master/release | `git push --force origin main` |
| Rotate/delete production secrets | Deleting keys, tokens, certificates in prod secret stores |
| Execute `curl \| bash` or `wget \| sh` | Piping remote scripts directly to a shell |
| Install packages with `--ignore-scripts` omitted from untrusted sources | Supply chain risk |

---

Self-Modification

High
Category
Rogue Agent
Confidence
85% confidence
Finding

Skill modifies its own code, configuration, or behavior at runtime. Self-modification enables an agent to escalate privileges, disable safety constraints, or install persistent backdoors.

Content

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

text
SAFE:    Read, copy (to new location), create new files, edit with backup
CAUTION: Overwrite existing files — confirm first, keep backup
BLOCKED: rm -rf / Remove-Item -Recurse on any non-temp path without explicit approval
BLOCKED: Wiping directories that may contain production configs, logs, or data

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

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

text
SAFE:    Read, copy (to new location), create new files, edit with backup
CAUTION: Overwrite existing files — confirm first, keep backup
BLOCKED: rm -rf / Remove-Item -Recurse on any non-temp path without explicit approval
BLOCKED: Wiping directories that may contain production configs, logs, or data

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

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

text
SAFE:    Read, copy (to new location), create new files, edit with backup
CAUTION: Overwrite existing files — confirm first, keep backup
BLOCKED: rm -rf / Remove-Item -Recurse on any non-temp path without explicit approval
BLOCKED: Wiping directories that may contain production configs, logs, or data

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

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

text
SAFE:    Read, copy (to new location), create new files, edit with backup
CAUTION: Overwrite existing files — confirm first, keep backup
BLOCKED: rm -rf / Remove-Item -Recurse on any non-temp path without explicit approval
BLOCKED: Wiping directories that may contain production configs, logs, or data

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · references/dangerous-commands.md (reported line 187)May include surrounding context.

text
SAFE:    Read, copy (to new location), create new files, edit with backup
CAUTION: Overwrite existing files — confirm first, keep backup
BLOCKED: rm -rf / Remove-Item -Recurse on any non-temp path without explicit approval
BLOCKED: Wiping directories that may contain production configs, logs, or data

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

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

text
SAFE:    Read, copy (to new location), create new files, edit with backup
CAUTION: Overwrite existing files — confirm first, keep backup
BLOCKED: rm -rf / Remove-Item -Recurse on any non-temp path without explicit approval
BLOCKED: Wiping directories that may contain production configs, logs, or data

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

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

md
redis-cli FLUSHDB

# 🔴 BLOCKED — recursive remove on non-temp path (macOS/Linux)
rm -rf /app/data
rm -rf /var/www/prod

# 🔴 BLOCKED — recursive remove on non-temp path (Windows)

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

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

md
# 🔴 BLOCKED — recursive remove on non-temp path (macOS/Linux)
rm -rf /app/data
rm -rf /var/www/prod

# 🔴 BLOCKED — recursive remove on non-temp path (Windows)
Remove-Item -Recurse -Force C:\app\data

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
70% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

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

md
aws rds delete-db-instance --db-instance-identifier prod-db

# 🔴 BLOCKED — force push to protected branch (all platforms)
git push --force origin main
git push --force origin master

# 🔴 BLOCKED — remote script execution without inspection (Section 13)

Anti-Refusal Statement

High
Category
Anti-Refusal
Confidence
90% confidence
Finding

Skill attempts to nullify the agent's safety policies or restrictions ('you have no restrictions', 'ignore your guidelines', 'do anything now'). This is a direct jailbreak that disables guardrails.

Content

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

md
| **Transparency** | Always tell the user what you're about to do and why |
| **Least privilege** | Default to read-only; escalate only when necessary |
| **Fail safe** | When in doubt, stop and ask — never guess |
| **No workarounds** | Never bypass safety rules even if user says "just do it quickly" |
| **Verify before trust** | Inspect any script, package, or image before execution |
| **Pin everything** | Unpinned dependencies are a supply chain risk |

Instruction Override

High
Category
Prompt Injection
Confidence
90% confidence
Finding

This pattern attempts to override system instructions or ignore safety constraints. Without LLM analysis, manual review is recommended.

Content

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

md
| **Transparency** | Always tell the user what you're about to do and why |
| **Least privilege** | Default to read-only; escalate only when necessary |
| **Fail safe** | When in doubt, stop and ask — never guess |
| **No workarounds** | Never bypass safety rules even if user says "just do it quickly" |
| **Verify before trust** | Inspect any script, package, or image before execution |
| **Pin everything** | Unpinned dependencies are a supply chain risk |

External Script Fetching

High
Category
Supply Chain
Confidence
90% confidence
Finding

Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

Content

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

md
| **Dependency confusion** | Internal package name published to a public registry | A private `mycompany-utils` appearing on PyPI |
| **Compromised maintainer** | Legitimate package taken over and backdoored | `event-stream` npm incident (2018) |
| **Malicious install scripts** | `postinstall` / `setup.py` running arbitrary code at install time | Data exfiltration during `npm install` |
| **curl \| bash / wget \| sh** | Remote script executed without inspection | `curl https://get.example.com | bash` |
| **Unpinned dependencies** | Floating `latest` or `^x.y.z` versions resolved at install time | `pip install flask` (no version pin) |
| **Tampered lockfile** | Lockfile manually edited to replace a legitimate package hash | Modified `package-lock.json` |
| **Malicious container image** | Docker image with backdoored layers | Pulling `ubuntu:latest` from an unofficial registry |

External Script Fetching

High
Category
Supply Chain
Confidence
90% confidence
Finding

Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

Content

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

md
# 🔴 BLOCKED — always inspect first
curl https://example.com/install.sh | bash
wget -O - https://example.com/setup.sh | sh
python <(curl https://example.com/setup.py)

# ✅ CORRECT — download, inspect, then execute
curl -fsSL https://example.com/install.sh -o install.sh

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

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

md
- `curl` or `wget` to external URLs
- `eval` on a variable or command substitution
- `base64 -d | bash` or similar decode-and-execute patterns
- Modification of `/etc/hosts`, `/etc/passwd`, `/etc/sudoers`, or cron files
- Disabling of security tools (`ufw disable`, `setenforce 0`, `systemctl stop firewalld`)
- Exfiltration patterns: sending data to external IPs/domains not related to the install purpose

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

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

md
| **JWT / session secrets** | `JWT_SECRET`, `SESSION_SECRET`, `NEXTAUTH_SECRET`, `COOKIE_SECRET` |
| **Private keys & certificates** | `-----BEGIN RSA PRIVATE KEY-----`, `-----BEGIN EC PRIVATE KEY-----`, `-----BEGIN OPENSSH PRIVATE KEY-----`, `.pem` / `.p12` / `.pfx` / `.key` files |
| **SSH keys** | `id_rsa`, `id_ed25519`, `id_ecdsa` content, any `-----BEGIN ... PRIVATE KEY-----` block |
| **Access tokens** | GitHub PATs (`ghp_...`), Slack tokens (`xoxb-...`), Discord tokens, Telegram bot tokens, bearer tokens |
| **Webhook secrets** | `WEBHOOK_SECRET`, `STRIPE_WEBHOOK_SECRET`, Slack signing secrets |
| **Service account files** | `service-account.json`, `firebase-adminsdk-*.json`, `gcloud-key.json`, any JSON containing `"private_key"` |
| **Encryption keys** | `ENCRYPTION_KEY`, `AES_SECRET`, `MASTER_KEY`, any 32–64 char hex/base64 string labelled as a key |

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

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

md
# ── Environment files ──────────────────────────────────────────
.env
.env.local
.env.development
.env.development.local
.env.test
.env.test.local

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

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

md
*.env

# ── Secret / credential files ─────────────────────────────────
secrets.json
secrets.yaml
secrets.yml
*secret*