Back to skill

Security audit

虾问瞎答 · OpenClaw Skill(提问端|零配置)

Security checks for vulnerabilities and agentic risk

Overview

This skill does send content to external services and stores a local device ID, but those behaviors are disclosed, purpose-aligned, and user-controlled rather than hidden or destructive.

Install only if you are comfortable sending generated questions plus a persistent device ID to the Xiawenxiada endpoint. Do not configure Discord, Feishu, Telegram, or WeCom notifications unless answer contents are acceptable to share with those services, and keep webhook URLs and bot tokens out of logs and source control. Delete ~/.xwd_device_id or set XWD_DEVICE_ID yourself if you want to rotate the identifier.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Rogue AgentSelf-Modification, Session Persistence
  • 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
Findings (13)

Missing User Warnings

High
Confidence
96% confidence
Finding
The description states that the skill will automatically push up to 3 daily questions to a public platform and references a public endpoint plus a persistent deviceId-based rate limit, but it does not prominently warn users about privacy implications. Automatic transmission to a public service can expose behavioral metadata, device correlation identifiers, and user-generated or device-originated content without informed consent.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The skill instructs operators to poll for human answers hourly and forward them back to a user, but it does not present a clear upfront privacy notice about what user-generated content is collected, where it is sent, how long it is stored, or who can access it. Because the content is explicitly human answers and is then synchronized outward, this creates a real risk of unintended disclosure of personal or sensitive information through automation.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The documentation tells users to configure Discord, Feishu, Telegram, and WeCom webhooks/bot tokens for forwarding content, but it does not warn that messages and credentials are being entrusted to third-party platforms. This is dangerous because users may expose sensitive answer content externally and mishandle secrets without understanding the confidentiality and credential-protection implications.

Session Persistence

Medium
Category
Rogue Agent
Content
v = open(p, "r", encoding="utf-8").read().strip()
        if v:
            return v
    raise RuntimeError("missing deviceId: set XWD_DEVICE_ID or run push script once to create ~/.xwd_device_id")


def post_json(url, payload, timeout=12, headers=None):
Confidence
60% confidence
Finding
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The script forwards retrieved Q/A content to third-party messaging services such as Discord, Feishu, Telegram, and WeWork. Even if this is a stated feature, it transmits potentially sensitive user-generated content off-platform without any runtime consent prompt, content classification, redaction, or allowlist controls, which creates a real privacy and data-leak risk if answers contain personal or confidential information.

External Transmission

Medium
Category
Data Exfiltration
Content
chat_id = _env("TELEGRAM_CHAT_ID")
    if not token or not chat_id:
        return False
    api = f"https://api.telegram.org/bot{token}/sendMessage"
    payload = {"chat_id": chat_id, "text": text}
    data = urllib.parse.urlencode(payload).encode("utf-8")
    req = urllib.request.Request(
Confidence
89% confidence
Finding
The code sends answer content to the Telegram Bot API over the network, which is an external transmission of potentially sensitive data. In this skill's context, that behavior is intentional, but it still represents a genuine exfiltration path because any fetched answers are copied to a third-party service outside the original system boundary.

Natural-Language Policy Violations

Medium
Confidence
93% confidence
Finding
The skill's natural-language outputs are entirely hard-coded in Chinese, and the file provides no option for language selection or explanation that the skill is intentionally Chinese-only. This can violate language/locale policy when a skill forces a specific language without user opt-in.

Missing User Warnings

Medium
Confidence
86% confidence
Finding
This code reads credential-related environment variables, including XWD_CLIENT_KEY, and uses them to sign and send data to a remote endpoint. While missing-env failure is handled, there is no user-facing warning, confirmation, or explanatory comment near the operation disclosing that credentials are being accessed and network requests will be made.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The code creates and stores a persistent device ID in the user's home directory without informing the user at execution time. This establishes long-lived local state that can be used to track usage across runs and may surprise users in environments where scripts are expected to be stateless or minimally invasive.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The script sends a stable device identifier along with generated content to a third-party cloud endpoint automatically at runtime, and it does so without an explicit execution-time consent prompt or clear disclosure. Even though the endpoint uses HTTPS, the persistent identifier enables cross-run tracking of a user or host and creates an avoidable privacy risk, especially in an agent/skill context where users may not expect outbound data transmission.

Vague Triggers

Medium
Confidence
88% confidence
Finding
The manifest advertises that the skill can be installed and will then automatically push content every day, but it does not define clear activation constraints, user-trigger requirements, or opt-in boundaries. In an agent ecosystem, broad always-on behavior increases the chance of unexpected execution and makes consent and operational scope ambiguous.

Natural-Language Policy Violations

Low
Confidence
88% confidence
Finding
The natural-language instructions, headings, and user-facing copy are all in Chinese, and the file does not offer an alternative language or indicate that the skill is intentionally limited to a Chinese-speaking audience. Under the stated policy, forcing a specific language without user opt-in can be a locale-policy violation.

Natural-Language Policy Violations

Low
Confidence
81% confidence
Finding
The human-readable usage and behavior documentation in this file is only provided in Chinese. That can create a language-accessibility policy issue because the skill does not offer an alternative language or indicate that Chinese-only operation is intentional and justified.

Static analysis

No suspicious patterns detected.