T08 · Insecure Dependencies
Warning
- Location
- README.md:59
- Finding
- Unpinned Third-Party Installer Execution<![CDATA[ ## Vulnerability Details **File Location**: `README.md:59-64` **Vulnerability Type**: Unpinned and unverifiable package installation **Risk Level**: Medium ### Vulnerable Code ```bash # Via Clawhub (recommended) npx skills add your-username/conversation-flow-monitor # Manual installation git clone https://github.com/your-username/conversation-flow-monitor.git ~/.openclaw/skills/conversation-flow-monitor ``` ### Technical Analysis The recommended `npx` command does not specify an exact version or package integrity value. If the `skills` package is unavailable locally, `npx` may retrieve and execute its currently resolved release. Consequently, the code executed during installation can differ from the version that was originally audited. The Skill and repository identifiers also contain the placeholder owner `your-username`. This prevents users from reliably validating the intended publisher and increases the possibility of installing an unrelated or attacker-controlled package or repository. This finding does not establish that the current repository contains a malicious dependency. The risk arises from the unpinned and unverifiable installation procedure. ### Attack Path 1. A user follows the installation instructions from the README. 2. `npx` resolves the unpinned `skills` package from the configured npm registry. 3. An attacker has compromised the resolved package, its publisher account, or a similarly named package selected by mistake. 4. `npx` downloads and executes the package during installation. 5. Malicious installation logic runs with the invoking user's privileges and can access resources available to that user. For the manual path, an attacker could register or control a repository matching the unresolved placeholder and persuade a user to clone it. ### Impact Assessment Successful exploitation can execute arbitrary code under the account running the installation command. Depending on that account's permissions, the code could ...[truncated 260 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Replace all placeholder publisher and repository identifiers with the verified canonical identities. 2. Pin the installer to an exact audited version, for example `package-name@X.Y.Z`. 3. Publish and verify package integrity hashes or signed release artifacts. 4. Use an installation mode that refuses implicit retrieval of an unavailable package. 5. Document the expected npm publisher, repository URL, release tag, and checksum. 6. Recommend reviewing installation scripts before running the package. 7. For Git-based installation, reference a signed release tag or immutable commit hash rather than an unspecified repository state. ]]>
