Back to skill

Security audit

Procurement Admission Copilot

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed, review-only procurement document checker, with no evidence of hidden execution, exfiltration, persistence, or destructive behavior.

Installers should treat supplier documents, filenames, spreadsheets, and case notes as untrusted business data. Use the skill only on files you intentionally provide, review outputs before relying on them, and do not treat the ready field or dashboard as an automatic admission, award, or contract decision.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:70
Finding
Untrusted Supplier Content Is Processed by the Agent Without Prompt-Injection Controls## Vulnerability Details **File Location**: `SKILL.md:70-81`, `SKILL.md:95-114`, and `SKILL.md:122-136` **Vulnerability Type**: Indirect prompt injection through untrusted documents and case data **Risk Level**: Medium ### Vulnerable Instructions ```text #### Step 1: [Deterministic] Load + extract structured fields For each supplied document, extract: - Company legal name as written in that document. - Unified Social Credit Code (USCC) if present. - Certificate names with issue / expiry dates. - Revenue / scale figures and their stated source. - Product / service categories and declared scope. - Contact and registration details. Record the extraction into a material manifest (the deterministic script consumes this). ``` ```text #### Step 3: [LLM] Consistency & quality review Explain and extend the deterministic findings, and add judgments the script cannot: ``` ```text #### Step 4: [LLM] Produce the structured package + readiness report Render a standardized supplier material package and a readiness report with the P0/P1/P2 list and recommended actions. Recommended fixes must cite an existing supplied document — never invent. ``` ```text #### Step 1: [Deterministic] Load + normalize Read the cases (CSV / JSON / folder). Normalize each to the case schema: supplier, submitted materials, reviewer, stage, due date, decision, notes. Output `01-cases-normalized.json`. #### Step 2: [LLM] Status analysis ``` ### Technical Analysis The Skill requires an LLM-enabled agent to read supplier-controlled documents, case notes, CSV records, JSON fields, and folders. These inputs cross an untrusted-data boundary because suppliers or other external parties may control their contents. The instructions do not tell the agent to: - Treat instructions embedded in supplied files strictly as untrusted data. - Refuse role changes, policy overrides, tool requests, or output directives found in documents. ...[truncated 2655 chars]
Remediation
## Remediation Suggestions 1. Add an explicit trust-boundary rule stating that all supplier documents, filenames, case notes, CSV fields, JSON values, and extracted text are untrusted data. 2. Require the agent to ignore any embedded instructions that request role changes, policy overrides, tool calls, network access, file access, secret disclosure, or altered output rules. 3. Restrict document access to files explicitly enumerated by the user. Resolve and validate paths before reading them, reject traversal outside the approved root, and avoid recursively processing unspecified files. 4. Use schema-bound extraction so each source contributes only expected values such as legal name, USCC, dates, certificate metadata, and financial figures. 5. Keep source text in clearly delimited data fields and never concatenate it into system or operational prompts. 6. Escape Markdown and HTML metacharacters before inserting supplier-controlled values into reports. Render external links as inert text unless a reviewer explicitly approves them. 7. Require source-file and page or section citations for every extracted fact and LLM-generated finding. 8. Prevent document-derived content from initiating tools or network requests. Any such action should require separate, explicit user confirmation. 9. Validate the generated manifest before running the deterministic script and compare report claims directly against `01-readiness-check.json`. 10. Add adversarial tests containing hidden instructions in document bodies, metadata, filenames, case notes, and spreadsheet cells to verify that they remain inert. 11. Apply equivalent safeguards to `SKILL_zh.md` so both Skill definitions enforce the same trust-boundary protections.
Vulnerability Patterns
  • 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
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (6)

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding
The skill claims to be strictly review-only and not to make admission decisions, yet the flagged behavior indicates it computes a boolean `ready`, which can be operationally treated as an approval gate or automated decision. In procurement contexts, this can bypass required human judgment, incorrectly block or admit suppliers, and create governance and compliance risk, especially if approval-case tracking is also incompletely implemented despite being advertised.

Natural-Language Policy Violations

Medium
Confidence
88% confidence
Finding
This file is entirely written in Chinese and does not indicate that users may choose another language or that the language restriction is required for a region-specific compliance purpose. Under the policy, forcing a specific language without user opt-in is a natural-language policy concern.

Lp3

Medium
Category
MCP Least Privilege
Confidence
70% confidence
Finding
Without declared permissions the skill's intent is opaque and cannot be validated.

Natural-Language Policy Violations

Low
Confidence
96% confidence
Finding
The file is centered on Chinese-only user-facing content, including a `description_zh` field and a Chinese title/body, with no indication that users may choose another language. Under the policy, forcing a specific language without user opt-in is a natural-language policy concern unless the locale constraint is explicitly documented and justified.

Natural-Language Policy Violations

Low
Confidence
79% confidence
Finding
The checklist includes multiple Chinese-only document labels and examples, which imposes a specific language/locale in the skill content. Because the file does not state that it is intended only for Chinese procurement contexts or offer an alternative language option, this can violate language/locale policy expectations.

Natural-Language Policy Violations

Low
Confidence
91% confidence
Finding
This markdown template presents all operational instructions and field labels in Chinese, and there is no indication that users can opt into another language or that the skill is intentionally limited to a Chinese-language workflow. Under the policy, forcing a specific language without user opt-in is a natural-language policy concern.

Static analysis

No suspicious patterns detected.