Back to skill

Security audit

financial-report

Security checks for vulnerabilities and agentic risk

Overview

The skill is mainly a local financial analysis tool, but it needs review because it recommends running an unverified remote installer and loads third-party browser code that can access entered financial data.

Review before installing. Do not run the README's curl | sh command unless you independently trust and verify that installer; use the web upload path or a verified, pinned installer instead. Treat any financial data entered into the HTML tool as visible to the externally loaded charting script, and be aware that the upgrade buttons open a third-party site. Use the analysis as informational only, not as investment advice.

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

Error
Location
README.md:25
Finding
Unverified Remote Installer Executed Directly by a Shell## Vulnerability Details **File Location**: `README.md:25` **Vulnerability Type**: Remote payload retrieval and execution **Risk Level**: Critical ```bash curl -fsSL https://skillhub.cn/cli | sh ``` ### Technical Analysis This command retrieves content from an external URL and immediately passes it to a shell. The downloaded payload is not included in the audited package and can change independently after the Skill has been reviewed. There is no version pinning, cryptographic signature validation, checksum verification, or opportunity to inspect the script before execution. HTTPS protects the connection in transit but does not establish that the current or future response is safe. Compromise of the website, hosting environment, DNS resolution, certificate issuance process, or release pipeline could cause arbitrary shell commands to be delivered. Direct remote shell execution exceeds the minimum privileges required by the declared financial-analysis functionality. The Skill itself is a static HTML-based analyzer, and publishing its package does not inherently require executing an unaudited remote script. ### Attack Path 1. An attacker compromises the `skillhub.cn` server, its deployment pipeline, or another part of the script-delivery infrastructure. 2. The attacker modifies the response returned from `https://skillhub.cn/cli`. 3. A user follows the README installation instructions. 4. `curl` retrieves the modified response. 5. The pipe sends the response directly to `sh` without verification or review. 6. The malicious commands execute with all privileges available to the user who invoked the command. ### Impact Assessment The remote payload can execute arbitrary commands under the invoking account. It could read or modify accessible files, steal credentials and API tokens, alter shell configuration, install persistence, download additional payloads, or tamper with projects and published Skill packages. If the co ...[truncated 273 chars]
Remediation
## Remediation Suggestions 1. Remove the `curl | sh` installation instruction. 2. Distribute the CLI through a trusted package registry using a fixed, documented version. 3. If a standalone installer is necessary, instruct users to download a versioned artifact separately rather than piping it into a shell. 4. Publish a cryptographic checksum and a signature through an independent trusted channel. 5. Require users to verify both the checksum and signature before execution. 6. Make the installer source available for inspection and document the files, commands, network destinations, and permissions it uses. 7. Run installation with ordinary user privileges unless a specific privileged operation is strictly necessary. 8. Avoid requesting `sudo` for the complete installer; isolate and document any operation that genuinely requires elevation.

T08 · Insecure Dependencies

Warning
Location
scripts/financial-analyzer.html:7
Finding
Externally Hosted Executable JavaScript Loaded Without Integrity Verification## Vulnerability Details **File Location**: `scripts/financial-analyzer.html:7` **Vulnerability Type**: Insecure third-party dependency loading **Risk Level**: Medium ```html <script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.4/dist/chart.umd.min.js"></script> ``` ### Technical Analysis The local financial-analysis page loads and executes JavaScript from a third-party CDN whenever the file is opened with network access. Although the dependency specifies Chart.js version `4.4.4`, the script element has no Subresource Integrity hash. The browser therefore has no cryptographic mechanism to confirm that the received content matches the reviewed Chart.js release. A malicious or compromised CDN response would execute with the same browser-page privileges as the analyzer's own JavaScript. Because the page accepts financial information through form controls, injected dependency code could read that data, manipulate calculated metrics, alter charts, or initiate outbound network requests. No active exfiltration was found in the bundled HTML. The risk arises from trusting externally supplied executable content at runtime. ### Attack Path 1. An attacker compromises the CDN, its package-serving infrastructure, the relevant package artifact, or another trusted delivery component. 2. The attacker causes the Chart.js URL to return modified JavaScript. 3. A user opens `scripts/financial-analyzer.html` while connected to the network. 4. The browser retrieves the modified script without checking an expected integrity digest. 5. The malicious script executes inside the analyzer page. 6. It reads entered financial data, changes displayed results, or sends accessible data to an attacker-controlled endpoint. ### Impact Assessment Exploitation provides arbitrary JavaScript execution in the context of the analyzer page. This can compromise the confidentiality and integrity of financial data entered into that page and undermine the relia ...[truncated 353 chars]
Remediation
## Remediation Suggestions 1. Prefer bundling a reviewed copy of Chart.js inside the Skill package and load it from a relative local path. 2. Record the dependency version and verified checksum so future updates can be reviewed reproducibly. 3. If CDN delivery must be retained, add a valid Subresource Integrity digest and `crossorigin="anonymous"` to the script element. 4. Generate the integrity digest from the exact reviewed artifact and update it only through a controlled dependency-review process. 5. Add a restrictive Content Security Policy that permits scripts only from explicitly approved sources and restricts outbound connections. 6. Re-audit dependency updates before changing either the bundled file or integrity digest.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
Findings (13)

