Back to skill

Security audit

MiroFish Predict

Security checks for vulnerabilities and agentic risk

Overview

The skill appears purpose-aligned for MiroFish simulations, but it installs mutable external code, starts an unpinned Docker-backed backend, uses an API key, and has broad triggers that could cause unexpected token spend.

Install only if you trust the MiroFish npm package and Docker image source. Configure the API key deliberately, watch token costs, start the backend only for intentional simulations, and prefer a pinned or reviewed CLI/container version before using it with sensitive files or paid credentials.

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:15
Finding
Unpinned and Unreviewed External Executable Dependencies<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 15–20 **Vulnerability Type**: Unpinned npm dependency and indirectly retrieved Docker component **Risk Level**: Medium ### Vulnerable Code ```yaml "install": [ { "id": "mirofish-npm", "kind": "node", "package": "mirofish-cli", "bins": ["mirofish"], "label": "Install MiroFish CLI (npm)", }, ], ``` The related Docker retrieval behavior is documented at `SKILL.md`, lines 43–45: ```bash # 1. Start (automatically pulls the Docker image on first use) mirofish serve start # If ~/.mirofish/.env does not exist, a template is generated for the API key ``` ### Technical Analysis The Skill installs `mirofish-cli` from npm without specifying an exact version or package integrity hash. The installed binary is then trusted to execute all documented operations. The artifact contains only documentation and metadata; it does not include the npm package's source code, lockfile, resolved integrity metadata, or the Docker image definition needed to audit the effective runtime behavior. The CLI also retrieves a Docker image on first use, but the Skill does not identify or pin that image to an immutable digest. Consequently, both the npm package and the container component may change independently after this Skill has been reviewed. This creates a supply-chain trust boundary in which externally mutable code is installed and executed locally. There is no evidence in the audited files that either dependency is currently malicious, so this finding concerns unsafe dependency controls rather than confirmed malicious behavior. ### Attack Path 1. A user installs or activates the Skill. 2. The installation mechanism resolves the unspecified current release of `mirofish-cli` from npm. 3. npm package lifecycle code or the installed `mirofish` executable runs with the user's privileges. 4. The user invokes `mirofish serve start` or `mirofish predict`. 5. The unaudited CLI r ...[truncated 1253 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin `mirofish-cli` to an exact reviewed version rather than allowing unconstrained resolution. 2. Record and verify the npm package integrity hash through a lockfile or equivalent integrity mechanism. 3. Verify and document the expected npm publisher, source repository, package provenance, and release-signing process. 4. Review package lifecycle scripts and disable them during installation where they are unnecessary. 5. Explicitly identify the Docker registry, repository, and image used by the CLI. 6. Pin the Docker image by immutable digest rather than a mutable tag. 7. Verify signatures or provenance attestations for both the npm package and Docker image before execution. 8. Run the CLI and container with the minimum required privileges. Do not mount the Docker socket, sensitive host directories, or unrelated credential locations into the container. 9. Prefer runtime secret injection for `LLM_API_KEY`. If `~/.mirofish/.env` is used, create it with permissions no broader than `0600`, exclude it from backups and source control where appropriate, and ensure neither the CLI nor container logs its contents. 10. Provide the resolved CLI and container source or reproducible build information with the Skill so their behavior can be audited together. ]]>
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • 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 (1)

Vague Triggers

Medium
Confidence
94% confidence
Finding
The skill description uses very broad activation triggers such as '推演', '預測', '模擬', and '如果…會怎樣', which are common in ordinary user requests and can cause the skill to activate unexpectedly. Because this skill launches a Docker-backed simulation workflow and may consume an API key and large amounts of LLM tokens, overbroad triggering increases the risk of unintended execution, cost, and surprise side effects.

Static analysis

No suspicious patterns detected.