Back to skill

Security audit

HK IPO Review Optimizer

Security checks for vulnerabilities and agentic risk

Overview

This skill’s review workflow is mostly coherent, but it ships a much broader financial-data and scoring CLI than the narrow skill instructions disclose.

Review before installing. Only use it if you are comfortable with a Hong Kong IPO tool that can write local review and scoring data, export review history, change active scoring parameters when suggestions are accepted, and includes broader market-data commands that may contact external finance sites. Prefer a locked dependency set before running uv.

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
runtime/hkipo-next/pyproject.toml:10
Finding

Unpinned and Unlocked Runtime Dependencies

Content
View full analysis

Vulnerability Details

File Location: runtime/hkipo-next/pyproject.toml:10-17
Vulnerability Type: Supply-chain exposure through mutable dependency resolution
Risk Level: Medium

Vulnerable Code

toml
dependencies = [
    "beautifulsoup4>=4.14.3",
    "httpx>=0.28.1",
    "lxml>=6.0.4",
    "opencc-python-reimplemented>=0.1.7",
    "pydantic>=2.13.0",
    "requests>=2.33.1",
]

The documented execution path in SKILL.md:20-24 invokes the project through uv:

bash
cd <skill_dir>
uv run --directory runtime/hkipo-next hkipo-next ...

Technical Analysis

The project does not include a uv.lock file, while every runtime dependency uses an open-ended minimum-version constraint. Consequently, a fresh uv run may resolve and install dependency versions that differ from those reviewed during this audit.

This does not prove that any listed dependency is currently malicious. It creates a supply-chain vulnerability because the effective executable dependency set can change after the Skill has been published and audited. A compromised package release, maintainer account, package registry, dependency mirror, or resolver configuration could introduce code that executes with the privileges of the user invoking the Skill.

Attack Path

  1. An attacker compromises a permitted dependency release channel, package maintainer account, configured Python package index, or dependency mirror.
  2. The attacker publishes a malicious version satisfying one or more >= constraints.
  3. A user runs the documented uv run command in an environment where dependencies are not already fixed and cached.
  4. uv resolves and downloads the attacker-controlled release because no reviewed lockfile or exact version constraint prevents selection.
  5. Malicious code executes during package installation, import, or CLI startup under the invoking user's account.

Impact Assessment

Successful ...[truncated 503 chars]

Remediation
View remediation

Remediation Suggestions

  1. Generate and commit a reviewed uv.lock file covering all direct and transitive dependencies.
  2. Change documented runtime commands to use frozen resolution, such as uv run --frozen, so execution fails rather than silently selecting unreviewed versions.
  3. Pin direct dependencies to exact reviewed versions where operationally practical.
  4. Require cryptographic hashes or equivalent integrity verification for downloaded artifacts.
  5. Use a trusted, explicitly configured package index or an internally controlled mirror.
  6. Add automated dependency vulnerability, provenance, and unexpected-version checks to the release process.
  7. Regenerate and review the lockfile through a controlled update process rather than allowing dependency changes during ordinary Skill execution.
