Back to skill

Security audit

Financial Analysis

Security checks for vulnerabilities and agentic risk

Overview

This is a straightforward financial-analysis skill that fetches public market data and does not show hidden, destructive, or credential-seeking behavior.

Install this in an isolated Python environment and consider pinning dependency versions before use. Review the Chinese documentation or translate it if needed, and treat valuation outputs and buy/hold/sell labels as informational calculations, not professional financial advice.

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:49
Finding

Unpinned Third-Party Dependencies Permit Supply-Chain Risk

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:49 and skill.json:7
Vulnerability Type: Unpinned third-party dependencies
Risk Level: Medium

The installation documentation and package metadata declare third-party dependencies without fixed versions or integrity hashes.

bash
pip install akshare pandas numpy
json
"dependencies": ["akshare", "pandas", "numpy"],

Technical Analysis

The installation command allows the package manager to resolve the latest compatible releases of the listed packages and their transitive dependencies from the configured package index. The project does not provide a lockfile, exact version constraints, package hashes, or a trusted repository configuration.

Consequently, the code installed by this command can change without any modification to the audited project. If a listed dependency or one of its transitive dependencies is compromised, taken over, or replaced through package-index or dependency-confusion attacks, malicious installation hooks or imported module code could execute in the user's environment.

The reviewed project does not itself contain malicious dependency code. Exploitation therefore depends on compromise or manipulation of the external package supply chain.

Attack Path

  1. An attacker compromises a declared package, one of its transitive dependencies, or the package source used by the victim.
  2. The attacker publishes a malicious release that satisfies unconstrained dependency resolution.
  3. A user follows the documented pip install akshare pandas numpy command.
  4. The package manager selects and downloads the attacker-controlled release.
  5. Malicious package installation logic or module initialization code executes with the privileges of the user or automation account performing installation.
  6. The attacker may access data and resources available to that account or modify the affected Python environment.

Impact Assessment

...[truncated 559 chars]

Remediation
View remediation

Remediation Suggestions

  1. Pin every direct dependency to a reviewed exact version, for example using package==version.
  2. Generate and commit a lockfile that records all transitive dependency versions.
  3. Require cryptographic hashes during installation, such as with a hash-locked requirements file and pip install --require-hashes.
  4. Install packages only from an explicitly configured and trusted package index or internal artifact repository.
  5. Add automated dependency vulnerability, provenance, and license scanning to the release process.
  6. Review and update dependency pins through a controlled process rather than resolving mutable latest releases during deployment.
  7. Install and execute the skill in an isolated, least-privileged virtual environment or container without unnecessary credentials or filesystem access.
  8. Keep skill.json, installation documentation, and the lockfile synchronized so consumers cannot bypass the secured dependency specification.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • 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
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (3)

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill description is entirely in Chinese, which forces a language choice on users without opt-in and can reduce transparency for users or reviewers who do not read Chinese. In a security-sensitive ecosystem, language exclusivity can hide important usage details, limitations, or risks from part of the audience, though this file does not contain obviously malicious content.

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 includes its primary natural-language documentation and several user-facing outputs only in Chinese, which effectively forces a specific language for users of the skill. The policy allows locale constraints only when they are documented and justified or when users are given a choice, 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
92% confidence
Finding

The manifest description at L4 is written entirely in Chinese, which indicates a language-specific presentation without any visible opt-in, alternative locale, or justification that the skill is region-specific. Under the policy, language constraints should either offer user choice or be clearly documented as necessary.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.