Back to skill

Security audit

Software Quotation Skill

Security checks for vulnerabilities and agentic risk

Overview

The skill has a legitimate quotation-writing purpose, but generated quote pages load unverified third-party scripts that could access sensitive pricing content in the browser.

Install only if you are comfortable with generated quotation HTML files fetching PDF-export libraries from cdnjs. For confidential customer, pricing, or contract data, prefer a revised version that bundles those libraries locally or adds verified SRI and a restrictive CSP.

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
quotation-template.html:7
Finding

Third-Party PDF Libraries Loaded Without Subresource Integrity Verification

Content
View full analysis
``` `SKILL.md:175-176`: ```html ``` ### Technical Analysis The quotation template loads `html2canvas` and `jsPDF` directly from a third-party CDN. Although explicit library versions are used, the script elements do not include Subresource Integrity (`integrity`) hashes or `crossorigin="anonymous"`. Consequently, the browser trusts and executes whichever JavaScript is returned by the CDN URLs. If the CDN account, hosted artifact, DNS resolution, certificate trust path, or another part of the delivery infrastructure is compromised, a modified dependency can execute in the quotation document's browser context. The same pattern is explicitly required by `SKILL.md`, meaning newly generated quotation documents are also likely to inherit this supply-chain exposure. No evidence indicates that the currently referenced libraries are malicious; the risk arises from executing remotely delivered code without independent integrity verification. ### Attack Path 1. An attacker compromises the CDN artifact or another component capable of changing the JavaScript returned by one of the referenced URLs. 2. A user opens `quotation-template.html` or a generated quotation containing the prescribed script elements. 3. The browser downloads the modified dependency and executes it because no SRI ...[truncated 1194 chars]
Remediation
View remediation
``` The placeholder hashes must be replaced with independently verified hashes for the exact referenced artifacts; incorrect or invented hashes must not be used. 3. **Apply a restrictive Content Security Policy** - Restrict `script-src` to the minimum trusted sources. - Disallow unneeded framing, plugins, and connections. - Migrate the inline `onclick` handler and inline script to a local script file or use CSP nonces/hashes so that `unsafe-inline` is unnecessary. 4. **Update the generation instructions** - Modify `SKILL.md:175-176` so every newly generated quotation uses local audited dependencies or verified SRI attributes. - Ensure generated files do not silently revert to unverified CDN imports. 5. **Control dependency updates** - Maintain an approved dependency inventory containing versions, source URLs, checksums, and review dates. - Test PDF export after each dependency update and review release notes for security advisories. ]]>
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (5)

Vague Triggers

High
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill description defines broad trigger phrases such as '帮我做一份报价', '帮我分析工作量', and similar natural-language requests that overlap with common user conversations. This can cause the skill to activate in situations where the user did not explicitly intend to invoke it, leading to unintended routing, premature workflow changes, or forcing the conversation into the skill's prescribed behavior.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

L054 要求“用口语化、简洁的中文提问”,属于对输出语言的硬性限定。文件中未说明这是用户自选语言,也未提供语言切换或地区适用性说明,因此构成语言/locale 方面的自然语言策略问题。

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The root HTML tag explicitly sets the page language to zh-CN, and the entire interface text is presented only in Chinese. Under the policy, forcing a specific language or locale without user opt-in or clear justification can be a natural-language policy violation.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The template loads executable JavaScript from third-party CDNs, which creates a supply-chain and integrity risk: if the CDN, package, or transit path is compromised, arbitrary code will run in the user's browser. In this skill context, a quotation template does not inherently need network-fetched code to render static content, so the external dependency increases attack surface beyond core business functionality.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
87% confidence
Finding

This HTML code includes an export action that captures the rendered quotation content and saves it as a PDF file on the user's device. Although the button click initiates the action, there is no visible warning, confirmation, or explanatory note near the export control describing that a local file containing the full document will be created.

Content

No source excerpt is available for this finding.