Back to skill

Security audit

ENI收割者v14

Security checks for vulnerabilities and agentic risk

Overview

This skill fetches public A-share market data through AkShare and filters it, with some poor wording and dependency hygiene but no evidence of hidden persistence, credential access, exfiltration, or destructive behavior.

Before installing, treat this as a live market-data helper that may make outbound AkShare data requests and pause briefly before returning results. Prefer running it in a normal least-privileged environment, and ask the publisher to pin akshare and pandas versions and replace the 'stealth' wording with clear network-access disclosure.

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
requirements.txt:1
Finding

Unpinned Third-Party Dependencies Allow Unreviewed Package Versions

Content
View full analysis

Vulnerability Details

File Location: requirements.txt, lines 1-2
Vulnerability Type: Unconstrained third-party dependencies
Risk Level: Medium

Vulnerable Code

text
akshare
pandas

Technical Analysis

The project declares akshare and pandas without exact versions or integrity hashes. Consequently, each installation can resolve to the newest version available at that time rather than a version reviewed and tested by the project maintainers.

This creates a supply-chain risk because a compromised, malicious, or unexpectedly incompatible future release could be installed automatically. Python packages may execute code during installation or when imported. The Skill imports both packages in SKILL.md, so any malicious runtime initialization shipped by a resolved dependency would execute in the Skill's process context.

The audit did not establish that the current official releases of these packages are malicious. The confirmed weakness is the absence of dependency version and integrity controls.

Attack Path

  1. An attacker compromises an upstream dependency release or its package publishing account.
  2. The attacker publishes a malicious version under the legitimate package name.
  3. A user installs the project dependencies from requirements.txt.
  4. Because no version or hash is specified, the package installer resolves the attacker-controlled release.
  5. Malicious installation hooks or import-time code execute with the privileges of the user or Agent running the installation or Skill.

Impact Assessment

Successful exploitation could allow arbitrary code execution with the privileges of the process installing or running the Skill. Depending on that account's permissions, the malicious dependency could access readable files, environment variables, credentials, network resources, and data available to the Agent. The potential scope is the host environment and resources accessible to that process; this project itself doe ...[truncated 50 chars]

Remediation
View remediation

Remediation Suggestions

  1. Pin each direct dependency to an exact, reviewed version, for example:

    text
    akshare==<reviewed-version>
    pandas==<reviewed-version>
    
  2. Generate a lock file containing all transitive dependencies so installations remain reproducible.

  3. Require package integrity hashes and install with hash verification, such as pip install --require-hashes -r requirements.txt.

  4. Retrieve packages only from an explicitly configured, trusted package index.

  5. Review dependency updates before modifying the lock file, including release changes, package provenance, and known vulnerability reports.

  6. Run installation and execution in an isolated, least-privileged environment without unnecessary credentials or filesystem access.

Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (6)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill performs external market-data requests and intentionally obscures that behavior with 'stealth' framing and randomized delays, but the markdown description does not clearly disclose the network activity. This reduces user transparency and can cause an agent operator to invoke outbound requests they did not knowingly approve.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

SQP-3 applies to all file types, including markdown files containing embedded code and string literals. The docstring text is written in Chinese with no indication that language is selectable or contextually required, which can violate language/locale policy when the skill does not offer user opt-in or alternatives.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

The inline comment says the code is maintaining concealment and avoiding node fluctuation, and the top-level description claims 'stealth data fetching with randomized delays.' In reality, the implementation simply sleeps for 5–10 seconds and then performs a standard library call, so the documentation overstates and mischaracterizes what the code actually does.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
94% confidence
Finding

The dependency 'akshare' is unpinned, so installs may resolve to different versions over time, including buggy or compromised releases. This weakens build reproducibility and supply-chain control, making future deployments harder to audit and potentially exposing consumers to newly introduced vulnerabilities.

Content

Scanner excerpt · requirements.txt (reported line 1)May include surrounding context.

text
akshare
pandas

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
97% confidence
Finding

The dependency 'pandas' is also unpinned, which allows package resolution to drift between environments and over time. This can unexpectedly introduce security fixes or, more dangerously, vulnerable or incompatible versions, reducing the integrity and reproducibility of the environment.

Content

Scanner excerpt · requirements.txt (reported line 2)May include surrounding context.

text
akshare
pandas

Unverifiable Dependency: pandas has 1 known advisory(ies) (CVE-2020-13091 (** DISPUTED ** pandas through 1.0.3 can unserialize and execute commands from an)), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
73% confidence
Finding

The manifest does not pin a pandas version, and pandas has at least one disputed historical advisory affecting some releases. Because the version is unspecified, it is not possible to verify whether installation will select an affected release, creating avoidable uncertainty around known security exposure.

Content

No source excerpt is available for this finding.