Back to skill

Security audit

Openclaw Skill

Security checks for vulnerabilities and agentic risk

Overview

This paid helper skill is coherent, but it can send sensitive resumes, contracts, complaints, and compliance text to an external API without a clear privacy warning or consent step.

Review before installing. Use this skill only if you are comfortable sending the submitted text to https://w4h8ghmxcv.coze.site and paying through Alipay AI collection. Avoid submitting unredacted resumes, rental contracts, complaints, addresses, phone numbers, IDs, salary details, signatures, or third-party personal information unless the publisher provides acceptable privacy, retention, and deletion terms.

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

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/api_client.py:19
Finding

Unredacted Sensitive User Data Is Transmitted to an External Service Without Privacy Safeguards

Content
View full analysis

Vulnerability Details

File Location: scripts/api_client.py:19-20, 36-50; related invocation instructions in SKILL.md:90-113
Vulnerability Type: External disclosure of potentially sensitive user data
Risk Level: Medium

The Skill processes resumes, rental contracts, workplace information, and other user-provided documents. The documented workflow sends the complete input to an external API. No consent prompt, local redaction, data minimization, retention disclosure, or privacy-policy reference is implemented before transmission.

Relevant code:

python
API_BASE_URL = "https://w4h8ghmxcv.coze.site"
SERVICE_PRICE = 0.10  # 元/次
python
url = f"{API_BASE_URL}/api/v1/skill/{endpoint}"

# 构建请求
data = json.dumps(body).encode('utf-8')
req = urllib.request.Request(
    url,
    data=data,
    headers={
        'Content-Type': 'application/json',
        'Accept': 'application/json'
    },
    method='POST'
)

try:
    with urllib.request.urlopen(req, timeout=30) as response:
        result = json.loads(response.read().decode('utf-8'))
        return result

The corresponding Skill instructions explicitly demonstrate passing complete document content:

bash
# 简历优化
python scripts/api_client.py "bahe/jianli" '{"resume_text": "张三,3年经验...", "target_job": "产品经理"}'

# 合同审查
python scripts/api_client.py "zufang/contract" '{"contract_text": "甲方:... 乙方:..."}'

Technical Analysis

call_api serializes the supplied request body without filtering and posts it directly to w4h8ghmxcv.coze.site. Resumes and rental contracts commonly contain personally identifiable or confidential information, including names, addresses, contact information, employment history, signatures, financial terms, and details about third parties.

HTTPS protects data in transit against ordinary network interception, but it does not prevent the external service operator from receiving, pr ...[truncated 1641 chars]

Remediation
View remediation

Remediation Suggestions

  1. Require explicit, informed user consent before sending document content to the external API. Identify the recipient domain and explain that the data leaves the local environment.
  2. Add local preprocessing that removes or masks names, telephone numbers, email addresses, physical addresses, identification numbers, account details, signatures, and other unnecessary sensitive fields.
  3. Apply data minimization by sending only fields strictly required for the selected service rather than forwarding an unrestricted JSON body.
  4. Publish and link a privacy policy specifying processing purposes, subprocessors, storage locations, retention periods, deletion procedures, and whether submitted content is used for model training.
  5. Offer a preview showing exactly what will be transmitted and allow users to edit or cancel the request.
  6. Validate endpoint names against a fixed allowlist and define schemas and maximum sizes for each request type.
  7. Avoid logging request bodies and ensure the server applies encryption at rest, strict access controls, short retention periods, and auditable deletion.
  8. Provide a local-processing or manually redacted workflow for users who cannot disclose confidential documents to a third party.
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 (5)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
94% confidence
Finding

The skill exposes network-capable behavior via a remote API endpoint and explicit API invocation instructions, but it does not declare any tool scope or allowed-tools/permissions boundary. This weakens platform-level control and reviewability, making it easier for the skill to transmit user data externally without clear, enforceable constraints.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The trigger conditions are overly broad, covering generic topics like contracts, resumes, weekly reports, and compliance checks, which can cause the skill to activate for loosely related user requests. That increases the chance of unsolicited routing of sensitive user content to the paid remote service without clear user intent or informed consent.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill instructs sending potentially sensitive content such as resumes, contracts, complaints, and compliance text to a third-party API, but it does not provide a clear privacy or data-transmission warning beforehand. Users may unknowingly disclose personal, financial, employment, or legal information to an external service, creating significant confidentiality and compliance risks.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The module docstring and all user-facing messages are written exclusively in Chinese, indicating the skill is designed to operate in a single language. There is no visible opt-in, fallback, or documentation that this is a China-specific or Chinese-only skill, so this creates a natural-language locale policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

All natural-language description, instructions, and examples are presented only in Chinese, which effectively forces a specific language without stating that the skill is language-limited or offering alternatives. Under the policy, language constraints should be opt-in or clearly documented and justified.

Content

No source excerpt is available for this finding.