Back to skill

Security audit

fund-screening

Security checks for vulnerabilities and agentic risk

Overview

This fund-screening skill is coherent and purpose-aligned, with disclosed web research and local result files but some practical cautions around financial advice, file saving, and runtime dependencies.

Install this if you want a Chinese-language assistant workflow for screening and tracking mutual funds. Treat any fund recommendations as informational only, confirm before allowing it to save or update local investment records, and prefer a locked or sandboxed Python environment when processing XLSX files.

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
SKILL.md:106
Finding

Unpinned Third-Party Dependencies Executed at Runtime

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, line 106
Vulnerability Type: T08: Insecure Dependencies
Risk Level: Medium

Vulnerable Code

markdown
读取 XLSX 使用 `uv run --with openpyxl python3` 或 `uv run --with pandas python3`。

English translation: “To read XLSX files, use uv run --with openpyxl python3 or uv run --with pandas python3.”

Technical Analysis

The Skill instructs the Agent to resolve and execute openpyxl or pandas dynamically through uv without specifying exact versions, hashes, a lockfile, or a trusted package-index configuration.

This makes execution dependent on package artifacts available when the command is run rather than on dependencies fixed and reviewed with the Skill. If a package release, configured package index, dependency, or resolver configuration is compromised, malicious code could execute during dependency installation or import.

The audit found no evidence that openpyxl or pandas is currently malicious. The issue is the unsafe, unpinned dependency-resolution mechanism and its resulting supply-chain exposure.

Attack Path

  1. An attacker compromises a package release, transitive dependency, configured Python package index, or resolver configuration used by uv.
  2. The Agent follows the instruction in SKILL.md to process an XLSX file.
  3. uv dynamically resolves and retrieves the unpinned package and its dependencies.
  4. Malicious package code executes during installation or when imported by the Python process.
  5. The code runs with the permissions and environmental access of the Agent process.
  6. It can access files, environment variables, and network resources available to that process, including reachable workspace investment records.

Impact Assessment

Successful exploitation could provide arbitrary code execution with the Agent process's existing privileges. The accessible scope could include:

  • Reading or modifying proj ...[truncated 543 chars]
Remediation
View remediation

Remediation Suggestions

  1. Declare dependencies in a reviewed pyproject.toml and pin exact versions in a committed uv.lock.
  2. Require locked execution, preventing the resolver from silently selecting newer package versions.
  3. Verify package artifacts with hashes and obtain them only from an explicitly configured, trusted package index.
  4. Review and pin transitive dependencies as well as direct dependencies.
  5. Avoid runtime package installation where possible; use a prebuilt, scanned environment containing approved versions.
  6. Run spreadsheet processing in a sandbox with least-privilege filesystem access, no unnecessary credentials, and restricted outbound networking.
  7. Treat XLSX files as untrusted input and keep spreadsheet-processing libraries updated through a controlled dependency-review process.
  8. Add automated dependency scanning and lockfile-integrity checks to the release workflow.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (4)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The trigger conditions are overly broad and can cause this skill to activate for generic fund recommendation, analysis, or comparison requests even when the user did not explicitly ask to use this workflow. In a skill that directs web retrieval, portfolio construction, and file-writing, over-activation increases the chance of unintended actions, inappropriate financial guidance, and unnecessary access to workspace or external tools.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The instruction "所有输出使用中文" forces a specific language for all outputs. This is a natural-language policy concern because it removes user language choice and does not present the locale requirement as optional or justified.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill instructs saving results into local workspace files by default, but does not require user consent or warn that existing data may be modified or new artifacts created. In an agent setting, this can lead to unauthorized persistence, overwriting prior records, or silent accumulation of sensitive financial analysis data in the workspace.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

This markdown file contains user-facing instructional content solely in Chinese and does not mention any language choice, fallback, or opt-in. Under the language/locale policy rule, forcing a specific language without user opt-in can be a natural-language policy violation.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.