Vulnerability Patterns
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • 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
Findings (150)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill metadata and documentation present a narrowly scoped post-decision review/tuning workflow, but the static findings consistently indicate materially broader behavior such as live market-data fetching, scraping multiple external sources, profile/watchlist/config management, parameter activation, and other undeclared operations. A description-behavior mismatch is dangerous because users or higher-level agents may grant trust, data access, or execution approval based on the declared purpose while the runtime performs unrelated networked and state-changing actions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill metadata and documentation present a narrowly scoped post-decision review/tuning workflow, but the static findings consistently indicate materially broader behavior such as live market-data fetching, scraping multiple external sources, profile/watchlist/config management, parameter activation, and other undeclared operations. A description-behavior mismatch is dangerous because users or higher-level agents may grant trust, data access, or execution approval based on the declared purpose while the runtime performs unrelated networked and state-changing actions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill metadata and documentation present a narrowly scoped post-decision review/tuning workflow, but the static findings consistently indicate materially broader behavior such as live market-data fetching, scraping multiple external sources, profile/watchlist/config management, parameter activation, and other undeclared operations. A description-behavior mismatch is dangerous because users or higher-level agents may grant trust, data access, or execution approval based on the declared purpose while the runtime performs unrelated networked and state-changing actions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill metadata and documentation present a narrowly scoped post-decision review/tuning workflow, but the static findings consistently indicate materially broader behavior such as live market-data fetching, scraping multiple external sources, profile/watchlist/config management, parameter activation, and other undeclared operations. A description-behavior mismatch is dangerous because users or higher-level agents may grant trust, data access, or execution approval based on the declared purpose while the runtime performs unrelated networked and state-changing actions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill metadata and documentation present a narrowly scoped post-decision review/tuning workflow, but the static findings consistently indicate materially broader behavior such as live market-data fetching, scraping multiple external sources, profile/watchlist/config management, parameter activation, and other undeclared operations. A description-behavior mismatch is dangerous because users or higher-level agents may grant trust, data access, or execution approval based on the declared purpose while the runtime performs unrelated networked and state-changing actions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill metadata and documentation present a narrowly scoped post-decision review/tuning workflow, but the static findings consistently indicate materially broader behavior such as live market-data fetching, scraping multiple external sources, profile/watchlist/config management, parameter activation, and other undeclared operations. A description-behavior mismatch is dangerous because users or higher-level agents may grant trust, data access, or execution approval based on the declared purpose while the runtime performs unrelated networked and state-changing actions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill metadata and documentation present a narrowly scoped post-decision review/tuning workflow, but the static findings consistently indicate materially broader behavior such as live market-data fetching, scraping multiple external sources, profile/watchlist/config management, parameter activation, and other undeclared operations. A description-behavior mismatch is dangerous because users or higher-level agents may grant trust, data access, or execution approval based on the declared purpose while the runtime performs unrelated networked and state-changing actions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill metadata and documentation present a narrowly scoped post-decision review/tuning workflow, but the static findings consistently indicate materially broader behavior such as live market-data fetching, scraping multiple external sources, profile/watchlist/config management, parameter activation, and other undeclared operations. A description-behavior mismatch is dangerous because users or higher-level agents may grant trust, data access, or execution approval based on the declared purpose while the runtime performs unrelated networked and state-changing actions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill metadata and documentation present a narrowly scoped post-decision review/tuning workflow, but the static findings consistently indicate materially broader behavior such as live market-data fetching, scraping multiple external sources, profile/watchlist/config management, parameter activation, and other undeclared operations. A description-behavior mismatch is dangerous because users or higher-level agents may grant trust, data access, or execution approval based on the declared purpose while the runtime performs unrelated networked and state-changing actions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill metadata and documentation present a narrowly scoped post-decision review/tuning workflow, but the static findings consistently indicate materially broader behavior such as live market-data fetching, scraping multiple external sources, profile/watchlist/config management, parameter activation, and other undeclared operations. A description-behavior mismatch is dangerous because users or higher-level agents may grant trust, data access, or execution approval based on the declared purpose while the runtime performs unrelated networked and state-changing actions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill metadata and documentation present a narrowly scoped post-decision review/tuning workflow, but the static findings consistently indicate materially broader behavior such as live market-data fetching, scraping multiple external sources, profile/watchlist/config management, parameter activation, and other undeclared operations. A description-behavior mismatch is dangerous because users or higher-level agents may grant trust, data access, or execution approval based on the declared purpose while the runtime performs unrelated networked and state-changing actions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill metadata and documentation present a narrowly scoped post-decision review/tuning workflow, but the static findings consistently indicate materially broader behavior such as live market-data fetching, scraping multiple external sources, profile/watchlist/config management, parameter activation, and other undeclared operations. A description-behavior mismatch is dangerous because users or higher-level agents may grant trust, data access, or execution approval based on the declared purpose while the runtime performs unrelated networked and state-changing actions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill metadata and documentation present a narrowly scoped post-decision review/tuning workflow, but the static findings consistently indicate materially broader behavior such as live market-data fetching, scraping multiple external sources, profile/watchlist/config management, parameter activation, and other undeclared operations. A description-behavior mismatch is dangerous because users or higher-level agents may grant trust, data access, or execution approval based on the declared purpose while the runtime performs unrelated networked and state-changing actions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill metadata and documentation present a narrowly scoped post-decision review/tuning workflow, but the static findings consistently indicate materially broader behavior such as live market-data fetching, scraping multiple external sources, profile/watchlist/config management, parameter activation, and other undeclared operations. A description-behavior mismatch is dangerous because users or higher-level agents may grant trust, data access, or execution approval based on the declared purpose while the runtime performs unrelated networked and state-changing actions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill metadata and documentation present a narrowly scoped post-decision review/tuning workflow, but the static findings consistently indicate materially broader behavior such as live market-data fetching, scraping multiple external sources, profile/watchlist/config management, parameter activation, and other undeclared operations. A description-behavior mismatch is dangerous because users or higher-level agents may grant trust, data access, or execution approval based on the declared purpose while the runtime performs unrelated networked and state-changing actions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill metadata and documentation present a narrowly scoped post-decision review/tuning workflow, but the static findings consistently indicate materially broader behavior such as live market-data fetching, scraping multiple external sources, profile/watchlist/config management, parameter activation, and other undeclared operations. A description-behavior mismatch is dangerous because users or higher-level agents may grant trust, data access, or execution approval based on the declared purpose while the runtime performs unrelated networked and state-changing actions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill metadata and documentation present a narrowly scoped post-decision review/tuning workflow, but the static findings consistently indicate materially broader behavior such as live market-data fetching, scraping multiple external sources, profile/watchlist/config management, parameter activation, and other undeclared operations. A description-behavior mismatch is dangerous because users or higher-level agents may grant trust, data access, or execution approval based on the declared purpose while the runtime performs unrelated networked and state-changing actions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill metadata and documentation present a narrowly scoped post-decision review/tuning workflow, but the static findings consistently indicate materially broader behavior such as live market-data fetching, scraping multiple external sources, profile/watchlist/config management, parameter activation, and other undeclared operations. A description-behavior mismatch is dangerous because users or higher-level agents may grant trust, data access, or execution approval based on the declared purpose while the runtime performs unrelated networked and state-changing actions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill metadata and documentation present a narrowly scoped post-decision review/tuning workflow, but the static findings consistently indicate materially broader behavior such as live market-data fetching, scraping multiple external sources, profile/watchlist/config management, parameter activation, and other undeclared operations. A description-behavior mismatch is dangerous because users or higher-level agents may grant trust, data access, or execution approval based on the declared purpose while the runtime performs unrelated networked and state-changing actions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill metadata and documentation present a narrowly scoped post-decision review/tuning workflow, but the static findings consistently indicate materially broader behavior such as live market-data fetching, scraping multiple external sources, profile/watchlist/config management, parameter activation, and other undeclared operations. A description-behavior mismatch is dangerous because users or higher-level agents may grant trust, data access, or execution approval based on the declared purpose while the runtime performs unrelated networked and state-changing actions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill metadata and documentation present a narrowly scoped post-decision review/tuning workflow, but the static findings consistently indicate materially broader behavior such as live market-data fetching, scraping multiple external sources, profile/watchlist/config management, parameter activation, and other undeclared operations. A description-behavior mismatch is dangerous because users or higher-level agents may grant trust, data access, or execution approval based on the declared purpose while the runtime performs unrelated networked and state-changing actions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill metadata and documentation present a narrowly scoped post-decision review/tuning workflow, but the static findings consistently indicate materially broader behavior such as live market-data fetching, scraping multiple external sources, profile/watchlist/config management, parameter activation, and other undeclared operations. A description-behavior mismatch is dangerous because users or higher-level agents may grant trust, data access, or execution approval based on the declared purpose while the runtime performs unrelated networked and state-changing actions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill metadata and documentation present a narrowly scoped post-decision review/tuning workflow, but the static findings consistently indicate materially broader behavior such as live market-data fetching, scraping multiple external sources, profile/watchlist/config management, parameter activation, and other undeclared operations. A description-behavior mismatch is dangerous because users or higher-level agents may grant trust, data access, or execution approval based on the declared purpose while the runtime performs unrelated networked and state-changing actions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill metadata and documentation present a narrowly scoped post-decision review/tuning workflow, but the static findings consistently indicate materially broader behavior such as live market-data fetching, scraping multiple external sources, profile/watchlist/config management, parameter activation, and other undeclared operations. A description-behavior mismatch is dangerous because users or higher-level agents may grant trust, data access, or execution approval based on the declared purpose while the runtime performs unrelated networked and state-changing actions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill metadata and documentation present a narrowly scoped post-decision review/tuning workflow, but the static findings consistently indicate materially broader behavior such as live market-data fetching, scraping multiple external sources, profile/watchlist/config management, parameter activation, and other undeclared operations. A description-behavior mismatch is dangerous because users or higher-level agents may grant trust, data access, or execution approval based on the declared purpose while the runtime performs unrelated networked and state-changing actions.

Content

No source excerpt is available for this finding.