Back to skill

Security audit

Game Engine

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent web-game development skill with ordinary tutorial content, but users should treat its unpinned install examples and browser sensor/network APIs with normal caution.

Install is acceptable for normal game-development use. Before following setup examples, pin package versions or commits, review cloned repositories and Makefiles, and run builds in a low-privilege project environment. For games using microphone, motion/XR sensors, WebRTC/WebSockets, vibration, or persistent browser storage, add clear user consent, disclosure, and fallback controls.

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 (2)

T08 · Insecure Dependencies

Warning
Location
references/3d-web-games.md:114
Finding

Unpinned npm Dependencies and Implicit Tool Execution

Content
View full analysis

Vulnerability Details

File Location: references/3d-web-games.md:114-116
Vulnerability Type: Unpinned third-party dependencies and implicit execution of downloaded tooling
Risk Level: Medium

Vulnerable Code:

bash
npm install --save three
npm install --save-dev vite
npx vite

Technical Analysis

The instructions install mutable versions of three and vite without specifying exact versions or requiring a reviewed lockfile. The subsequent npx vite command executes the installed package. Depending on the local environment and package availability, npx may also download a package before executing it.

Package installation can execute package lifecycle scripts, while running the development tool executes code supplied by the installed package and its dependency graph. Consequently, the effective code executed by users may differ from the code that existed when this Skill was audited.

This is a supply-chain weakness rather than evidence that the named packages are malicious. Exploitation requires compromise of an upstream package, maintainer account, package registry, or transitive dependency.

Attack Path

  1. An attacker compromises a relevant npm package, maintainer account, or transitive dependency.
  2. The attacker publishes a malicious version that satisfies the unpinned installation request.
  3. A user follows the documented npm install commands.
  4. npm retrieves the mutable malicious release and may execute its lifecycle scripts.
  5. The user runs npx vite, executing attacker-controlled package code.
  6. That code operates with the privileges and accessible resources of the user running the commands.

Impact Assessment

Successful exploitation could provide arbitrary code execution under the developer's operating-system account. Depending on that account's permissions and environment, attacker code could access project source, development credentials, environment variabl ...[truncated 426 chars]

Remediation
View remediation

Remediation Suggestions

  1. Pin exact reviewed package versions, for example three@x.y.z and vite@x.y.z.
  2. Generate and commit a package lockfile from a trusted environment.
  3. Use npm ci with the reviewed lockfile instead of resolving mutable versions during setup.
  4. Configure CI to reject unexpected lockfile changes and run dependency integrity and vulnerability checks.
  5. Avoid implicit npx downloads. Execute the locally locked binary through an npm script or use npx --no-install vite.
  6. Review package lifecycle scripts and consider npm ci --ignore-scripts when lifecycle scripts are not required.
  7. Document trusted registry configuration and use package provenance or signature verification where available.
  8. Run development dependencies in an isolated, least-privileged environment without production credentials.

T08 · Insecure Dependencies

Warning
Location
assets/gameBase-template-reop.md:236
Finding

Mutable Repository and Unpinned Haxe Dependencies Executed Locally

Content
View full analysis

Vulnerability Details

File Location: assets/gameBase-template-reop.md:236-242
Vulnerability Type: Unpinned repository and package dependencies followed by local build execution
Risk Level: Medium

Vulnerable Code:

bash
git clone https://github.com/deepnight/gameBase.git my-game
cd my-game

# Install Haxe dependencies
haxelib install heaps
haxelib install deepnightLibs
haxelib install ldtk-haxe-api

The surrounding setup instructions subsequently direct the user to execute the retrieved project:

bash
haxe build.hxml
hl bin/client.hl

# Or use the Makefile (if available)
make run

Technical Analysis

The repository is cloned from its mutable default branch without pinning a reviewed commit or release. The Haxe libraries are also installed without explicit versions, checksums, or a locked dependency manifest.

The downloaded repository controls build configuration such as build.hxml and potentially the Makefile. The installed libraries become part of the compilation and execution chain. Running haxe build.hxml, hl bin/client.hl, or make run therefore trusts code and build instructions that can change after the Skill itself has been reviewed.

This is a supply-chain exposure and does not establish that the referenced repository or libraries are currently malicious. The risk arises because an upstream compromise or malicious mutable update could reach users without a corresponding change to this Skill package.

Attack Path

  1. An attacker compromises the referenced GitHub repository, a maintainer account, a Haxelib package, or a relevant upstream distribution channel.
  2. The attacker modifies the default branch, a dependency release, build configuration, or Makefile.
  3. A user follows the Skill instructions and clones the current repository state.
  4. The user installs the latest dependency versions selected by Haxelib.
  5. The user invokes the downloaded buil ...[truncated 883 chars]
Remediation
View remediation

