T08 · Insecure Dependencies
- Location
SKILL.md:29- Finding
Unpinned and Unverified Executable Dependencies
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:29-43;scripts/self_check.py:20-29
Vulnerability Type: Supply-chain execution through mutable and unverified dependencies
Risk Level: HighEvidence
SKILL.md:29-43:bash npx clawhub@latest install deepseekoracle/lygo-pxpipe-lygo export LYGO_STACK_ROOT=/absolute/path/to/lygo-protocol-stack pip install -r "$LYGO_STACK_ROOT/requirements-pxpipe.txt"bash cd "$LYGO_STACK_ROOT" python tools/pxpipe_lygo_for_agent.py --shrink-file path/to/huge.txt --target grok python tools/pxpipe_lygo_for_agent.py --file path/to/huge.txt --target anthropic --png .pxpipe_ctx.pngbash python tools/run_pxpipe_lygo_proxy.pyscripts/self_check.py:20-29:python if STACK.is_dir(): req_stack = [ STACK / "pxpipe_lygo" / "compressor.py", STACK / "tools" / "pxpipe_lygo_for_agent.py", STACK / "docs" / "BIOPHASE7_PXPIPE_LYGO.md", ] miss_stack = [str(p) for p in req_stack if not p.exists()] if miss_stack: print("WARN LYGO_STACK_ROOT set but missing", miss_stack)Technical Analysis
The documented installation process invokes the mutable npm tag
@latestand installs Python requirements from a user-selected external stack without requiring pinned versions, package hashes, a signed revision, or verification of the stack's origin. The documented workflow then directly executes Python programs from that external directory.The bundled self-check only confirms that expected paths exist. It does not verify file type, ownership, permissions, cryptographic hashes, repository provenance, signed commits, package integrity, or whether symbolic links redirect those paths elsewhere. Consequently, a substituted or compromised
LYGO_STACK_ROOTcan satisfy the check while containing attacker-controlled executable code. Thesignaturestring present in Skill metadata is not validated crypto ...[truncated 1420 chars]- Remediation
View remediation
Remediation Suggestions
- Replace mutable package tags such as
@latestwith an explicitly reviewed version and enforce lockfile integrity. - Pin every Python dependency to an exact version and require cryptographic hashes, for example through a hash-locked requirements file using
pip --require-hashes. - Pin the external stack to a specific reviewed commit or immutable release artifact.
- Verify signed releases or commits and compare trusted cryptographic checksums before executing stack scripts.
- Extend
self_check.pyto validate approved hashes for executable files rather than checking only path existence. - Resolve paths with
Path.resolve(), ensure each required file remains within the trusted stack root, reject symbolic links where appropriate, and validate ownership and unsafe write permissions. - Install and execute dependencies in an isolated environment with minimum filesystem and network privileges.
- Keep API credentials scoped to the minimum required permissions and provide them only to a verified proxy process.
- Fail closed when provenance or integrity checks cannot be completed rather than emitting a warning and continuing successfully.
- Replace mutable package tags such as
