Back to skill

Security audit

技术标智写Tech Bid Writer 1.0.0

Security checks for vulnerabilities and agentic risk

Overview

This is a disclosed Chinese technical-bid writing skill with local document conversion and Word export helpers; the main risks are normal handling of sensitive bid/company materials and unpinned Python dependencies, not hidden or malicious behavior.

Install only if you are comfortable letting the agent process tender documents and optional company knowledge-base material. Use a clean virtual environment with pinned dependency versions where possible, keep confidential company examples and credentials out of uploaded materials unless needed, and review all generated technical claims before submission.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:210
Finding
Unpinned Third-Party Runtime Dependencies## Vulnerability Details **File Location**: `SKILL.md:210`, `scripts/doc2txt.py:17`, and `scripts/convert_to_word.py:26` **Vulnerability Type**: Unpinned third-party dependencies **Risk Level**: Medium ### Vulnerable Code `SKILL.md:210`: ```text - Dependencies: `pip install python-docx pymupdf olefile openpyxl` (pure pip, no system dependencies) ``` `scripts/doc2txt.py:17`: ```text pip install python-docx olefile pymupdf openpyxl ``` `scripts/convert_to_word.py:26`: ```text Dependency: pip install python-docx ``` ### Technical Analysis The installation instructions identify package names but do not constrain versions, verify artifact hashes, or provide a lockfile. Consequently, package resolution depends on the mutable state of the configured Python package index at installation time. The conversion scripts subsequently import and execute these dependencies when processing tender documents. For example, `doc2txt.py` imports `docx`, `olefile`, `fitz`, and `openpyxl`, while `convert_to_word.py` imports `python-docx`. Python packages can execute initialization code during import and additional package-controlled code while parsing a document. This does not establish that any listed package is currently malicious. The weakness is that the project lacks controls ensuring that users install the same reviewed artifacts. A compromised upstream release, package-index compromise, or unsafe private-index configuration could therefore introduce unreviewed executable code. ### Attack Path 1. An attacker compromises a dependency release or causes the victim's configured package index to resolve an attacker-controlled distribution. 2. A user follows the documented unpinned `pip install` command. 3. `pip` downloads and installs the uncontrolled release without project-supplied version or hash verification. 4. The user invokes document conversion or Word generation. 5. The script imports the installed dependency or ...[truncated 820 chars]
Remediation
## Remediation Suggestions 1. Create a reviewed dependency file containing exact versions, for example: ```text python-docx==REVIEWED_VERSION PyMuPDF==REVIEWED_VERSION olefile==REVIEWED_VERSION openpyxl==REVIEWED_VERSION ``` 2. Generate and record cryptographic hashes for every accepted distribution, including transitive dependencies. 3. Require hash verification during installation: ```bash python -m pip install --require-hashes -r requirements.txt ``` 4. Commit a lockfile generated by a reproducible dependency-management tool and use it consistently in development, testing, and deployment. 5. Configure installations to use an approved package index over TLS and avoid untrusted supplemental indexes. 6. Run document conversion in an isolated, least-privileged environment with restricted filesystem and network access. 7. Establish a dependency-update process that includes vulnerability scanning, release review, compatibility testing, and regeneration of locked hashes.
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • 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
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (13)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
声明描述的是一个面向投标技术文件创作与合规检查的高层业务技能,而提供的代码仅完成配套的文档排版导出功能。虽然声明中提到“内置 Word 直出”,该脚本可视为其中一个支持组件,但单看这段代码,其主要用途并不是技术标写作、评分项映射、合规审查或偏离分析,而只是将已有 Markdown 内容转换为 Word。代码也没有任何招标文件解析、评分表处理、知识库溯源、技术偏离比对或覆盖核对逻辑。因此,代码行为与技能声明的核心能力存在明显不一致,属于实质性描述不匹配。

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
声明描述的是一个高层次的技术投标写作与合规检查专家系统,核心能力应是分析招标文件并产出完整技术标相关文档与检查结果。实际代码仅提供文档解析与格式转换:读取 Word、PDF、Excel 文件内容并输出为 txt/md,属于前置辅助处理工具。虽然代码注释写明其是“技术标写作专家配套”,可视为支持性组件,但若将该代码块本身作为该技能实现,则其主要行为与声明的主要用途明显不一致,且实际能力远少于声明能力。因此应判定为描述与行为不匹配。

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
声明描述的是一个完整的技术标写作与合规检查流水线,核心价值在于“根据招标文件生成可用投标包”以及进行评分项映射、合规预检、覆盖核对和Word输出。而实际代码只是一个辅助性的篇幅分析工具:读取 Markdown 文本后按中日韩字符/ASCII权重估算字数和页数,按章节拆分并判断是否接近目标页数。它不解析招标文件、不生成任何投标文档、不做评分点映射、不做技术合规检查,也不输出Word文件。虽然“篇幅校验”可能可作为技术标写作流程中的辅助环节,但它远不足以支撑声明中的主要用途,因此描述与实际行为存在明显且实质性的不匹配。

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
声明描述的是一个完整的技术标写作与合规检查工具,核心能力应围绕解析招标文件、生成技术标文档及配套检查表展开。而提供的代码仅实现了基于项目性质和预算的技术标页数推荐,不读取招标文件,不生成正文,不做评分点覆盖、不做技术偏离分析,也不输出 Word。虽然“技术标”领域相关,但这是非常局部且辅助性的功能,无法代表声明中的主要用途,因此属于明显描述与实际行为不符。

