T08 · Insecure Dependencies
- Location
SKILL.md:78- Finding
Unpinned dependency installed from a mutable Git repository
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:78-82; also referenced inscripts/web.py:63-65
Vulnerability Type: Supply-chain exposure through an unpinned source dependency
Risk Level: MediumVulnerable Code
SKILL.md:78-82:markdown ## Requirements - `obsidian-cli` (for vault detection) OR manually configured vault path - `x-reader` for general web: `pipx install 'git+https://github.com/runesleo/x-reader.git'`scripts/web.py:63-65:python except FileNotFoundError: return {"success": False, "error": "x-reader not installed. Run: pipx install 'git+https://github.com/runesleo/x-reader.git'"}Technical Analysis
The documented installation command installs
x-readerdirectly from the mutable default branch of a Git repository. It does not specify an audited release tag, immutable commit hash, package hash, or signature.Consequently, the code installed by users can differ from the code that existed when this Skill was audited. A compromise of the upstream repository, maintainer account, or default branch could introduce malicious package build hooks or replace the installed
x-readerexecutable. Python package installation can execute build-related code, and the Skill later invokes the resulting executable through:python subprocess.run( ["x-reader", url], capture_output=True, text=True, timeout=60 )The use of an argument array prevents shell metacharacter injection through
url, but it does not protect against a malicious or compromisedx-readerexecutable.Attack Path
- An attacker compromises the upstream
x-readerrepository, a maintainer account, or another mechanism controlling its default branch. - The attacker adds malicious installation hooks or modifies the
x-readerexecutable. - A user follows the installation instruction exposed by the Skill:
bash pipx install 'git+https://github.com/runesleo/x
...[truncated 905 chars]
- An attacker compromises the upstream
- Remediation
View remediation
Remediation Suggestions
- Pin the dependency to an immutable, reviewed commit rather than the repository's mutable default branch:
bash pipx install 'git+https://github.com/runesleo/x-reader.git@<audited-full-commit-hash>' - Prefer a trusted package registry release with an exact version and verified package hashes.
- Record the expected source revision and integrity information in the Skill documentation or a lockfile.
- Review package build configuration and installation hooks before approving dependency updates.
- Apply dependency updates through an explicit review process rather than automatically tracking upstream branch changes.
- Run the dependency with least privilege and restrict access to credentials and unrelated user files where sandboxing is available.
- Pin the dependency to an immutable, reviewed commit rather than the repository's mutable default branch:
