Back to skill

Security audit

A Stock Research

Security checks for vulnerabilities and agentic risk

Overview

The skill’s stock-analysis purpose is clear, but it repeatedly tells users to run unpinned third-party npm commands that execute code outside the reviewed artifact.

Review and pin exact package versions before installing or running this skill. Prefer audited local installs or a locked dependency manifest, and run the tools in a restricted environment without unnecessary credentials or sensitive 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

Error
Location
SKILL.md:70
Finding

Execution of Unpinned Third-Party Packages Through npx

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:70-160; _meta.json:37-40
Vulnerability Type: Unpinned runtime dependencies and unsafe package execution
Risk Level: High

Evidence

SKILL.md:88-94:

bash
# Add stocks to the watchlist
npx stock-watcher add 600519 000001

# Display the watchlist
npx stock-watcher list

# Obtain a performance summary
npx stock-watcher summary

_meta.json:37-40:

json
"akshare": "npx akshare-stock get_price/financials/sector_info",
"china": "npx china-stock-analysis query/analyze/full_report",
"watcher": "npx stock-watcher add/list/summary",
"analysis": "npx stock-analysis portfolio/sentiment"

Additional unpinned invocations of the same packages appear in SKILL.md:70-82, SKILL.md:100-101, SKILL.md:122-146, and SKILL.md:155-160.

Technical Analysis

The skill instructs users or agents to execute akshare-stock, china-stock-analysis, stock-watcher, and stock-analysis directly through npx. None of these commands specifies an exact package version. The submitted project also contains no package lockfile, integrity hashes, vendored implementation, or source code for the referenced packages.

When a requested package is not already available locally, npx can retrieve it from the configured package registry and execute its lifecycle or command-line code. Because the selected package version and package contents can change after this skill has been audited, the code ultimately executed is outside the reviewed artifact. Package-owner compromise, malicious version publication, registry compromise, or dependency confusion could therefore turn the documented workflow into an arbitrary-code execution channel.

The statement that the packages are already installed does not mitigate this issue within the submitted artifact. The listed external installation directory and package implementations are absent from the project and could not be ...[truncated 1597 chars]

Remediation
View remediation

Remediation Suggestions

  1. Pin every package to a specifically reviewed immutable version, for example:
    bash
    npx --yes stock-watcher@1.2.3 summary
    
  2. Verify the package names, publishers, source repositories, release provenance, and ownership before documenting or executing them.
  3. Manage the packages through a committed manifest and lockfile containing registry-resolved versions and integrity hashes rather than resolving current releases at each invocation.
  4. Prefer vendoring reviewed implementations or including auditable source code in the skill package.
  5. Use a trusted private registry or an allowlisted proxy that only serves approved package versions.
  6. Disable dependency lifecycle scripts where operationally possible, such as by installing reviewed dependencies with --ignore-scripts.
  7. Execute financial-analysis packages in a sandbox or container with restricted filesystem access, no unnecessary credentials, and limited outbound networking.
  8. Validate package integrity and provenance in CI before publishing the skill, and repeat the audit whenever a pinned dependency is upgraded.
  9. Remove or clearly qualify claims that dependencies are installed unless their exact installed versions and verified locations are included in the auditable artifact.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (29)

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The manifest description and the body of SKILL.md consistently require Chinese language content and examples, but there is no indication that users can opt into another language. This can violate a language/locale policy when a skill forces a specific language without user choice or documented justification.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

The skill instructs users to run npx akshare-stock without pinning an exact package version. npx may fetch the latest published package at execution time, so a compromised maintainer account, dependency-chain attack, or malicious new release could cause arbitrary code execution on the host.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

The command references npx china-stock-analysis without a pinned version, which makes execution depend on whatever package version is current in the registry. That creates supply-chain risk and can lead to arbitrary code execution if the package or one of its dependencies is replaced or updated maliciously.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

This npx akshare-stock invocation is unpinned, so the skill may execute a different package version over time. Because npx can download and run code on demand, this exposes users to supply-chain compromise and unexpected code execution.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

The skill tells users to run npx china-stock-analysis without an exact version, allowing a future registry state to determine what code executes. If the upstream package is compromised, the user's environment could run attacker-controlled code.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

Using npx stock-watcher without version pinning creates a direct supply-chain execution path. The package fetched at runtime may change, so the skill cannot guarantee the reviewed code is what users will execute later.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

This unpinned npx stock-watcher command can pull the latest package at runtime, which is a standard package supply-chain risk. A malicious or compromised release could execute arbitrary code with the user's privileges.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

The skill repeats an unpinned npx stock-watcher usage pattern, again allowing mutable remote code execution via the npm registry. Repetition increases exposure because multiple workflow steps rely on dynamic package resolution.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

The command uses npx stock-analysis without version pinning, meaning the runtime code may differ from the version the author originally tested. This is dangerous because npx executes package lifecycle and entrypoint code obtained from the registry.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

A second unpinned npx stock-analysis example carries the same supply-chain execution risk. If the package or any transitive dependency is maliciously updated, invoking the command can compromise the host or leak credentials and files.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

The workflow example invokes npx stock-watcher without a pinned version, causing code provenance to vary over time. In an agent skill, this is more dangerous because users may treat the documented workflow as trusted automation and execute it verbatim.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

This unpinned npx akshare-stock command introduces mutable supply-chain behavior into the recommended monitoring flow. Because it is presented as a normal operational step, users are likely to run it without reviewing what code is fetched.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

The npx china-stock-analysis command is not pinned to a specific release, allowing future registry changes to alter executed code. That creates a real supply-chain vulnerability with potential arbitrary code execution in the local environment.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

The documented npx stock-analysis usage is unpinned, so users may execute an unintended or malicious package version. Since this sits in a recommended workflow, the trust signal of the skill increases the likelihood of exploitation.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

The deep-research workflow includes npx akshare-stock without version pinning, making runtime behavior dependent on external registry state. This can expose the user system to malicious package releases or dependency confusion-like outcomes.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

An unpinned npx china-stock-analysis command allows execution of whatever version is current at invocation time. In practice, that means an attacker who compromises the package publishing path could deliver arbitrary code through a trusted-looking analytics workflow.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

The npx stock-analysis call is unpinned, preserving the same supply-chain code-execution risk seen elsewhere in the file. Because the command may process portfolio and market data, compromise could also expose financial research context and local files.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

This npx china-stock-analysis example is another unpinned remote package execution step. Repeated occurrences make the skill broadly dependent on mutable third-party registry content, increasing aggregate attack surface.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

The quick-reference section includes npx akshare-stock without a version, which is especially risky because users may copy-paste these concise commands directly. That exposes them to arbitrary code execution through package registry compromise or malicious updates.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

The npx china-stock-analysis quick-reference command is unpinned and therefore subject to registry drift and supply-chain compromise. The brevity and convenience of quick-reference commands make users less likely to scrutinize them before execution.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

The quick-reference entry for npx stock-watcher add is unpinned, allowing execution of mutable third-party code. Because it is presented as a standard operational command, it may be run in privileged local environments without review.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

This npx stock-watcher list example is unpinned, so the code path executed can change over time without changes to the skill file. That creates a real and preventable supply-chain exposure.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

The npx stock-watcher summary quick-reference command is also unpinned, carrying the same arbitrary code execution risk through package updates or compromise. Multiple such entries normalize unsafe operational behavior.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

The quick-reference entry for npx stock-analysis portfolio lacks a version pin, allowing a future or malicious registry version to execute. In a skill intended for routine use, that trust context increases the likelihood the unsafe command is followed exactly.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
96% confidence
Finding

The skill invokes an npm package via npx without pinning an exact version, which means execution may resolve to whatever package version is current at runtime. This creates a supply-chain risk: a compromised maintainer account, malicious update, typosquat, or unexpected breaking change could cause arbitrary code execution when the command is run.

Content

No source excerpt is available for this finding.