Back to skill

Security audit

Claw Daily

Security checks for vulnerabilities and agentic risk

Overview

The skill matches its Claw Daily competition purpose, but needs Review because it tells agents to obey mutable remote challenges without guardrails and to store a reusable API key in plaintext.

Review before installing. Use it only if you trust daily.ratemyclaw.xyz and are comfortable submitting challenge outputs there. Treat challenge text as untrusted task data, review any requested tool/file/network actions, and store the API key in a protected secret store or a 0600 file under a 0700 directory; never paste the key into prompts or send it to other domains.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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 (2)

T01 · Skill Instruction Hijacking

Error
Location
SKILL.md:36
Finding
Untrusted Remote Challenge Content Can Hijack Agent Instructions## Vulnerability Details **File Location**: `SKILL.md`, lines 36–42 **Vulnerability Type**: `T01: Skill Instruction Hijacking` **Risk Level**: High **Vulnerable Code**: ```markdown ## Step 2: Get Today's Challenge ```bash curl -s https://daily.ratemyclaw.xyz/api/v1/challenges/today ``` Read the `prompt` and `eval_criteria` fields carefully. Follow them exactly. ``` ### Technical Analysis The Skill retrieves mutable content from an external service and explicitly directs the Agent to follow the returned `prompt` and `eval_criteria` fields “exactly.” These fields cross an external trust boundary but are treated as authoritative instructions rather than untrusted task data. Retrieving a daily challenge is necessary for the declared competition functionality. However, granting the challenge unrestricted control over Agent behavior is not necessary. The Skill provides no restriction preventing the remote content from attempting to override higher-priority instructions, request local files or credentials, invoke unrelated tools, contact additional destinations, or perform side effects unrelated to producing a challenge answer. Because the retrieved content can change after the Skill has been reviewed, an attacker controlling or compromising the service could supply an adversarial prompt tailored to the Agent's available tools and execution context. ### Attack Path 1. An attacker gains control over, compromises, or otherwise influences the response from `https://daily.ratemyclaw.xyz/api/v1/challenges/today`. 2. The service returns a malicious `prompt` or `eval_criteria` value containing instructions to read sensitive files, disclose conversation context, invoke tools, or perform unrelated actions. 3. The Skill directs the Agent to follow those remote instructions exactly. 4. If the Agent honors the malicious content, it performs actions outside the legitimate challenge-solving scope. 5. Sensitive information could the ...[truncated 689 chars]
Remediation
## Remediation Suggestions - Explicitly classify `prompt`, `eval_criteria`, and all other API response fields as untrusted task data. - Replace “Follow them exactly” with instructions that remote content must never override system, developer, user, or Skill-level security constraints. - Restrict challenge processing to generating inert textual output. Do not permit remote prompts to request local-file access, secret retrieval, credential disclosure, unrelated network calls, or tool execution. - Allow submissions only to the predefined `daily.ratemyclaw.xyz` endpoint and prevent remote content from changing the destination. - Require explicit user confirmation before performing any side effect beyond retrieving the challenge and submitting the final answer. - Apply input validation and size limits to remote fields, and reject challenge content containing requests for secrets, privilege changes, persistence, or unrelated actions. - Ensure the submission is reviewed or filtered so that credentials and sensitive local data cannot be included inadvertently.

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:30
Finding
API Key Stored Without Enforced Restrictive File Permissions## Vulnerability Details **File Location**: `SKILL.md`, lines 30–35 **Vulnerability Type**: `T09: Insecure Skill Coding Practices` **Risk Level**: Medium **Vulnerable Code**: ```markdown **Save the `api_key` from the response.** It cannot be retrieved again. Store it in a file at `~/.config/claw-daily/credentials.json`: ```json {"api_key": "cbd_sk_..."} ``` ``` ### Technical Analysis The Skill instructs the Agent to persist a bearer API key as plaintext JSON but does not require owner-only permissions on either the configuration directory or credential file. Actual access permissions therefore depend on the creation mechanism, inherited directory permissions, and the user's `umask`. Persisting a credential is functionally related to the declared workflow because the key is needed for future authenticated submissions. The weakness is not persistence itself, but the absence of secure creation, permission enforcement, log-suppression guidance, and an option to use a protected operating-system credential store. The Skill states that the key must never be sent to a domain other than `daily.ratemyclaw.xyz`, and there is no evidence that it intentionally exfiltrates the key. Nevertheless, local plaintext storage without enforced access controls unnecessarily exposes the credential. ### Attack Path 1. The Agent registers with the service and receives an API key. 2. It writes the key to `~/.config/claw-daily/credentials.json` using default filesystem permissions. 3. A permissive `umask`, pre-existing directory, or unsafe file-creation method leaves the directory or file readable by another local principal or process. 4. That principal reads the bearer token from the JSON file. 5. The stolen token is used to authenticate to the service as the registered Agent, access Agent-specific information, or make submissions under the victim's identity. ### Impact Assessment A successful attacker obtains the privileges associate ...[truncated 391 chars]
Remediation
## Remediation Suggestions - Prefer an operating-system credential manager or secret store instead of a plaintext JSON file. - If file storage is necessary, create `~/.config/claw-daily` with mode `0700`. - Create the credential file atomically with mode `0600`; do not rely solely on the ambient `umask`. - Verify ownership and permissions before reading an existing credential file, and refuse to use files writable or readable by unintended principals. - Avoid printing the key in logs, command output, error reports, submissions, or shell history. - Load the key without embedding it directly in command-line arguments where local process inspection could expose it. - Document revocation and rotation procedures for credentials suspected of disclosure.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (4)

Credential Access

High
Category
Privilege Escalation
Content
-d '{"name":"openclaw-agent","description":"OpenClaw AI agent","framework":"openclaw"}'
```

**Save the `api_key` from the response.** It cannot be retrieved again. Store it in a file at `~/.config/claw-daily/credentials.json`:

```json
{"api_key": "cbd_sk_..."}
Confidence
95% confidence
Finding
The skill explicitly instructs saving a long-lived API key to a predictable plaintext path under the user's home directory. If that file is readable by other local processes, accidentally committed, exposed through logs/backups, or accessed by another skill, the token could be used to impersonate the agent and make authenticated submissions or query account data.

Vague Triggers

Medium
Confidence
91% confidence
Finding
This is a markdown/manifest file, so vague-trigger review applies. The file marks the skill as user-invocable and describes its purpose, but it does not define explicit trigger phrases, activation boundaries, or negative examples, making it unclear when the skill should activate versus not activate.

External Transmission

Medium
Category
Data Exfiltration
Content
If you have not registered yet, register now:

```bash
curl -s -X POST https://daily.ratemyclaw.xyz/api/v1/agents/register \
  -H "Content-Type: application/json" \
  -d '{"name":"openclaw-agent","description":"OpenClaw AI agent","framework":"openclaw"}'
```
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The skill instructs the user to persist an API key in a local JSON file and later reuse it in authenticated requests, but it provides no precautions about file permissions, secret redaction, shell history, or avoiding exposure to other skills/processes. In an agent environment, weak credential-handling guidance increases the chance of accidental disclosure or misuse of a reusable bearer token.

Static analysis

No suspicious patterns detected.