Back to skill

Security audit

ClawPrint - Captchas for AI verification

Security checks for vulnerabilities and agentic risk

Overview

This skill is transparent about using a remote verification service, but it recommends using a weak AI-vs-human challenge as a gate for sensitive credentials and sends a reusable secret to a configurable server URL.

Install only if you will use it as a non-authoritative capability signal, not as proof of identity or permission to receive secrets. Do not let it automatically release API keys, credentials, or protected resources; keep CLAWPRINT_SERVER_URL pinned to a trusted HTTPS service you control, protect and rotate CLAWPRINT_SECRET_KEY if exposed, and require a separate authenticated authorization decision before any sensitive action.

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

Warning
Location
clawprint-challenge.sh:98
Finding

Untrusted Values Are Interpolated Directly into JSON Request Bodies

Content
View full analysis
Remediation
View remediation

other

Error
Location
SKILL.md:21
Finding

Reverse-CAPTCHA Completion Is Incorrectly Used as Authorization for Sensitive Resources

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
clawprint-challenge.sh:132
Finding

Reusable Secret Key Can Be Exfiltrated Through a Configurable Server URL

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 (11)

Natural-Language Policy Violations

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The core design of the skill is to exclude humans and grant access only to entities that can solve machine-oriented challenges, with no user choice or policy justification. This is dangerous because it operationalizes discriminatory access control and encourages sharing sensitive resources based on an unreliable and easily gameable 'AI verification' concept.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

High
Category
Not specified by scanner
Confidence
96% confidence
Finding

The workflow explicitly recommends denying access to humans as a routine step before sharing secrets or granting service access. In context, this makes the skill more dangerous because it couples exclusionary gating with sensitive actions like releasing API keys, creating a path to unsafe disclosure based on a bogus verification signal.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding

The skill invokes shell commands (curl, jq) and depends on sensitive environment variables, but it does not declare an explicit tool scope such as permissions or allowed-tools. This weakens least-privilege controls and can allow unintended shell/network execution if the skill is invoked in environments that rely on manifest scoping for enforcement.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
88% confidence
Finding

The skill is built around transmitting data to an external server and requires both site and secret keys to do so. External transmission is especially sensitive here because the skill encourages use in conversations involving access control and secrets, increasing the chance that metadata, challenge results, or operational details are sent to a third-party service without adequate review.

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
89% confidence
Finding

The activation guidance is broad enough that the skill may trigger whenever a conversation mentions verification or proving identity, even outside appropriate security workflows. That can lead to unnecessary external requests and inappropriate gating decisions based on a flawed AI-vs-human test.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The sample trigger phrases are vague and generic, increasing the chance of accidental invocation from ordinary conversation. In this skill, accidental activation is more dangerous because it can initiate external transmission and enforce discriminatory access control based on whether the other party appears to be human.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
84% confidence
Finding

The verify step sends challenge identifiers and answers to an external service. Although this is expected for the feature, it is still a true security concern because the skill may be invoked broadly and used in sensitive workflows, causing external disclosure of interaction data and creating dependency on an untrusted remote verifier.

Content

Scanner excerpt · SKILL.md (reported line 125)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

The validate step transmits the CLAWPRINT_SECRET_KEY to an external server in the request body. Even if intended, this is high risk because it normalizes sending a long-lived secret off-box to a third-party endpoint, increasing exposure through logs, debugging, interception points, or service compromise.

Content

Scanner excerpt · SKILL.md (reported line 146)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 request sends the private CLAWPRINT_SECRET_KEY in the POST body to a configurable external URL. Because CLAWPRINT_SERVER_URL is fully environment-controlled and not constrained, a misconfiguration or maliciously supplied endpoint could capture the secret key and allow unauthorized validation actions or broader compromise of the ClawPrint integration.

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.