Back to skill

Security audit

Traditional Chinese Dictionary

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed Traditional Chinese dictionary lookup/update tool that downloads public MOE dictionary data into a local user directory, with manageable supply-chain and download-safety caveats.

Reasonable to install if you want a Taiwan MOE Traditional Chinese dictionary skill. Before use, consider pinning dependencies or installing from a locked environment, and be aware that manual or cron updates download ZIP files from MOE and store extracted data in ~/.openclaw/dictionaries or your configured storage path.

Vulnerability Patterns
  • 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
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
Findings (2)

T08 · Insecure Dependencies

Warning
Location
requirements.txt:4
Finding

Unpinned Third-Party Dependencies Create a Supply-Chain Risk

Content
View full analysis
=2.0.0 openpyxl>=3.1.0 ``` The documented installation commands in `SKILL.md:12-17` and `README.md:29-36` install these dependencies directly from the user's configured Python package index: ```bash uv pip install -r requirements.txt # Alternative pip install -r requirements.txt ``` ### Technical Analysis Both dependencies use lower-bound-only version constraints. Consequently, the package resolver may install any current or future release satisfying the minimum version. The project provides neither a reviewed lockfile nor package hashes, so installations are not reproducible and package integrity is not independently verified. This does not establish that `pandas` or `openpyxl` is currently malicious. The weakness is that a future compromised release, compromised package index, or maliciously configured index could supply code that differs from what was reviewed during this audit. Python packages may execute build or installation logic, and imported dependencies subsequently execute with the privileges of the user running the Skill. ### Attack Path 1. An attacker compromises a permitted dependency release or the package source configured on the victim's system. 2. The attacker publishes or serves a malicious version that still satisfies `pandas>=2.0.0` or `openpyxl>=3.1.0`. 3. A user follows the documented `pip` or `uv pip` installation command. 4. The resolver selects the attacker-controlled version because no exact version or trusted hash is required. 5. Malicious installation, import-time, or runtime code executes with the installing or invoking user's privileges. ### Impact Assessment Successful exploitation could execute arbitrary code under the affected user's account. Depending on that account's permissions, an attacker could read or ...[truncated 281 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/download_dictionary.py:164
Finding

Remote ZIP Archives Are Downloaded and Extracted Without Integrity or Resource Limits

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (12)

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The skill claims a specific trusted source and dataset scope, but the documentation alone does not prove the code enforces those constraints. If source URLs or dictionary types are configurable without strict validation, the skill could fetch unexpected remote content under the guise of a trusted dictionary updater, expanding supply-chain risk.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill claims a specific trusted source and dataset scope, but the documentation alone does not prove the code enforces those constraints. If source URLs or dictionary types are configurable without strict validation, the skill could fetch unexpected remote content under the guise of a trusted dictionary updater, expanding supply-chain risk.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
92% confidence
Finding

The skill claims a specific trusted source and dataset scope, but the documentation alone does not prove the code enforces those constraints. If source URLs or dictionary types are configurable without strict validation, the skill could fetch unexpected remote content under the guise of a trusted dictionary updater, expanding supply-chain risk.

Content

No source excerpt is available for this finding.

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · scripts/download_dictionary.py (reported line 48)May include surrounding context.

python
Validate that a zip member path does not escape the target directory.
    
    Prevents zip-slip attacks where a zip file contains paths like:
    - ../../../etc/passwd
    - /absolute/path/file
    
    Args:

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
88% confidence
Finding

The skill advertises network access and file-writing behavior in its documentation, but it does not declare an explicit tool scope such as permissions or allowed-tools. That creates a least-privilege and transparency problem: an agent or reviewer cannot easily tell what capabilities are intended, increasing the chance of unintended network fetches or filesystem modifications during use.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The usage examples and response guidance are entirely in Traditional Chinese and instruct the skill to answer dictionary queries in that locale, but the file does not state that this is an opt-in or region-specific language constraint. Under the language/locale policy, forcing a specific language without user choice can be a natural-language policy violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

The README explicitly highlights Traditional Chinese usage, and the usage examples are entirely in Traditional Chinese. For an all-file-types language policy check, this can be a locale/language constraint without user opt-in, and the README does not clearly state that the skill is intentionally region-specific or offer alternatives.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
78% confidence
Finding

The text states that pronunciation uses 'Zhuyin (ㄅㄆㄇ) notation (Taiwan standard)', which imposes a locale-specific linguistic convention in natural language. Because the document does not explicitly frame this as a Taiwan-specific schema constraint or offer alternatives, it can be read as a forced locale choice.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
97% confidence
Finding

The dependency is specified with only a lower bound (pandas>=2.0.0), which makes builds non-reproducible and allows future upstream releases to be pulled in without review. This increases supply-chain risk and also prevents verifying whether a resolved version is affected by known vulnerabilities.

Content

Scanner excerpt · requirements.txt (reported line 4)May include surrounding context.

text
# openclaw-tc-dict-skill dependencies
# Install with: uv pip install -r requirements.txt

pandas>=2.0.0
openpyxl>=3.1.0

Unverifiable Dependency: pandas has 1 known advisory(ies) (CVE-2020-13091 (** DISPUTED ** pandas through 1.0.3 can unserialize and execute commands from an)), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
97% confidence
Finding

The dependency is specified as openpyxl>=3.1.0 rather than an exact version, so installations may resolve to different releases over time. That weakens reproducibility and can silently introduce vulnerable or incompatible versions through normal dependency installation.

Content

Scanner excerpt · requirements.txt (reported line 5)May include surrounding context.

text
# Install with: uv pip install -r requirements.txt

pandas>=2.0.0
openpyxl>=3.1.0

Unverifiable Dependency: openpyxl has 2 known advisory(ies) (CVE-2017-5992 (Improper Restriction of XML External Entity Reference in Openpyxl); CVE-2017-5992 (Openpyxl 2.4.1 resolves external entities by default, which allows remote attack)), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.