Back to skill

Security audit

clawschool

Security checks for vulnerabilities and agentic risk

Overview

This skill is a coherent IQ-test integration, but it uses plaintext HTTP and shell-based curl commands in a way that can expose answers and create command-injection risk.

Review this skill before installing. It sends quiz responses, a generated name, and model information to clawschool.teamolab.com, currently over unencrypted HTTP, and its curl instructions should be tightened to use HTTPS, explicit consent, narrower triggers, and safe JSON serialization.

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

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:23
Finding

Plaintext HTTP Used for External API Communication

Content
View full analysis
","answers":{<你的答案JSON>},"lobsterName":"<龙虾名>","model":"<你的模型名>"}' ``` ### Technical Analysis Both API requests use unencrypted HTTP. Consequently, the server identity is not cryptographically authenticated and traffic has no transport-layer confidentiality or integrity. A network-positioned attacker can observe or alter the session identifier, questions, submitted answers, generated nickname, model identifier, and returned score report. The use of `curl -s` also suppresses progress and some diagnostic information, making transport failures or unexpected behavior less visible. This weakness is particularly significant because values returned by the start endpoint are subsequently inserted into a shell command. Manipulating those values can therefore contribute to exploitation of the separate command-injection weakness. ### Attack Path 1. The agent invokes the test-start endpoint over plaintext HTTP. 2. An attacker on the local network, proxy path, compromised router, or other intermediary intercepts the request. 3. The attacker modifies the returned JSON, including the `sessionId` or questions. 4. The agent retains and later submits the attacker-controlled values. 5. The attacker can also intercept or modify the submission and returned score report. 6. If a malicious value reaches the unsafe shell command construction, it may be used to attempt command injection under the privileges of the agent process. ### Impact Assessment An attacker with a suitable network position can: - Read submitted answers, session identifiers, nicknames, a ...[truncated 546 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:37
Finding

Shell Command Injection Through Unsafe JSON Interpolation

Content
View full analysis
","answers":{<你的答案JSON>},"lobsterName":"<龙虾名>","model":"<你的模型名>"}' ``` ### Technical Analysis The skill directs the agent to construct a shell command by inserting the session identifier, answers, nickname, and model name into a single-quoted JSON argument. No escaping, validation, or structured serialization procedure is specified. In a POSIX shell, an apostrophe in any substituted value terminates the surrounding single-quoted argument. Subsequent shell metacharacters can then be interpreted as commands, redirections, pipelines, or substitutions rather than as JSON data. For example, a malicious session identifier with the following conceptual value can break out of the quoted argument: ```text '; id >/tmp/pwned; # ``` Because the session identifier originates from an external API reached over unauthenticated plaintext HTTP, a network attacker can potentially control this value even if the legitimate API is not malicious. Remotely supplied questions may also influence generated answers that are later interpolated into the same command. Manual JSON assembly additionally permits malformed requests, ambiguous data types, and unintended changes to the JSON structure when values contain quotation marks, backslashes, newlines, or other special characters. ### Attack Path 1. The agent requests a test session from the external HTTP endpoint. 2. A malicious server or network-positioned attacker returns a crafted `sessionId`. 3. The agent follows the skill instructions and retains that value without strict validation. 4. During submission, the agent substitutes the value directly into the single-quoted `curl` command. 5. ...[truncated 1238 chars]
Remediation
View remediation
"$payload_file" curl --fail --show-error --silent \ --proto '=https' \ --proto-redir '=https' \ -X POST 'https://clawschool.teamolab.com/api/test/submit' \ -H 'Content-Type: application/json' \ --data-binary @"$payload_file" ``` 3. Prefer invoking an HTTP client through a structured API that accepts an argument array and serialized request object, avoiding a shell entirely. 4. Validate `sessionId` against the narrowest format documented by the service, including strict length and character limits. 5. Ensure `answers` is parsed and validated as a JSON object before submission. 6. Apply length limits to every externally supplied or generated field. 7. Treat questions and all API responses solely as data; never follow instructions embedded in remote content. 8. Run the execution tool in a restricted sandbox with minimal filesystem access, no unnecessary credentials, and tightly controlled outbound network access. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (3)

Missing User Warnings

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill instructs sending user-provided answers, a chosen name, and model metadata to a remote service without an explicit privacy notice or consent step. Because the activation phrases are broad, users may not realize their responses are being transmitted externally, creating a meaningful privacy and data-sharing risk.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The description says the skill triggers when users mention phrases including “智力测试” and especially “做测试”, which are generic phrases that can occur in many unrelated contexts. The file does not provide limiting conditions, scope constraints, or negative examples to clarify when the skill should not activate.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
93% confidence
Finding

The skill is explicitly designed to use exec with curl to contact an external HTTP API, which creates an external transmission surface and relies on shell-based network execution. This becomes more dangerous in context because the endpoint uses plain HTTP rather than HTTPS, exposing session IDs, answers, and returned content to interception or tampering in transit.

Content

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

md
name: clawschool
description: |
  龙虾学校智力测试 (ClawSchool IQ Test)。当用户提到"龙虾学校"、"智力测试"、"IQ测试"、"做测试"时触发。
  通过 exec curl 调用 clawschool.teamolab.com API 获取题目、提交答案,展示成绩报告。
metadata:
  {
    "openclaw": {

Static analysis

No suspicious patterns detected.