Back to skill

Security audit

ClawPrint - Captchas for AI verification

Security checks for vulnerabilities and agentic risk

Overview

This skill is coherent as an external AI-verification helper, but it gives unsafe guidance for gating sensitive resources and sends a secret key to a runtime-configured server without strong endpoint constraints.

Review this skill carefully before installing. Use it only as an auxiliary automation signal against a trusted HTTPS ClawPrint server you control, not as the sole basis for sharing API keys, credentials, private data, or privileged access. Treat CLAWPRINT_SECRET_KEY as sensitive and avoid configuring CLAWPRINT_SERVER_URL from untrusted sources.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (3)

T09 · Insecure Skill Coding Practices

Error
Location
clawprint-challenge.sh:125
Finding

Secret Key Disclosure Through an Unrestricted Server URL

Content
View full analysis
&2 exit 1 fi } ``` ```bash response=$(curl -sf -X POST "${CLAWPRINT_SERVER_URL}/api/v1/validate" \ -H "Content-Type: application/json" \ -d "{\"challenge_id\": \"${challenge_id}\", \"secret_key\": \"${CLAWPRINT_SECRET_KEY}\"}") ``` ### Technical Analysis The script verifies only that `CLAWPRINT_SERVER_URL` is nonempty. It does not require HTTPS, validate the hostname, restrict the destination to a trusted allowlist, reject embedded URL credentials, or otherwise bind the secret key to an expected ClawPrint server. The `validate` operation places `CLAWPRINT_SECRET_KEY` directly in the POST body and sends it to the configured URL. If an attacker can influence the process environment, deployment configuration, wrapper script, or command execution context, the attacker can redirect the request to an endpoint under their control. An HTTP URL would additionally expose the credential to network interception or modification. ### Attack Path 1. An attacker influences `CLAWPRINT_SERVER_URL`, for example by modifying an environment file, CI/CD variable, process environment, or invocation wrapper. 2. The value is changed to an attacker-controlled endpoint such as `http://attacker.example`. 3. A user or agent invokes: ```bash ./clawprint-challenge.sh validate ``` 4. The script sends a POST request to the attacker-con ...[truncated 786 chars]
Remediation
View remediation
&2; exit 1 ;; esac ``` 2. Parse and compare the hostname against an explicit allowlist of trusted ClawPrint servers. 3. Reject URLs containing embedded credentials, fragments, unexpected ports, or ambiguous encodings. 4. Pin the expected server URL in trusted configuration rather than accepting it from an untrusted runtime environment. 5. Prefer an authorization header over placing the secret in the JSON body, provided the server API supports it. 6. Prevent secrets from appearing in debug traces, process diagnostics, proxy logs, or error output. 7. Rotate `CLAWPRINT_SECRET_KEY` immediately if requests may already have been sent to an untrusted endpoint. 8. Consider certificate or public-key pinning in deployments where endpoint redirection or CA compromise is within the threat model. ]]>

T09 · Insecure Skill Coding Practices

Warning
Location
clawprint-challenge.sh:90
Finding

JSON Injection Through Unescaped Arguments and Environment Values

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:19
Finding

Computational Challenge Incorrectly Recommended as Authorization for Sensitive Resources

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (8)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding

The skill clearly instructs the agent to use shell commands (curl, jq) and external network access, but it does not declare any explicit tool scope or permissions boundaries. That mismatch increases the chance the skill is executed with broader-than-intended capabilities, making review, sandboxing, and least-privilege enforcement harder.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
83% confidence
Finding

The skill is explicitly designed to transmit data to an external server and depends on sensitive environment variables, including a secret key. In context, this is more dangerous because the skill recommends using the mechanism before sharing sensitive credentials, creating a path where trust decisions and secret-handling are outsourced to an external service whose URL is environment-controlled.

Content

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

md
emoji: "\U0001F43E"
    requires:
      bins:
        - curl
        - jq
      env:
        - CLAWPRINT_SERVER_URL

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger conditions are broad enough that an agent may invoke this skill in normal conversations about verification or proving identity, even when no strong trust boundary exists. In this skill's context, accidental activation is risky because it can lead to unnecessary external requests and potentially gating sensitive actions based on a weak or inappropriate authentication mechanism.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
74% confidence
Finding

This command sends challenge IDs and answers to an external endpoint. While transmitting challenge material is part of the skill's intended function, it still creates an exfiltration and integrity risk because destination control is delegated to CLAWPRINT_SERVER_URL, and the skill encourages using the result to make security-sensitive access decisions.

Content

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

Submit the answer to the ClawPrint server:

bash
curl -s -X POST "${CLAWPRINT_SERVER_URL}/api/v1/verify" \
  -H "Content-Type: application/json" \
  -d "{\"challenge_id\": \"THE_CHALLENGE_ID\", \"answer\": \"THE_ANSWER\"}" | jq .

External Transmission

Medium
Category
Data Exfiltration
Confidence
97% confidence
Finding

This step sends CLAWPRINT_SECRET_KEY in the request body to the external server, directly transmitting a secret off-box. Even if intended by the protocol, that is highly sensitive in this context because compromise, misconfiguration, or a malicious CLAWPRINT_SERVER_URL would expose the secret and allow forgery or abuse of future validation operations.

Content

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

For additional security, validate with your secret key:

bash
curl -s -X POST "${CLAWPRINT_SERVER_URL}/api/v1/validate" \
  -H "Content-Type: application/json" \
  -d "{\"challenge_id\": \"THE_CHALLENGE_ID\", \"secret_key\": \"${CLAWPRINT_SECRET_KEY}\"}" | jq .

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · clawprint-challenge.sh (reported line 40)May include surrounding context.

sh
check_env "issue"

  local response
  response=$(curl -sf -X POST "${CLAWPRINT_SERVER_URL}/api/v1/challenge" \
    -H "Content-Type: application/json" \
    -d "{\"site_key\": \"${CLAWPRINT_SITE_KEY}\"}")

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · clawprint-challenge.sh (reported line 91)May include surrounding context.

sh
check_env "verify"

  local response
  response=$(curl -sf -X POST "${CLAWPRINT_SERVER_URL}/api/v1/verify" \
    -H "Content-Type: application/json" \
    -d "{\"challenge_id\": \"${challenge_id}\", \"answer\": \"${answer}\"}")

External Transmission

Medium
Category
Data Exfiltration
Confidence
96% confidence
Finding

This call sends the private CLAWPRINT_SECRET_KEY to whatever host is contained in CLAWPRINT_SERVER_URL, with no enforcement of HTTPS, trust boundary checks, or endpoint allowlisting. If the URL is misconfigured, attacker-controlled, or intercepted over insecure transport, the secret key can be exposed and reused to forge or illegitimately validate challenge results.

Content

Scanner excerpt · clawprint-challenge.sh (reported line 135)May include surrounding context.

sh
check_env "validate"

  local response
  response=$(curl -sf -X POST "${CLAWPRINT_SERVER_URL}/api/v1/validate" \
    -H "Content-Type: application/json" \
    -d "{\"challenge_id\": \"${challenge_id}\", \"secret_key\": \"${CLAWPRINT_SECRET_KEY}\"}")

Static analysis

No suspicious patterns detected.