T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:26
- Finding
- Unpinned Executable Third-Party Dependencies<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:13`, `SKILL.md:26-38`, and `SKILL.md:73-77` **Vulnerability Type**: Unpinned third-party packages and package-controlled build execution **Risk Level**: Medium ### Vulnerable Code ```yaml metadata: {"openclaw":{"emoji":"brain","primaryEnv":"NEURALMEMORY_BRAIN","requires":{"bins":["python3"],"env":["NEURALMEMORY_BRAIN"]},"os":["darwin","linux","win32"],"install":[{"id":"pip","kind":"node","package":"neural-memory","bins":["nmem"],"label":"pip install neural-memory"}]}} ``` ```bash pip install neural-memory ``` ```bash # Install from npm npm install -g neuralmemory ``` ```bash cd <path-to-installed-plugin> npm run build ``` ### Technical Analysis The installation instructions retrieve the latest available releases of `neural-memory` from the Python package registry and `neuralmemory` from the npm registry without specifying exact versions, integrity hashes, or a lockfile. The npm package is installed globally and its package-controlled build script is subsequently executed. Package installation and build operations can execute package lifecycle hooks or other package-supplied code with the privileges of the installing user. Because the dependency source is not included in the audited project, its effective behavior—including the claim that memory remains local—cannot be independently verified from this artifact. The metadata also contains an inconsistent installation declaration: the package is described with `"kind":"node"` while its label refers to `pip install neural-memory`. In addition, the Python and npm package names differ. These inconsistencies increase the possibility of installing an unintended package or obscuring which dependency is authoritative. ### Attack Path 1. An attacker compromises the relevant registry account, publishes a malicious update, or takes control of an ambiguously named package. 2. A user follows the Skill instructions and installs the unpinned current packa ...[truncated 904 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Pin exact, reviewed versions of both Python and npm dependencies. 2. Supply lockfiles and registry integrity hashes where supported. 3. Correct the metadata so that the package manager, installation kind, package name, and displayed command are consistent. 4. Avoid global installation; use an isolated virtual environment or project-local npm installation. 5. Publish or bundle the auditable plugin source and verify that generated build artifacts correspond to that source. 6. Review package lifecycle and build scripts before execution, and use installation options that suppress unnecessary scripts where feasible. 7. Run the plugin and MCP server as an unprivileged user with filesystem access limited to required OpenClaw and NeuralMemory directories. 8. Document the trusted publisher, expected package identifiers, supported versions, and integrity-verification process. ]]>
