Back to skill

Security audit

Moltimon - The Molty Trading Card Game

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent Moltimon game integration, but it asks users to install and run unpinned third-party npm code with an API key while the credential flow is not fully clear.

Install only after reviewing the referenced npm package and source repository, prefer a pinned package version, avoid the unscoped npx command, and use a Moltbook API key you are comfortable sending to the configured Moltimon server. Rotate the key if you tested with an untrusted package or server.

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:36
Finding
Unpinned npm Dependency and Inconsistent npx Package Name## Vulnerability Details **File Location**: `SKILL.md`, lines 36, 83–86, 282, and 385 **Vulnerability Type**: Insecure third-party dependency execution **Risk Level**: Medium ### Vulnerable Code ```bash # Line 36 npm install -g @iamjameskeane/moltimon ``` ```bash # Lines 83–86 npm install -g @iamjameskeane/moltimon # Local installation (for library use) npm install @iamjameskeane/moltimon ``` ```bash # Line 282 npm install -g @iamjameskeane/moltimon ``` ```text # Line 385 - **CLI not working**: Try `npx moltimon --help` instead of `moltimon --help` ``` ### Technical Analysis The installation commands do not pin `@iamjameskeane/moltimon` to an audited version. npm therefore resolves the latest package release at installation time, allowing the effective executable content to change independently of this reviewed Skill. The troubleshooting instruction is additionally inconsistent with the documented dependency: it invokes the unscoped package name `moltimon`, whereas the intended package is consistently identified elsewhere as `@iamjameskeane/moltimon`. Depending on npm and `npx` resolution behavior and the local environment, this command may download and execute a distinct unscoped registry package. npm package lifecycle scripts and CLI entry points execute with the invoking user's operating-system privileges. The Skill also instructs users to export `MOLTBOOK_API_KEY`; consequently, package-controlled code launched from the same environment may be able to read that credential. The repository contains only `SKILL.md`, so the implementation and integrity of the referenced npm package cannot be verified within the audited artifact. ### Attack Path 1. The user exports `MOLTBOOK_API_KEY` as instructed by the Skill. 2. The user installs the unpinned scoped package, or follows the troubleshooting instruction and runs `npx moltimon --help`. 3. npm resolves a future compromised release or, in the `npx` case, potentially resolves the unintended unscoped `mol ...[truncated 968 chars]
Remediation
## Remediation Suggestions 1. Replace the unscoped troubleshooting command with an explicitly scoped invocation: ```bash npx --package=@iamjameskeane/moltimon@0.1.0 moltimon --help ``` 2. Pin all installation examples to a specific reviewed version: ```bash npm install -g @iamjameskeane/moltimon@0.1.0 npm install @iamjameskeane/moltimon@0.1.0 ``` 3. For project-local installations, commit a lockfile and use deterministic installation commands such as `npm ci`. 4. Verify package provenance, release history, integrity metadata, and lifecycle scripts before recommending execution. 5. Avoid exposing long-lived API credentials to package installation processes. Export the credential only when running the reviewed application, use a short-lived or narrowly scoped credential where supported, and rotate it after suspected package compromise. 6. Keep the scoped package name consistent throughout all documentation and remove any command that may resolve an unintended registry package.
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • 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
Findings (6)

Credential Access

High
Category
Privilege Escalation
Content
```javascript
import { MoltimonClient } from '@iamjameskeane/moltimon';

// Get API key from environment variable
const apiKey = process.env.MOLTBOOK_API_KEY;

const client = new MoltimonClient({
Confidence
70% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
```javascript
import { MoltimonClient } from '@iamjameskeane/moltimon';

// Get API key from environment variable
const apiKey = process.env.MOLTBOOK_API_KEY;

const client = new MoltimonClient({
Confidence
70% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
```javascript
import { MoltimonClient } from '@iamjameskeane/moltimon';

// Get API key from environment variable
const apiKey = process.env.MOLTBOOK_API_KEY;

const client = new MoltimonClient({
Confidence
70% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Vague Triggers

Medium
Confidence
92% confidence
Finding
The manifest description says to use the skill when users want to "play a trading card game or interact with AI agent cards," which is broad natural language rather than a narrow trigger. It does not provide concrete invocation phrases, boundaries, or exclusion examples, so an orchestrator could invoke it for generic game or card-related requests unintentionally.

Intent-Code Divergence

Medium
Confidence
97% confidence
Finding
The security section states the API key is only sent to Moltbook and never stored, but the documented client accepts an arbitrary `serverUrl`, meaning the key is necessarily sent to whichever server the user configures. This creates a misleading trust boundary: users may believe the credential only reaches Moltbook when in practice it can be transmitted to a third-party MCP service that could log or misuse it.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Static analysis

No suspicious patterns detected.