T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:107
- Finding
- Unpinned npx Execution Creates a Dependency Supply-Chain Risk<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 103-107, 127, 134-136, and 148-150 **Vulnerability Type**: Unpinned third-party package execution **Risk Level**: Medium ### Vulnerable Code ```bash cd ~/.openclaw/workspace/mission-control/apps/cli npx tsx src/index.ts ingest reading-list --data '<JSON>' ``` Additional occurrences: ```bash npx tsx src/index.ts ingest status --agent-id poly --status online --activity-message "Reading list delivered" ``` ```bash npx tsx src/index.ts query reading-lists --dateFrom <mon> --dateTo <sun> --agentId poly --format json ``` ```bash npx tsx src/index.ts ingest task --agentId poly --title "Daily Reading Weekly Archive" --description "Archived last week's reading lists" --status completed --category maintenance ``` ### Technical Analysis The skill repeatedly invokes `npx tsx` without requiring a locally installed, lockfile-pinned, and audited version of `tsx`. If the package is unavailable in the target project, `npx` can retrieve a package from the configured npm registry and execute it. This makes the code ultimately executed by the skill dependent on mutable external package-resolution state rather than solely on the reviewed project. Relevant threats include: - A compromised upstream package or npm account. - An unexpected or malicious package version selected because no version is pinned. - Registry or package-source substitution in the local npm configuration. - Installation-script or runtime behavior introduced by a future dependency release. The downloaded package executes with the same operating-system privileges as the agent. The skill has access to the user's Obsidian vault, OpenClaw workspaces, reading-status data, and Mission Control directory, making supply-chain compromise consequential. ### Attack Path 1. The Mission Control project does not have an audited local `tsx` binary available, or package resolution otherwise falls back to the registry. 2. The skill runs one of the ...[truncated 907 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Add `tsx` at an exact reviewed version to the Mission Control project's dependencies or development dependencies. 2. Commit and enforce a package lockfile with integrity hashes. 3. Install dependencies through a controlled process such as `npm ci`, using a trusted registry and lockfile. 4. Invoke the audited local executable directly: ```bash ./node_modules/.bin/tsx src/index.ts ingest reading-list --data-file /secure/path/reading-list.json ``` 5. Alternatively, require offline package execution: ```bash npm exec --offline -- tsx src/index.ts ... ``` 6. Configure CI or deployment checks to reject missing lockfiles and unexpected dependency changes. 7. Disable package lifecycle scripts where operationally possible and perform periodic dependency-integrity and vulnerability reviews. ]]>
