Back to skill

Security audit

Compliance Officer

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed compliance-review helper with proportionate network use, though users should be careful with URL fetching and the unpinned install command.

Install only from a trusted ClawHub/registry path, prefer pinned or verified installer versions when available, and use URL review only for public pages you intend the agent to fetch. Treat outputs as preliminary compliance guidance for human legal review, not a definitive legal determination.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
Findings (2)

T09 · Insecure Skill Coding Practices

Warning
Location
references/instructions.md:57
Finding
Unrestricted Fetching of User-Controlled URLs## Vulnerability Details **File Location**: `references/instructions.md:57` and `references/instructions.md:141`; network access is enabled by `claw.json:7` **Vulnerability Type**: Server-Side Request Forgery through unrestricted URL retrieval **Risk Level**: Medium **Vulnerable Code Snippets**: `references/instructions.md:57` ```markdown - Marketing copy text, a URL (fetch with WebFetch), or an image ``` `references/instructions.md:141` ```markdown - A URL to a privacy policy (fetch with WebFetch) or pasted text ``` `claw.json:7` ```json "permissions": ["network"], ``` ### Technical Analysis The Skill instructs the agent to retrieve URLs supplied by users and has the network permission required to do so. It does not impose scheme or destination restrictions, reject URLs containing credentials, prevent access to loopback/private/link-local networks, or require redirect destinations to be revalidated. This creates a potential server-side request forgery boundary violation. Depending on the behavior and network placement of the WebFetch implementation, an attacker may be able to induce requests to internal HTTP services, local administrative interfaces, or cloud instance metadata endpoints. If retrieved content is included or summarized in the compliance report, data from an otherwise inaccessible service could be disclosed. ### Attack Path 1. An attacker asks the Skill to audit a privacy policy or marketing page at an attacker-selected URL. 2. The supplied URL points directly to an internal destination or to an external endpoint that redirects to one. 3. The agent follows the instruction and invokes WebFetch using its network permission. 4. The fetch mechanism connects to a loopback, private, link-local, metadata, or other non-public service if the runtime does not independently block it. 5. The returned content enters the model context. 6. The Skill quotes, summarizes, or reasons over the retrieved con ...[truncated 922 chars]
Remediation
## Remediation Suggestions 1. Accept only absolute `https://` URLs and reject all other schemes, including `http`, `file`, `ftp`, `gopher`, and `data`. 2. Reject URLs containing embedded credentials or ambiguous host representations. 3. Resolve the hostname before connecting and block loopback, private, link-local, multicast, reserved, and cloud metadata address ranges for both IPv4 and IPv6. 4. Re-resolve and revalidate the destination on every redirect; enforce a small redirect limit. 5. Prevent DNS rebinding by binding validation and connection to the same resolved address. 6. Consider an explicit allowlist of public domains appropriate to the compliance-review task. 7. Apply strict response-size, timeout, and content-type limits. 8. Do not reproduce secrets or sensitive fetched content in generated reports. 9. Update the instructions to state that only validated public HTTPS pages may be fetched. 10. Retain runtime egress controls even after adding instruction-level validation, because prompt instructions alone are not a security boundary.

T08 · Insecure Dependencies

