Back to skill

Security audit

OpenClaw Safety Guard

Security checks for vulnerabilities and agentic risk

Overview

The skill is a mostly disclosed safety-check wrapper, but users should understand that submitted URLs, files, and extracted content may go to model or extraction providers.

Install only if you are comfortable sending submitted text, URLs, PDFs, YouTube-derived content, and possibly extracted page content to the configured model provider or optional Firecrawl/Apify services. Avoid using it on sensitive local documents or internal URLs unless you have reviewed the actual safety-guard implementation and configured provider policies. Prefer pinning PyYAML before automated installs.

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:5
Finding
Unpinned Third-Party Python Dependency## Vulnerability Details **File Location**: `SKILL.md`, line 5 **Vulnerability Type**: Unpinned package dependency **Risk Level**: Medium ### Vulnerable Code ```yaml metadata: {"clawdbot":{"emoji":"🛡️","requires":{"bins":["python3"],"python_deps":["PyYAML"]},"install":[{"id":"pip","kind":"pip","packages":["PyYAML"],"label":"Install PyYAML (pip)"}]}} ``` ### Technical Analysis The skill metadata instructs the host to install `PyYAML` from pip without specifying an exact version, package hash, lockfile, or trusted artifact location. Consequently, installation results depend on the package version available from the configured package index at installation time. Although no evidence shows that `PyYAML` itself is malicious, this configuration lacks supply-chain integrity controls. If a dependency release, package-index account, configured mirror, or dependency-resolution path is compromised, the installer could retrieve an altered package. Python package installation can run build or installation logic, depending on the selected distribution and installer behavior. The artifact contains no executable implementation of the documented `safety-guard` command, so no further dependency safeguards or runtime validation could be verified. ### Attack Path 1. A user or automated host installs the skill and processes its pip installation metadata. 2. The installer resolves `PyYAML` without an exact version or cryptographic hash. 3. A compromised upstream release, package-index account, or configured mirror supplies a malicious or unexpectedly changed distribution. 4. The malicious package executes installation/build logic or introduces hostile runtime behavior. 5. That code operates with the privileges and data access of the account or environment performing the installation. This path is conditional on compromise or manipulation of the dependency supply chain; the reviewed files do not establish that such compromise has occurred. ...[truncated 496 chars]
Remediation
## Remediation Suggestions 1. Pin `PyYAML` to an explicitly reviewed version rather than allowing unconstrained resolution. 2. Generate and maintain a lockfile containing exact transitive dependency versions. 3. Require cryptographic hashes for downloaded distributions, such as with pip's `--require-hashes` mode. 4. Prefer a reviewed wheel from a trusted package index and restrict unexpected source builds. 5. Install dependencies inside an isolated virtual environment or container under a least-privileged account. 6. Use a controlled package mirror and monitor dependency releases and security advisories. 7. Add the missing executable implementation to the reviewed package so its dependency usage and runtime security controls can be audited.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (3)

Description-Behavior Mismatch

High
Confidence
98% confidence
Finding
The skill is presented as a pre-LLM safety guard for user input, but the documented behavior includes fetching and processing external URLs, PDFs, and YouTube content. That materially expands the trust boundary and attack surface, because untrusted remote content can be ingested and potentially forwarded to external models or fallback services under the guise of a local safety check.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The quick-start examples encourage users to submit URLs and local files, but the documentation does not warn that those resources and their extracted contents may be transmitted to external LLM providers or fallback services. This omission can mislead users about privacy and data handling, increasing the risk of inadvertent disclosure of sensitive documents, internal URLs, or regulated content.

Context-Inappropriate Capability

Medium
Confidence
95% confidence
Finding
The documentation advertises Firecrawl and Apify fallback retrieval for blocked sites and YouTube, which is not justified by the claimed role of a user-input security guard. Introducing additional third-party retrieval paths increases data exposure, complicates trust assumptions, and can cause sensitive user-supplied URLs or extracted content to be sent to external services unexpectedly.

Static analysis

No suspicious patterns detected.