Back to skill

Security audit

违规词·发帖前合规检查

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly a content-checking tool, but it can quietly use local DeepSeek credentials and send draft text to a third-party API, so it should be reviewed before installation.

Install only if you are comfortable with Chinese/CN-platform-style moderation lists and with the DeepSeek suggestion behavior. Before using it on private drafts, remove or disable implicit DeepSeek credential discovery, require explicit opt-in for remote suggestions, and avoid exposing scripts/api_server.py beyond localhost without authentication and request limits.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (3)

T05 · Unauthorized Access and Privilege Escalation

Error
Location
scripts/check.py:106
Finding

Implicit access to user-level environment files and external transmission of submitted content

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/api_server.py:25
Finding

Unauthenticated compliance API exposed on all network interfaces

Content
View full analysis
Remediation
View remediation
MAX_BODY_SIZE: self.send_error(413) return ``` 5. Validate that `Content-Type` is `application/json`. 6. Add connection, read, and processing timeouts. 7. Implement rate limiting and request concurrency controls at the application or reverse-proxy layer. 8. Do not allow API requests to trigger third-party AI calls unless that capability is separately enabled and authorized. 9. Use a production-grade HTTP server or place this development server behind a hardened reverse proxy for network deployments. 10. Document that exposing the service beyond localhost requires access controls. ]]>

T08 · Insecure Dependencies

Warning
Location
scripts/sync_wordlists.py:22
Finding

Mutable remote wordlists are imported without integrity or regex-safety validation

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
Findings (21)

Harmful Content Injection

Critical
Category
Prompt Injection
Confidence
70% confidence
Finding

This content may contain harmful instructions that could cause physical harm if followed. CRITICAL: Review carefully before use.

Content

Scanner excerpt · config/wordlists/同步-暴恐词库.txt (reported line 148)May include surrounding context.

text
泼尼松
麻黄草
雄烯二醇
地塞米松
tamoxifen
strychnine
androst
新型毒品
杜冷丁
兴奋剂
mdma

Tainted flow: 'req' from os.environ.get (line 142, credential/environment) → urllib.request.urlopen (network output)

Critical
Category
Data Flow
Confidence
95% confidence
Finding

The script sends user-provided text to an external API and authenticates with a credential obtained from the environment or local env files. This creates a real data exfiltration/privacy risk because content submitted for a supposedly local compliance check may be transmitted off-box without clear disclosure or consent.

Content

Scanner excerpt · scripts/check.py (reported line 148)May include surrounding context.

python
headers={'Authorization': f'Bearer {key}', 'Content-Type': 'application/json'},
            method='POST',
        )
        with urllib.request.urlopen(req, timeout=30) as r:
            out = json.loads(r.read().decode())
            return out['choices'][0]['message']['content'].strip()
    except Exception:

Credential Access

High
Category
Privilege Escalation
Confidence
88% confidence
Finding

The script accesses credentials from env-style files such as ~/.env and ~/.openclaw/.env, which is broader than needed for a local compliance checker. While it does not exfiltrate the key directly, it enables unannounced use of third-party services and increases the chance of unexpected credential consumption.

Content

Scanner excerpt · scripts/check.py (reported line 110)May include surrounding context.

python
key = os.environ.get('DEEPSEEK_API_KEY')
    if not key:
        script_dir = os.path.dirname(os.path.abspath(__file__))
        for env_path in [os.path.join(script_dir, 'email.env'), '~/.openclaw/.env', '~/.env']:
            p = os.path.expanduser(env_path)
            if os.path.exists(p):
                try:

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
92% confidence
Finding

The skill advertises only limited read-only behavior, but static analysis detected capabilities consistent with environment access, file read/write, and network use while the manifest declares no explicit tool scope. This mismatch can hide the true operational privileges of the skill, reducing reviewability and enabling over-privileged execution or unexpected data egress if the implementation uses those capabilities.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The natural-language description and usage guidance are written entirely in Chinese and frame the skill as operating through Chinese trigger phrases and Chinese output fields such as summary_zh, without any opt-in or alternative language option. This creates a locale/language constraint that is not explicitly justified as region-specific or offered as a user choice.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

This wordlist is overwhelmingly tailored to a specific Chinese-language compliance and censorship context, including political, sexual, and region-specific terms, without any visible user opt-in, locale scoping, or justification in the file itself. In a content-review skill, that can cause overblocking, discriminatory moderation, and silent policy enforcement against users outside the intended jurisdiction or use case.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This wordlist hard-codes a Chinese political/censorship vocabulary and is explicitly framed as a compliance/moderation resource without any visible scope limitation, opt-in, or policy justification. In context, that makes it more than a locale choice: it enables broad suppression of political speech, identity-related terms, and news sources, which can be abused for targeted censorship and discriminatory moderation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

This file is a Chinese-language keyword list and contains no natural-language indication that language or locale scope is optional, user-selectable, or limited to a justified region-specific deployment. Under the policy rule for language/locale constraints, a skill artifact that hard-codes one locale without opt-in or documented justification can constitute a policy violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
76% confidence
Finding

This file is a natural-language configuration list and its contents are entirely English despite the path suggesting a synchronization context for Chinese/English prohibited terms. That can violate a language/locale policy when a skill implicitly forces one language's moderation vocabulary without documenting opt-in, multilingual support, or a justified locale restriction.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This code file contains natural-language text exclusively in Chinese in the module docstring and startup instructions, indicating a fixed language choice for users of the skill. The policy requires flagging language or locale constraints when the skill does not offer user choice or document a justified region-specific limitation.

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 description, usage messaging, prompts, and report output are all fixed in Chinese, and the AI prompt explicitly requests Chinese suggestions. There is no opt-in, user language selection, or justification that the tool is intended only for a Chinese-language or region-specific context.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill description presents the tool as a local wordlist-based compliance checker, but the implementation can upload analyzed content to DeepSeek for suggestions. That mismatch is security-relevant because users may provide sensitive draft content under the assumption it remains local.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The code searches for API credentials not only in the environment but also in local env-style files under common user locations. This expands the skill's capability beyond its stated purpose and can cause unintended use of available credentials without the user's awareness.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The script transmits input text and matched terms to a third-party API without any explicit warning in the CLI flow. For a compliance-checking tool, inputs may contain unpublished marketing copy or regulated content, so silent transmission materially increases confidentiality and compliance risk.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
93% confidence
Finding

The hardcoded external endpoint confirms that the tool can send analyzed content to a third-party service. In context, this is more dangerous because the skill is marketed as a wordlist comparison tool, so users may not expect any network transmission.

Content

Scanner excerpt · scripts/check.py (reported line 143)May include surrounding context.

python
'max_tokens': 500,
        }).encode('utf-8')
        req = urllib.request.Request(
            'https://api.deepseek.com/v1/chat/completions',
            data=data,
            headers={'Authorization': f'Bearer {key}', 'Content-Type': 'application/json'},
            method='POST',

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

The name and tagline are written in Chinese while the description is in English, but the manifest does not state whether the skill is intended only for Chinese-speaking users or whether language is selectable. This can create a locale-policy issue because the skill implicitly forces a specific language experience for some user-facing text without opt-in or justification.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The natural-language values in the "name" fields are consistently written in Chinese, including labels for English-language sources. This can impose a specific language/locale on users or downstream tooling without any visible opt-in or justification, which matches the policy category for forced language/locale constraints.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

This plain-text skill file consists entirely of Chinese-language terms and provides no accompanying natural-language note explaining that the list is intentionally Chinese-only or limited to a Chinese-language moderation context. Under the language/locale policy rule, a file that enforces a specific locale without user choice or documented justification can be considered a policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
78% confidence
Finding

This plain-text file is entirely composed of Chinese-language terms and includes both simplified and traditional variants, suggesting the skill is hard-wired to a specific language/locale context. Under the policy rule, forcing a specific language or locale without user opt-in or justification can be a natural-language policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
86% confidence
Finding

The startup print statements present operational information only in Chinese, which imposes a specific language on users or operators without opt-in. Because the file does not provide an alternative language path or explain a justified locale restriction, this is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

Silently reading credentials from environment and local env files is not itself code execution, but it is a transparency and least-astonishment problem. Users may not realize the skill will activate networked features when such credentials are present, changing the data-handling behavior of the tool.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.