Warning
Location
SKILL.md:70
Finding
Unpinned Install-Time Package Execution through npx## Vulnerability Details **File Location**: `SKILL.md:70-73` and `README.md:31-34` **Vulnerability Type**: Mutable third-party package execution during installation **Risk Level**: Medium **Vulnerable Code Snippets**: `SKILL.md:70-73` ```markdown ## Install ``` npx clawhub install compliance-officer ``` ``` `README.md:31-34` ```markdown ## Install ``` npx clawhub install compliance-officer ``` ``` ### Technical Analysis The documented installation command invokes `npx` without pinning an exact reviewed version of the `clawhub` package or verifying its integrity. If the package is not already available locally, `npx` may retrieve and execute the version currently resolved by the configured package registry. The code executed during installation can therefore differ from the code that existed when this Skill was audited. A compromised registry account, malicious future release, dependency compromise, registry substitution, or local package-manager configuration could cause attacker-controlled JavaScript or lifecycle behavior to run under the installing user's account. The project itself contains no embedded executable scripts, and the audit found no evidence that the currently referenced package is malicious. The risk arises from executing a mutable, externally resolved dependency without version or integrity controls. ### Attack Path 1. A user follows the installation documentation and runs `npx clawhub install compliance-officer`. 2. `npx` resolves `clawhub` using the user's configured package registry and cache. 3. If the package is absent locally, `npx` downloads the currently selected version and its dependency graph. 4. A compromised or malicious package version executes through the CLI entry point or applicable package lifecycle behavior. 5. The malicious process runs with the privileges and environment of the user who launched the command. 6. It can access resources available to that user ...[truncated 818 chars]
Remediation
## Remediation Suggestions 1. Pin the installer to an exact reviewed version, such as `clawhub@X.Y.Z`, rather than relying on the registry's current resolution. 2. Publish and verify the expected package integrity digest and provenance before execution. 3. Use a trusted, explicitly configured registry and disallow unexpected registry overrides. 4. Prefer a preinstalled and independently verified CLI; where appropriate, use `npx --no-install` to prevent implicit downloads. 5. Use lockfiles and immutable dependency resolution in any maintained installation wrapper. 6. Review the pinned package's dependency tree and package lifecycle scripts. 7. Execute installation with least privilege in a sandbox or restricted development environment. 8. Keep `README.md` and `SKILL.md` installation instructions synchronized so both prescribe the hardened command. 9. Document a reproducible verification procedure for users, including package name, exact version, registry, publisher identity, and integrity value.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Memory PoisoningPersistent Context Injection, Context Window Stuffing, Memory Manipulation
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (6)

Memory Manipulation

High
Category
Memory Poisoning
Content
"framework": "sec-482",
    "title": "Past Performance Legend",
    "severity": "critical",
    "summary": "Investment company advertisements must include a clear statement that past performance does not guarantee future results.",
    "rationale": "",
    "detection": {
      "type": "hybrid",
Confidence
80% confidence
Finding
Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
The README instructs users to run `npx clawhub install compliance-officer` without pinning a specific version of the package being executed. This causes users to fetch and run whatever version is current at install time, which creates a supply-chain risk if the package is compromised, a malicious version is published, or behavior changes unexpectedly.

Rp1

Medium
Category
MCP Rug Pull
Confidence
93% confidence
Finding
The install instruction invokes `npx clawhub` without pinning an exact package version, which can cause users to execute whatever version is current in the registry at install time. If the upstream package is compromised, typosquatted, or updated with malicious code, the skill installation path becomes a supply-chain execution vector.

Vague Triggers

Medium
Confidence
86% confidence
Finding
Several modes can plausibly apply to the same input, such as marketing email content fitting both 'Review content' and 'Check email,' or a privacy policy URL fitting both general content review and privacy policy review. The file does not define precedence rules or disambiguation logic, which could cause inconsistent invocation behavior.

Vague Triggers

Medium
Confidence
90% confidence
Finding
The trigger 'User provides marketing copy, a URL, or an image to check' is very broad because providing a URL or image is common across many unrelated requests. The instruction does not give narrowing constraints or negative examples to distinguish compliance-review requests from ordinary sharing of content.

Natural-Language Policy Violations

Low
Confidence
79% confidence
Finding
This JSON manifest-like file repeatedly encodes a single locale/jurisdiction as "US", beginning at L0041-L0042, with no accompanying natural-language indication that the rules are optional, region-specific, or selected by user context. Under the policy-violation category, this can force a specific legal locale without user opt-in or an explicit explanatory constraint in the surrounding text.

Static analysis

No suspicious patterns detected.