Lp3

Medium
Category
MCP Least Privilege
Confidence
89% confidence
Finding
The skill declares file read/write capable scripts and output artifacts but does not specify any tool scope restrictions such as allowed tools, writable directories, or path boundaries. In an agent environment, missing least-privilege constraints can let the skill access or overwrite unintended files if later prompts or orchestration logic misuse those capabilities.

Natural-Language Policy Violations

Medium
Confidence
89% confidence
Finding
The display name is Chinese, and the document consistently specifies Chinese-only output conventions such as Chinese wording and a Chinese-specific naturalizer reference, but nowhere offers the user a language or locale choice. Under the policy, forcing a specific language without opt-in is a natural-language policy violation unless the locale restriction is explicitly justified.

Vague Triggers

Medium
Confidence
83% confidence
Finding
The description says the skill should be used when a user asks for "生成技术方案" or "施工组织设计", which are relatively broad request types and may overlap with general document-writing assistance rather than narrowly signaling this specific bidding skill. The manifest does not provide exclusion conditions or negative examples to clarify when such phrases should not activate the skill.

Vague Triggers

Medium
Confidence
88% confidence
Finding
The trigger regex includes several broad phrases such as '技术方案' and '施工组织设计' that can match common document-writing requests outside the narrowly intended bidding context. If the host platform auto-invokes skills based on these triggers, the skill may activate on unrelated prompts, causing prompt-routing confusion, unintended instruction injection into other workflows, or disclosure of user context to the wrong skill.

Natural-Language Policy Violations

Medium
Confidence
92% confidence
Finding
The file name and title indicate a Chinese-specific humanizer skill, and the description/instructions are entirely scoped to Chinese output for technical bid text. There is no explicit user opt-in for language choice or documented policy justification that this locale restriction is required, which matches the language/locale policy-violation criterion.

Natural-Language Policy Violations

Medium
Confidence
92% confidence
Finding
Line L69 instructs writers to use specific Chinese phrasing (e.g. '项目组将/本方案') and forbids alternative first-person forms, which imposes a language/locale-specific policy. The file does not provide user opt-in, alternative language options, or a documented justification that the skill is intended only for a Chinese-language procurement context.

Natural-Language Policy Violations

Medium
Confidence
97% confidence
Finding
This Python file contains natural-language documentation and CLI output entirely in Chinese, including the module docstring and argument help text. Under the policy, forcing a specific language without user opt-in or a documented justified locale constraint is a natural-language policy violation.

Natural-Language Policy Violations

Low
Confidence
80% confidence
Finding
The skill's display name and descriptive content are entirely Chinese, and the manifest comments indicate Chinese naming is preferred on several platforms, but there is no explicit statement that the skill is intended only for Chinese-language or China-specific bidding contexts. Under the policy, a locale-specific constraint should either be opt-in or clearly documented and justified.

Natural-Language Policy Violations

Low
Confidence
91% confidence
Finding
The manifest description is entirely in Chinese, and the document body continues in Chinese throughout, which imposes a specific language on users without any stated opt-in or alternative locale. Under the policy, language constraints should either be optional or clearly justified as region-specific.

Static analysis

No suspicious patterns detected.