Remediation Suggestions

  1. Replace the mutable clone instruction with a reviewed release tag or full commit hash.
  2. Verify the repository commit using a trusted signed tag or commit signature where available.
  3. Pin exact Haxelib package versions and maintain a reviewed dependency manifest or lock mechanism.
  4. Publish expected checksums for downloaded source archives and dependencies.
  5. Instruct users to inspect build.hxml and the Makefile before executing them.
  6. Avoid make run as a default convenience command unless the exact Makefile revision is pinned and reviewed.
  7. Build and test in a sandbox, container, or disposable development environment with no production credentials.
  8. Add automated dependency provenance, integrity, and vulnerability checks to the build workflow.
  9. Review generated artifacts before publication to prevent compromised dependencies from propagating to downstream users.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Memory PoisoningPersistent Context Injection, Context Window Stuffing, Memory Manipulation
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (14)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill description is broad enough to match a very large share of ordinary web/game-development requests, which can cause the agent to invoke this skill in situations where a narrower or safer skill would be more appropriate. Overbroad routing increases the attack surface for prompt injection, misapplication of guidance, and unintended takeover of general coding tasks.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The 'When to Use This Skill' section lists many positive triggers but no constraints, negative examples, or disambiguation rules, making activation conditions ambiguous. This can lead to accidental invocation on loosely related requests, giving this skill excessive influence over agent behavior and increasing the chance of misuse or prompt-surface expansion.

Content

No source excerpt is available for this finding.

Context Window Stuffing

Medium
Category
Memory Poisoning
Confidence
85% confidence
Finding

Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.

Content

Scanner excerpt · SKILL.md (reported line 38)May include surrounding context.

md
Every game engine revolves around the game loop -- a continuous cycle of:

1. **Process Input** - Read keyboard, mouse, touch, or gamepad input
2. **Update State** - Update game object positions, physics, AI, and logic
3. **Render** - Draw the current game state to the screen

Context Window Stuffing

Medium
Category
Memory Poisoning
Confidence
85% confidence
Finding

Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.

Content

Scanner excerpt · references/game-control-mechanisms.md (reported line 441)May include surrounding context.

md
Every game engine revolves around the game loop -- a continuous cycle of:

1. **Process Input** - Read keyboard, mouse, touch, or gamepad input
2. **Update State** - Update game object positions, physics, AI, and logic
3. **Render** - Draw the current game state to the screen

Context Window Stuffing

Medium
Category
Memory Poisoning
Confidence
85% confidence
Finding

Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.

Content

Scanner excerpt · references/game-control-mechanisms.md (reported line 570)May include surrounding context.

md
Every game engine revolves around the game loop -- a continuous cycle of:

1. **Process Input** - Read keyboard, mouse, touch, or gamepad input
2. **Update State** - Update game object positions, physics, AI, and logic
3. **Render** - Draw the current game state to the screen

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.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The Doppler-effect microphone control section encourages a microphone-based interaction model without warning that implementation would require microphone access and could affect user privacy. In a web-game skill, omitting consent/privacy guidance can lead downstream agents or developers to request sensitive device permissions without adequate user notice or minimization.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The manifest scopes this skill to building web-based games and engines using HTML5, Canvas, WebGL, and JavaScript, with multiplayer via WebRTC and browser-oriented rendering/input. This section goes beyond browser game controls and introduces direct hardware integration using Cylon.js with Arduino/Raspberry Pi ports, which is a separate robotics/physical-computing capability not clearly justified by the stated purpose.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This markdown content explicitly recommends WebRTC for voice chat and game-state exchange, both of which can transmit sensitive user or behavioral data off-device. The section lacks any warning about consent, privacy implications, or the need to clearly inform users before enabling microphone or peer-to-peer communication.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The example sends room identifiers, player identifiers, key presses, mouse coordinates, and timestamps over a persistent network connection. In a markdown skill description, this behavior should be accompanied by a warning that user/gameplay data is transmitted to a server and may have privacy or tracking implications.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
87% confidence
Finding

This markdown file explicitly states that the game uses the Device Orientation API and vibration haptics, but it does not include any user-facing warning or notice about accessing motion sensors or triggering vibration. For markdown files, SQP-2 applies when the skill description omits warnings about behaviors that may affect privacy or user experience.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

This markdown file explains that WebXR captures real-time positional, orientation, velocity, acceleration, and controller input data. Because SQP-2 applies to markdown files and covers omitted warnings about behaviors affecting user privacy, the absence of any caution about sensitive motion/sensor data collection is a documentation gap.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
78% confidence
Finding

This is a markdown file, so SQP-2 applies to missing user-facing warnings in documentation. The WebRTC Data Channels section explains sending text or binary data directly between peers and highlights chat/state synchronization, but it does not warn that this involves transmitting user/game data over network connections or note any privacy implications.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

This markdown file includes guidance to persist save-game state and inventory in IndexedDB, which affects user data by storing it across sessions. Under the markdown-specific warning criterion, the description does not include any user-facing caution about local persistence, retention, or clearing of saved data.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.