registry  /  kinetik-engine  /  0.1.23

kinetik-engine@0.1.23

Kinetik engine and project initializer for Three.js games

AI Security Review

scanned 3h ago · by lpm-firewall-ai

No confirmed malicious attack surface is established. The main risk is an install-time project file write to src/editor.html, apparently to sync a package-owned editor scaffold.

Static reason
One or more suspicious static signals were detected.
Trigger
npm install/postinstall in a project with src/ directory; runtime script loading only when game/editor config references scripts
Impact
May overwrite project src/editor.html during install; no evidence of credential theft, exfiltration, persistence, or agent hijack.
Mechanism
postinstall template sync plus package-aligned dynamic module loading/networking
Attack narrative
On install, the package runs sync-generated-editor-html.js, resolves INIT_CWD or cwd, and if the consuming project has a src directory, copies the package scaffold editor.html to src/editor.html. Runtime dynamic imports load game script paths from browser/game state, and networking sends WebRTC signaling to a caller-provided apiBase. These are risky primitives, but the inspected code shows package-aligned engine/editor behavior rather than exfiltration, persistence, or AI-agent control hijack.
Rationale
Static inspection found an unconsented lifecycle write into the consumer project, so this should be warned on, but the write is limited to a Kinetik editor scaffold file and no concrete malicious behavior was found. Dynamic import, fetch, child_process, and filesystem use are aligned with the game engine/scaffold workflows.
Evidence
package.jsonsync-generated-editor-html.jsscriptManager.jsnetworking.jsinit.jsbin/create-kinetik-app.jsscaffold/electron-main.jssrc/editor.htmlscaffold/src/editor.html

Decision evidence

public snapshot
AI called this Suspicious at 86.0% confidence as Dangerous Capability with medium false-positive risk.
Evidence for warning
  • package.json defines postinstall: node sync-generated-editor-html.js
  • sync-generated-editor-html.js uses INIT_CWD/process.cwd and writes src/editor.html in the installing project when src/ exists
  • scriptManager.js dynamically imports level/object script paths from gameState/browser URL
  • networking.js can fetch user-configured apiBase signaling endpoints
Evidence against
  • No hardcoded exfiltration endpoint found; networking apiBase is caller configured
  • No credential/env harvesting found beyond INIT_CWD for install location
  • No AI-agent control-surface files, shell startup files, VCS hooks, or persistence writes found
  • Bin/init scaffold copies game project files only when user invokes CLI/init
  • Electron scaffold file writes are local game/editor save/import operations
Behavioral surface
Source
ChildProcessDynamicRequireEnvironmentVarsFilesystemNetwork
Supply chain
HighEntropyStringsUrlStrings
Manifest
NoLicense
scanned 34 file(s), 729 KB of source, external domains: www.w3.org

Source & flagged code

2 flagged · loading source
package.jsonView file
scripts.postinstall = node sync-generated-editor-html.js
High
Install Time Lifecycle Scripts

Package defines install-time lifecycle scripts.

package.jsonView on unpkg
scriptManager.jsView file
25if (_moduleCache.has(url)) return _moduleCache.get(url); L26: const mod = await import(url); L27: _moduleCache.set(url, mod);
Medium
Dynamic Require

Package source references dynamic require/import behavior.

scriptManager.jsView on unpkg · L25

Findings

1 High4 Medium5 Low
HighInstall Time Lifecycle Scriptspackage.json
MediumDynamic RequirescriptManager.js
MediumNetwork
MediumEnvironment Vars
MediumStructural Risk Force Deep Review
LowScripts Present
LowFilesystem
LowHigh Entropy Strings
LowUrl Strings
LowNo License