Back to skill

Security audit

Order Analytics

Security checks for vulnerabilities and agentic risk

Overview

This skill is a coherent local order analytics report generator, with manageable cautions around customer identifiers, CDN-loaded chart/font assets, and unsafe optional Pillow install advice.

Before installing, use pseudonymous customer IDs where possible instead of raw phone numbers, avoid putting raw identifiers in generated reports, and treat the HTML output as sensitive business material. For safer offline use, replace the CDN Chart.js and Google Fonts references with bundled or integrity-pinned assets. Do not follow the suggested Pillow install command as written; use an isolated virtual environment and pinned dependencies.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (2)

T03 · Remote Payload Retrieval and Execution

Warning
Location
references/html-template.md:12
Finding

Remote Third-Party JavaScript Is Executed Without Integrity Verification

Content
View full analysis
``` ### Technical Analysis Generated analytics reports load executable JavaScript from an external CDN whenever the report is opened. Although the URL specifies Chart.js version 4.4.1, the script element does not provide a Subresource Integrity hash or a restrictive Content Security Policy. Consequently, the effective JavaScript payload is not fully controlled by the audited project. If the CDN account, hosted asset, DNS resolution, TLS trust chain, or another delivery component is compromised, a modified response could execute arbitrary JavaScript in the report's browser context. This behavior also makes generated reports dependent on continued network access and the availability and trustworthiness of the external service. ### Attack Path 1. The Skill generates a report using `references/html-template.md`, or a user opens the included example report. 2. The browser requests Chart.js from `cdnjs.cloudflare.com`. 3. An attacker compromises or interferes with a component capable of controlling the returned CDN resource. 4. Because no integrity hash is specified, the browser accepts and executes the modified JavaScript. 5. The malicious script reads analytics data rendered in the document, changes displayed figures, or sends accessible report content to an attacker-controlled endpoint. ### Impact Assessment Exploitation grants JavaScript execution within the generated report's browser origin and context. A malicious dependency could: - Read business metrics and customer-derived aggregate data embedded in the report. - Falsify charts, recommendations, and operational conclusions. - Make arbitrary ou ...[truncated 334 chars]
Remediation
View remediation
``` 2. If CDN delivery must be retained, calculate and specify the exact Subresource Integrity hash: ```html ``` 3. Verify the hash against the exact reviewed Chart.js 4.4.1 artifact rather than copying a hash from an untrusted source. 4. Add a restrictive Content Security Policy that permits scripts only from approved sources and blocks unexpected outbound connections. Avoid allowing `unsafe-eval`. 5. Apply the same remediation to both `references/html-template.md` and `references/example-badminton.html`. 6. Consider self-hosting the referenced fonts as well, so reports can operate offline without disclosing connection metadata to third-party font services. ]]>

T08 · Insecure Dependencies

Note
Location
scripts/extract_colors.py:14
Finding

Unpinned Pillow Installation Guidance Bypasses System Package Protections

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (17)

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared skill is primarily an order-data business analytics dashboard/report generator. The supplied code does something materially narrower and different: it processes an image file via Pillow, extracts dominant colors, builds a CSS theme, and prints theme JSON/CSS. While the description does mention support for custom colors/logo-based theming, this code only implements that auxiliary theming feature and none of the core declared analytics functionality. Therefore the code chunk does not accurately represent the declared overall purpose.

Content

No source excerpt is available for this finding.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 12)May include surrounding context.

md
> 📎 完整案例:`references/example-badminton.html` — 星辰羽毛球馆,紫色主题,6Tab

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 298)May include surrounding context.

md
> 📎 完整案例:`references/example-badminton.html` — 星辰羽毛球馆,紫色主题,6Tab

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 140)May include surrounding context.

md
> 完整CSS组件库 + JS配置见 `references/html-template.md`

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 297)May include surrounding context.

md
> 完整CSS组件库 + JS配置见 `references/html-template.md`

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The README explicitly states that the skill processes order data containing phone numbers or user IDs, but it provides no warning, minimization guidance, or handling requirements for sensitive personal data. In a skill designed to ingest user-supplied spreadsheets and generate reports, this omission can lead operators to upload unnecessary PII, increasing the risk of privacy violations, improper retention, or downstream exposure in generated artifacts.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The description lists generic trigger phrases such as “经营诊断”, “用户分析”, “趋势分析”, “业务报告”, and “数据报告”, and also says the skill applies to 'any business scenario with order records'. These terms are broad enough to match many ordinary analysis conversations, and the file does not provide exclusion conditions or negative examples to clarify when this skill should not activate.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill explicitly expects user identifiers such as phone numbers or user IDs and describes processing them for analytics without any privacy minimization, masking, retention, or consent guidance. This increases the risk of unnecessary handling of personal data, accidental exposure in generated reports, and noncompliant processing of sensitive identifiers.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The font configuration imports and prescribes Noto Serif SC and Noto Sans SC, which are Simplified Chinese-specific typefaces, and the document title/content is entirely Chinese. This creates a locale-specific requirement without any opt-in, alternative language guidance, or justification that the skill is intended only for a Chinese-language context.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

This markdown file presents all instructions, headings, and examples exclusively in Chinese, which effectively forces a specific language on users. The policy allows locale constraints only when users are given a choice or when the restriction is clearly documented and justified, neither of which appears here.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The document declares lang="zh-CN", indicating a fixed Chinese locale. There is no natural-language explanation that the page is region-specific, nor any indication that users can select another language or locale.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The HTML loads executable JavaScript from a third-party CDN (Chart.js) and also pulls remote fonts, which creates an unnecessary outbound network dependency for a local analytics dashboard. If the CDN response is tampered with, blocked, or changed unexpectedly, the dashboard can execute untrusted code or leak usage metadata; in a skill that may process business order data, this enlarges the attack surface beyond what is needed.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The template loads Chart.js and Google Fonts from third-party CDNs at report render time, which creates an unnecessary external dependency and data egress path for a skill that is supposed to generate local business reports. Opening the generated HTML will contact external services, leaking metadata such as IP, user agent, timing, and potentially the existence of sensitive report usage; if a CDN resource is unavailable or compromised, report integrity and availability are also affected.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This code file contains natural-language strings that force a specific language for usage instructions and output context. Under the policy, locale or language constraints should be optional or clearly justified; here there is no user opt-in or explanation that the tool is intended only for a Chinese-speaking context.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The manifest description and operating instructions are written entirely in Chinese and present the skill behavior in that locale without indicating that users may choose another language. Under the stated policy, forcing a specific language without user opt-in is a natural-language policy concern unless the locale restriction is explicitly documented and justified.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

The page makes external requests to CDNs without any disclosure, so users may not realize that opening the dashboard causes connections to third parties. This is primarily a transparency and privacy issue: even if the requests do not directly send the order file contents, they expose metadata such as IP address, user agent, timing, and dashboard usage to external services.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The HTML template hard-codes lang="zh-CN", which is a natural-language locale choice embedded in the skill content. The document does not indicate that this template is region-specific or that users may opt into another language/locale, so it can violate the policy against forcing a specific locale without opt-in.

Content

No source excerpt is available for this finding.