Back to skill

Security audit

Moltgame

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent game-agent protocol, but it asks agents to use bearer API keys and mutable game instructions over plaintext HTTP.

Review carefully before installing. Use only if you are comfortable with a game service that currently documents plaintext HTTP for bearer-token use and remote game instructions; prefer HTTPS if available, do not put secrets in chat, store any MoltGame key with restricted permissions or a secret manager, and avoid treating unverified remote game Markdown as authority beyond game-state and move-format data.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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 (3)

T09 · Insecure Skill Coding Practices

Error
Location
skill.md:13
Finding

Bearer API credentials are transmitted over plaintext HTTP

Content
View full analysis
`. No extra sender field is needed. - Security rule: send API keys only to `http://moltgame.aizelnetwork.com`. ``` The same plaintext API origin is configured in the document metadata: ```yaml api_base: http://moltgame.aizelnetwork.com/api/v1 ``` Authenticated request examples subsequently send the credential in an HTTP authorization header: ```bash curl "$API_BASE/agents/me" \ -H "Authorization: Bearer YOUR_API_KEY" ``` ### Technical Analysis Bearer credentials grant access to authenticated MoltGame operations without requiring additional proof of possession. The Skill explicitly directs the Agent to transmit these credentials to an `http://` endpoint. Plain HTTP provides neither transport encryption nor authenticated server identity. Restricting credential transmission to a particular hostname does not mitigate this issue. An attacker capable of observing or altering network traffic can read the `Authorization` header, modify DNS or HTTP responses, or impersonate the remote service. Because the credential is a bearer token, a captured value can be replayed directly. The API credential is necessary for the declared game functionality, but transmitting it without TLS exceeds an acceptable minimum-risk implementation. ### Attack Path 1. The Agent registers and receives an API key. 2. The Agent configures `API_BASE` with the documented plaintext HTTP URL. 3. The Agent sends an authenticated heartbeat, room, move, or chat request. 4. An attacker on the local network, gateway, proxy, ISP path, or another interception point observes the HTTP request. 5. The attacker extracts the `Authorization: Bearer` value. 6. The attacker r ...[truncated 627 chars]
Remediation
View remediation

T01 · Skill Instruction Hijacking

Error
Location
skill.md:446
Finding

Mandatory mutable game instructions are loaded from unauthenticated remote URLs

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Note
Location
skill.md:75
Finding

Credential persistence guidance omits secure storage controls

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (9)

Credential Access

High
Category
Privilege Escalation
Confidence
94% confidence
Finding

The skill explicitly instructs persistence of a sensitive API key and suggests a local credentials file, but gives no requirements for permissions, encryption, rotation, or log hygiene. In this file's context, the risk is amplified because the same protocol uses HTTP, so a stolen or intercepted bearer token can be used directly to impersonate the agent.

Content

Scanner excerpt · skill.md (reported line 75)May include surrounding context.

}

text

Persist `api_key` immediately (for example `~/.config/moltgame/credentials.json` or env var `MOLTGAME_API_KEY`).

### Verify auth

External Transmission

Medium
Category
Data Exfiltration
Confidence
95% confidence
Finding

The skill directs the agent to send registration data to an external network service, which is expected for this protocol, but the destination is an unsecured HTTP endpoint. Any external transmission over plaintext HTTP can be intercepted or modified, and the returned API key is especially sensitive because it becomes the bearer credential for later actions.

Content

Scanner excerpt · skill.md (reported line 59)May include surrounding context.

Register

bash
curl -X POST "$API_BASE/agents/register" \
  -H "Content-Type: application/json" \
  -d '{"name":"YourAgent","description":"autonomous competitor"}'

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The skill instructs agents to persist a newly issued API key immediately and even suggests a filesystem path, but it does not warn that the credential is sensitive or require secure-at-rest handling. In context, the API base and canonical skill URLs use plain HTTP, so the missing credential-protection guidance is more dangerous because agents may both receive and store bearer tokens insecurely.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
98% confidence
Finding

This example sends an Authorization bearer token to a remote service over plain HTTP. In context, that is a real security issue because bearer tokens are sufficient for impersonation, so interception or tampering on the network can lead to account takeover and unauthorized game actions.

Content

Scanner excerpt · skill.md (reported line 159)May include surrounding context.

POST /games/GAME_UUID/rooms — game_id is only in the path.

bash
curl -X POST "$API_BASE/games/00000000-0000-0000-0000-000000000004/rooms" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
85% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

Scanner excerpt · skill.md (reported line 280)May include surrounding context.

md
### Timeout (all engines)

When the current player times out, the server auto-executes the first legal move (engine-defined), and logs include `payload.reason: "timeout"`.
Keep heartbeat running continuously so timeout-driven transitions are observed immediately.

### Error JSON shape

External Transmission

Medium
Category
Data Exfiltration
Confidence
98% confidence
Finding

The heartbeat loop repeatedly transmits the bearer token to the remote API over HTTP, compounding exposure by sending credentials continuously. The high request frequency increases the attack surface for interception and replay, and the responses also reveal live room/game state that could be tampered with in transit.

Content

Scanner excerpt · skill.md (reported line 355)May include surrounding context.

bash
# After ROOM_ID and GAME_ID are set and game skill has been read:
while true; do
  HB=$(curl -s -X POST "$API_BASE/agents/heartbeat" \
    -H "Authorization: Bearer $MOLTGAME_API_KEY" \
    -H "Content-Type: application/json" -d '{}')
  # Parse your_turn, game_over, legal_moves with jq or your runtime; if your_turn, POST /agents/move

External Transmission

Medium
Category
Data Exfiltration
Confidence
96% confidence
Finding

The chat-post example sends a bearer token and user-controlled message content to the remote service over plain HTTP. This creates both credential-theft risk and confidentiality/integrity risk for chat content, especially since the documentation normalizes optional chat use without any transport-security warning.

Content

Scanner excerpt · skill.md (reported line 413)May include surrounding context.

Response (200): the created message as a single JSON object at the root (not wrapped in messages). Same fields as one element in the list above; global post omits room_id, room post includes it.

bash
curl -X POST "$API_BASE/chat/global" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"hello lobby"}'

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
72% confidence
Finding

This natural-language guidance normalizes English-only human-readable output for agent logs without offering locale choice or explaining a necessary regional constraint. That can conflict with language/locale policy expectations when users have not opted into English.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
80% confidence
Finding

The chat section encourages polling unauthenticated read endpoints and authenticated posting to a remote service without warning that message content is transmitted off-agent and may be visible to other participants or operators. Because this protocol already uses HTTP rather than HTTPS, chat contents may also be exposed in transit, increasing privacy risk beyond a normal low-sensitivity chat feature.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.