External Script Fetching

High
Category
Supply Chain
Content
### 方式二:CLI 发布
```bash
# 安装 CLI(如果还没安装)
curl -fsSL https://skillhub.cn/cli | sh

# 发布技能
skillhub publish ./financial-analyzer-tool.zip
Confidence
97% confidence
Finding
The README instructs users to pipe a remote script directly into a shell via curl | sh, which executes unverified code from the network immediately on the local system. If the remote endpoint, transport, DNS, or hosting account is compromised, users could be exposed to arbitrary command execution and full environment compromise.

Chaining Abuse

High
Category
Tool Misuse
Content
### 方式二:CLI 发布
```bash
# 安装 CLI(如果还没安装)
curl -fsSL https://skillhub.cn/cli | sh

# 发布技能
skillhub publish ./financial-analyzer-tool.zip
Confidence
98% confidence
Finding
The shell pipe creates an unsafe command chain that prevents users from inspecting the downloaded content before execution and amplifies the risk of command injection or malicious installer behavior. In a skill distribution README, this is especially dangerous because it normalizes a high-risk installation pattern that less technical users may trust and run blindly.

Ae1

High
Category
analysis-evasion
Content
本技能包含一个交互式 HTML 财务分析工具(`scripts/financial-analyzer.html`),提供:
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Ae1

High
Category
analysis-evasion
Content
本技能包含一个交互式 HTML 财务分析工具(`scripts/financial-analyzer.html`),提供:
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Hidden Instructions

High
Category
Prompt Injection
Content
</div>

    <div class="container">
        <!-- Navigation -->
        <div class="tabs">
            <button class="tab active" onclick="switchTab('input')">📝 数据录入</button>
            <button class="tab" onclick="switchTab('results')">📊 分析结果</button>
Confidence
70% confidence
Finding
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Vague Triggers

Medium
Confidence
91% confidence
Finding
该 README 将“看财报”“制作财务报告”“业绩预测”等自然语言短语列为自动触发条件,但没有说明触发所需上下文、精确短语范围或排除条件。此类表述覆盖面较广,可能与普通办公或泛咨询场景重叠,从而引发非预期调用。

Vague Triggers

Medium
Confidence
87% confidence
Finding
The trigger description is broad enough to activate on general finance-related requests such as financial analysis, report generation, or company health review, which can cause the skill to be selected outside its narrowly intended use. Over-broad routing increases the chance of unintended tool invocation, irrelevant data handling, and responses that drift toward regulated or excluded domains such as investment advice.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
The document declares zh-CN and all visible interface text is in Chinese, which imposes a specific language/locale on users. Under the stated policy, this is a natural-language locale constraint unless the skill offers opt-in language selection or clearly documents a justified region-specific limitation.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The page loads Chart.js from a third-party CDN, which causes external network access and creates a supply-chain trust dependency. If the CDN, package, or delivery path is compromised, malicious JavaScript could execute in the page context and access all financial data entered by the user.

Natural-Language Policy Violations

Low
Confidence
82% confidence
Finding
The skill description and all user-facing templates are presented entirely in Chinese, and no opt-in or language selection is offered. Under the policy, forcing a specific language without user choice can be a natural-language locale policy issue unless the restriction is clearly documented and justified.

Context-Inappropriate Capability

Low
Confidence
95% confidence
Finding
The manifest describes a tool for analyzing and visualizing financial statements, but this HTML also embeds calls to visit an external commercial site to 'unlock pro' features. Linking users to a marketing/upgrade destination is not required to perform local financial analysis and is therefore an unjustified capability relative to the stated purpose.

Missing User Warnings

Low
Confidence
84% confidence
Finding
The page includes a prominent upgrade link to an external domain, which can transfer the user to a third-party website. There is no user-facing warning or explanatory text indicating that interaction with this feature leaves the local tool context and opens an external site.

Missing User Warnings

Low
Confidence
84% confidence
Finding
This button is a user-visible action that navigates to the same external domain, but the interface does not disclose that it opens a third-party website. For safety and transparency, externally navigating actions should be clearly identified so users understand the context switch.

Static analysis

No suspicious patterns detected.