T01 · Skill Instruction Hijacking
- Location
SKILL.md:64- Finding
Mandatory Promotional Output and Referral-Link Injection
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill mostly fits its bid-document cloud-processing purpose, but it includes mandatory referral-style output rules and writes persistent project metadata outside its declared write area.
Review before installing. Use it only for tender or bid documents you are authorized to upload to the vendor service, expect account-based storage and possible billing, keep the API key out of chat, and be aware that the skill may create ~/.zcm/projects.json unless ZCM_HOME is controlled or the file is later cleaned up.
SKILL.md:64Mandatory Promotional Output and Referral-Link Injection
scripts/zcm_lib/storage.py:62Persistent Metadata Written Outside the Declared Filesystem Boundary
scripts/zcm_lib/files.py:48Compliance Uploads Can Exhaust Memory Due to Fully Buffered Multipart Encoding
Referenced artifact was not completely inspected
**升级 skill 必须保留配置**:如果当前已安装目录存在 `config.json`,升级时不得删除、覆盖或替换该文件;只能更新 `SKILL.md`、`scripts/`、`references/` 等 skill 内容文件。本地生成目录 `biaoshu-bailian-files/` 也必须保留。
The instruction '展示给用户时统一说“可用字数”' mandates a specific Chinese phrasing for user-facing output. This is a language/locale constraint presented as a blanket requirement, with no indication that the user can choose another language or locale.
The API accepts sensitive bid documents either as direct uploads or by fetching them from an external URL, but the documentation provides no privacy, retention, access-control, or third-party fetch warning. Bid/tender files commonly contain confidential commercial and personal data, so silent ingestion or server-side retrieval can expose users to unintended data disclosure and SSRF-style risk if arbitrary URLs are fetched by the backend.
This markdown file contains user-facing instructions only in Chinese, and there is no indication that users may choose another language or that the skill is intentionally limited to a Chinese-speaking/regional audience. Under the policy, forcing a specific language without opt-in is a natural-language policy violation.
The document states that uploaded files and task results are retained on the vendor server and tied to the API key owner account, but it does not prominently warn users about privacy, confidentiality, retention period implications, or suitability for sensitive bid/procurement documents before use. Because this skill handles potentially sensitive business documents, unclear disclosure can lead to unintended third-party storage of confidential materials and compliance/privacy exposure.
The entire skill reference is written only in Chinese and provides operational guidance exclusively in that language. Under the stated policy, forcing a specific language without user opt-in can be a natural-language policy violation unless the locale restriction is explicitly justified, which is not stated here.
Line L149 states that script output and reports have already been converted to Chinese and should be presented directly in Chinese. This imposes a specific language on users without opt-in or an explicit locale limitation, which matches the language/locale policy-violation category.
The exception message is hard-coded in Chinese, which imposes a specific language on users without any opt-in or fallback. This is a natural-language policy concern because the file provides user-visible text but does not offer locale selection.
The argparse description and help strings are all presented in Chinese, which forces a specific language for command-line users. There is no indication of user choice, fallback, or documented locale restriction to justify this constraint.
This code hard-codes Chinese titles and labels for generated reports, such as "招标文件智能解读报告" and Chinese field names, which constrains the output language. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation.
The compliance renderer constructs report content using fixed Chinese headings and labels, including the report title and cover metadata. This enforces a specific language for user-facing output without any visible opt-in or locale-selection mechanism.
This renderer generates user-facing report titles, labels, and explanatory text in Chinese by default. Because no language choice or explicit locale constraint is shown, it appears to force a specific language in violation of the stated policy.
This code embeds Chinese-only user-facing text and locale assumptions, beginning with the docstring and continuing throughout the generated HTML/DOCX output. The file does not offer a language choice or indicate that the skill is intentionally region-specific, which can violate language/locale policy requirements.
The rendered HTML sets lang='zh-CN' unconditionally, which forces a specific locale for all users and outputs. Under the stated policy, locale constraints should be optional or explicitly justified rather than silently imposed.
The error strings in these lines are hard-coded in Chinese, which imposes a specific language on users. The file does not indicate that the skill is China-specific or that users can opt into this locale, so this is a natural-language policy concern.
This line emits a Chinese-only error message to users. Without an explicit user language choice or documented regional scope, this violates the language/locale policy criteria.
The code presents a Chinese-only runtime error string. Because no locale selection or region-specific justification is present in this file, the message can conflict with organizational language policy expectations.
The string literal 请求失败 HTTP ... hard-codes Chinese for a user-facing error message. This imposes a specific language without opt-in or documented locale justification, which is a natural-language policy violation.
This code emits user-facing status and error text in Chinese, including timeout and failure guidance, and the pattern continues throughout the file. Because the skill does not offer any language opt-in or locale selection, it appears to enforce a specific language, which matches the natural-language locale policy violation criteria.
The download-link flow presents all user-visible guidance in Chinese, including warnings and next-step instructions. This is a policy issue because the skill forces one language rather than offering a choice or documenting a justified regional limitation.
The result fallback path and progress-stream output use Chinese-only messaging for operational guidance and status updates. Without opt-in, fallback, or documented regional scoping, this violates the language/locale policy criteria.
Tool defaults are unsafe or overly permissive (e.g. disabled TLS verification, no authentication, world-writable permissions). Unsafe defaults widen the attack surface.
contract_snapshot,
funcs,
description,
include_skillhub_auth=False,
allow_remote_files=False,
include_feedback=False,
):
The formatting helpers return Chinese-only strings such as '分钟', '小时', and '天', and the main progress formatter also emits Chinese-only status text. This forces a specific language in user-facing output without opt-in or any documented justification, which matches the locale-policy violation criteria.
The file defines Chinese-only translations for result enums and uses Chinese user-facing messages throughout, which imposes a specific language/locale on users. There is no indication in this file that users can choose another language or that the locale restriction is documented as an explicit, justified constraint.
The platform reminder and balance-reporting messages are emitted only in Chinese, and the file provides no alternative locale path or opt-in. Under the policy, forcing a specific language without user choice is a natural-language policy violation unless clearly documented and justified.
Detected: suspicious.dynamic_code_execution