T08 · Insecure Dependencies
- Location
- SKILL.md:46
- Finding
- Unpinned Third-Party npm Package Is Downloaded and Executed at Runtime## Vulnerability Details **File Location**: `SKILL.md`, lines 5 and 46–49 **Vulnerability Type**: Unpinned third-party dependency and runtime package execution **Risk Level**: Medium The skill declares `openclaw-liveavatar` as an npm dependency without an exact version or integrity constraint and instructs the agent to execute it through `npx`: ```yaml metadata: {"openclaw":{"emoji":"🎭","requires":{"env":["LIVEAVATAR_API_KEY"],"bins":["node","npm"]},"install":[{"id":"node","kind":"node","package":"openclaw-liveavatar","bins":["openclaw-liveavatar"],"label":"Install LiveAvatar (npm)"}]}} ``` ```markdown 2. **Launch the interface**: ```bash npx openclaw-liveavatar ``` ``` ### Technical Analysis Neither the installation metadata nor the launch command pins a reviewed package version or verifies package integrity. When the package is unavailable locally, `npx openclaw-liveavatar` can retrieve the package currently published under that name and immediately execute its lifecycle or application code. Consequently, the effective executable payload can change after this skill has been audited. The project contains no copy of the package source, lockfile, checksum, or signature with which to verify that the code executed at runtime is the code previously reviewed. This is particularly sensitive because the launched process is expected to receive `LIVEAVATAR_API_KEY`, interact with a microphone-enabled browser workflow, and communicate with an OpenClaw Gateway on local port `18789`. This finding does not establish that the currently published package is malicious; it identifies the unsafe, mutable dependency-execution mechanism. ### Attack Path 1. An attacker compromises the npm publisher account, registry release process, or another component capable of publishing a malicious release under `openclaw-liveavatar`. 2. The attacker publishes a modified package version containing malicious lifecycle or runtime code. ...[truncated 1335 chars]
- Remediation
- ## Remediation Suggestions 1. Pin `openclaw-liveavatar` to an exact, reviewed version in both installation metadata and execution instructions. 2. Install the dependency during a controlled build or setup phase rather than downloading it through `npx` at each invocation. 3. Commit a lockfile that records resolved versions and registry integrity hashes, and enforce immutable or reproducible installation in deployment. 4. Prefer invoking an already installed, verified binary, such as through a package script or an explicit local `node_modules/.bin` path. 5. Use `npx --no-install` if `npx` remains necessary, preventing an invocation from silently downloading an absent package. 6. Verify package provenance or signatures where supported, restrict installation to an approved registry, and continuously scan the dependency and its transitive dependency tree. 7. Review or vendor the executable source so its microphone, credential, filesystem, gateway, and outbound-network behavior can be audited. 8. Run the package with least privilege and isolate it from unrelated credentials, files, and local services.
