Back to skill

Security audit

Supernal Interface CLI

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly coherent for a testing and MCP setup CLI, but it asks users to install and run a globally available third-party executable that can persistently change project, IDE, MCP, and agent configuration without enough scoping guidance.

Review this before installing. Use an isolated project or version-controlled checkout first, prefer dry-run or scan-only modes, avoid --force, --inject, --migrate, --git-commit, --skip-test, setup-mcp, and setup-claude unless you specifically intend those changes, and pin or verify the npm package version before global installation.

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:9
Finding
Unpinned Global Installation of a Third-Party Executable Package## Vulnerability Details **File Location**: `SKILL.md`, lines 9–13 **Vulnerability Type**: `T08: Insecure Dependencies` **Risk Level**: Medium **Vulnerable Code Snippet**: ```markdown ## Installation ```bash npm install -g @supernal/interface ``` ``` ### Technical Analysis The installation command retrieves the current registry-selected version of `@supernal/interface` without pinning an exact reviewed version or verifying its integrity or provenance. Because npm packages may execute lifecycle scripts during installation, following this instruction can execute package-controlled code with the invoking user's privileges. The global installation option (`-g`) increases exposure by placing the package's executable in a system- or user-wide command location rather than isolating it within the project. The audited project provides no lockfile, checksum, vendored source, registry restriction, or package implementation from which the installed behavior could be independently verified. This is a supply-chain weakness rather than evidence that the named package is currently malicious. ### Attack Path 1. An attacker compromises the package publisher account, package distribution channel, or a future package release. 2. The attacker publishes a malicious version containing an installation lifecycle script or altered `si` executable. 3. A user follows the documented `npm install -g @supernal/interface` instruction. 4. npm resolves the unpinned dependency to the malicious release and may execute its lifecycle scripts. 5. The malicious code runs with the user's privileges and installs or replaces the globally accessible `si` command. 6. Later `si` invocations can execute attacker-controlled behavior while appearing to perform the documented operations. ### Impact Assessment Successful exploitation could provide arbitrary code execution with the privileges of the user running npm. The attacker could access files and cred ...[truncated 536 chars]
Remediation
## Remediation Suggestions 1. Pin the dependency to an exact version that has been reviewed, avoiding version ranges and implicit retrieval of the latest release. 2. Prefer a project-local development dependency over global installation, and commit the generated lockfile. 3. Verify package provenance, registry origin, publisher identity, signatures or attestations where available, and expected integrity hashes. 4. Audit the package contents and npm lifecycle scripts before recommending installation. 5. Use a trusted registry configuration and dependency allowlisting in CI and development environments. 6. Run initial installation and validation in an isolated, least-privileged environment. 7. Document the expected package version and integrity metadata so unexpected release changes fail closed.
Vulnerability Patterns
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • 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 (2)

Tool Parameter Abuse

High
Category
Tool Misuse
Content
# Fully automated MCP setup (zero manual steps)
si setup-mcp                         # Configure IDE + create server
si setup-mcp --force                 # Overwrite existing
si setup-mcp --skip-test             # Skip server startup test
si setup-mcp --manual                # Create files only, skip IDE config

# Claude Code integration
Confidence
80% confidence
Finding
The documented --skip-test flag disables the startup validation step for MCP setup, which can allow configuration changes to be applied without verifying that the generated server or integration actually works. In an automated agent workflow, this can mask broken or unsafe setup results and make downstream execution trust unvalidated configuration.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The skill documents multiple commands that modify project files, IDE configuration, or repository state, including overwrite and auto-commit behaviors, but does not consistently warn the user about side effects before presenting them as normal workflow steps. In an agent setting, this increases the chance that code or config changes are made unexpectedly, especially for commands like init, migrate, setup-mcp, and flags such as --force, --inject, --migrate, or --git-commit.

Static analysis

No suspicious patterns detected.