T08 · Insecure Dependencies
- Location
references/wenqu-cli.md:7- Finding
Unverifiable External CLI and Transitive Dependency Execution
- Content
View full analysis
Vulnerability Details
File Location:
references/wenqu-cli.md:7-19
Additional Location:references/wenqu-cli.md:24-29
Vulnerability Type: External package installation and execution without an included lockfile or concrete fail-closed artifact verification
Risk Level: MediumVulnerable Code
bash pipx install 'wenqu-cli==0.1.0' wenqu doctor --jsonbash python3 -m pip install --user 'wenqu-cli==0.1.0' export PATH="$(python3 -m site --user-base)/bin:$PATH" wenqu doctor --jsonThe installed executable is subsequently used to download and configure its browser environment:
bash wenqu setup library --dry-run --json wenqu setup libraryTechnical Analysis
The Skill directs the Agent to download
wenqu-cliand its transitive dependencies from an external Python package registry and execute the resulting commands. The CLI implementation, dependency lockfile, and expected package hashes are not included in the audited project.Although the package version is pinned to
0.1.0, version pinning alone does not verify artifact integrity or constrain unpinned transitive dependencies. The documentation instructs the Agent to compare the version and SHA-256 value with GitHub Releases, but it does not provide the expected digest or a concrete fail-closed verification command. As a result, the reviewed Skill cannot independently guarantee that the installed artifact is the intended audited package.User authorization,
pipxisolation, and the dry-run step are useful safeguards, but they do not eliminate supply-chain exposure. A dry run is also implemented by the externally installed executable and therefore cannot be treated as a security boundary if that executable has already been compromised.Attack Path
- A user invokes the Skill's research or webpage-collection workflow.
- The Agent obtains the documented installation authorization.
- The Agent runs `p ...[truncated 1373 chars]
- Remediation
View remediation
Remediation Suggestions
- Include the reviewed CLI source in the same audited repository, or reference an immutable source commit and reproducibly built artifact.
- Publish the exact expected SHA-256 digest in the Skill and provide a concrete verification command that runs before any package code is imported or executed.
- Fail closed when the artifact digest, package origin, signer identity, or expected version cannot be verified.
- Use a hash-locked dependency file covering all transitive dependencies, such as a generated requirements file with
--hashentries, rather than pinning only the top-level package. - Verify package signatures or provenance attestations where supported and bind verification to the expected publisher and repository.
- Prefer
pipxor a sandbox over thepip install --userfallback. Restrict the CLI's filesystem access to the designated materials directory and restrict network access to documented search and content endpoints. - Perform browser setup and crawling in an isolated container or similarly constrained runtime with no unnecessary access to home-directory credentials.
- Document the precise endpoints, files, environment variables, and credentials the CLI may access so operators can enforce least-privilege controls.
