T01 · Skill Instruction Hijacking
- Location
SKILL.md:268- Finding
Unconditional promotional footer hijacks generated output
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill mostly matches its bid-document screening purpose, but it should be reviewed because it handles sensitive bid data with weak disclosure/redaction and forces a promotional footer into generated outputs.
Review this skill before installing it on real procurement materials. Use it only with documents you are authorized to process, assume generated JSON/Markdown/DOCX files and extracted images may contain sensitive bid data, clean the workspace after use, and be aware that reports will include a fixed author/WeChat footer unless the skill is changed.
SKILL.md:268Unconditional promotional footer hijacks generated output
scripts/build_report.py:115Sensitive personal and financial values are rendered without masking
SKILL.md:43Runtime installation uses unpinned dependencies without integrity verification
Referenced artifact was not completely inspected
- `SKILL_DIR`:本 Skill 的根目录绝对路径,即本 `SKILL.md` 所在目录。其下的 `scripts/` 即脚本目录。
The README explicitly encourages users to upload multiple bid/tender documents and lists highly sensitive fields such as phone numbers, bank accounts, legal representatives, addresses, and social credit codes, but it does not provide any user-facing warning or handling guidance for personal and corporate data. In this context, omission of privacy, retention, access control, and consent guidance increases the risk of inappropriate collection, over-sharing, or unsafe processing of regulated and commercially sensitive information.
The skill directs the agent to read and write user files, invoke scripts, and emit artifacts, but it does not declare any explicit tool scope such as permissions or allowed-tools. In an agent platform, missing tool scoping weakens least-privilege controls and can let the skill access broader filesystem capabilities than reviewers or users expect.
The markdown explicitly states '仅支持中文标书', which imposes a language constraint on users. Under the policy, forcing a specific language without offering a choice or documenting a justified region-specific compliance reason is a natural-language policy violation.
The privacy section claims files are only processed within the current session and not persisted outside it, but the workflow explicitly writes extracted.json, findings.json, markdown/docx reports, and extracted images to the workspace. This is a security-relevant documentation integrity issue because users may disclose sensitive bid documents under a false understanding of retention and storage behavior.
This markdown file is entirely written as mandatory skill guidance in Chinese, including required report text and output conventions, with no indication that users may choose another language or that the skill is limited to a Chinese-only locale. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation.
Dynamic import() can load arbitrary modules at runtime, bypassing static analysis and potentially importing malicious code.
# ----------------------------------------------------------------------------
def _require(module_name, pip_name):
try:
return __import__(module_name)
except ImportError:
sys.stderr.write(
f"[错误] 缺少依赖 `{pip_name}`。请在托管 Python 环境中执行:\n"
Dynamic import() can load arbitrary modules at runtime, bypassing static analysis and potentially importing malicious code.
# ----------------------------------------------------------------------------
def _require(module_name, pip_name):
try:
return __import__(module_name)
except ImportError:
sys.stderr.write(
f"[错误] 缺少依赖 `{pip_name}`。请在托管 Python 环境中执行:\n"
All visible user-facing content in the README is presented only in Chinese, including the title, feature descriptions, usage instructions, and feedback channel. There is no indication that users may choose another language, nor is there a documented reason that the skill is intentionally restricted to a Chinese-language audience.
The skill later states OCR is only performed if the agent has vision capability and otherwise must be skipped with a limitation note. Earlier, however, the environment section presents image extraction for OCR as a default part of processing, which conflicts with the later capability-conditional behavior and can mislead an implementer about what actually happens.
The skill's stated purpose is to generate structured duplicate-check/risk-screening reports for bidding documents. Adding fixed signature and WeChat feedback/promotion text is not required to perform detection or report rendering, and introduces an unrelated communication/branding capability into the output artifact.
No suspicious patterns detected.