T08 · Insecure Dependencies
- Location
scripts/install.sh:15- Finding
Installation Executes an Unpinned Remote Dependency from a Mutable Branch
- Content
View full analysis
Vulnerability Details
File Location:
scripts/install.sh, lines 15–18
Vulnerability Type: Supply-chain exposure through an unpinned remote dependency
Risk Level: HighVulnerable Code
bash # Install from GitHub main (or tag) so this skill works anywhere. python -m pip install --upgrade "git+https://github.com/VirajSanghvi1/raglite.git@main"The installation process also upgrades build and packaging tools without version or integrity constraints:
bash python -m pip install --upgrade pip setuptools wheel >/dev/nullTechnical Analysis
The installer retrieves RAGLite directly from the mutable
mainbranch of an external GitHub repository. It does not pin the dependency to a reviewed commit, verify an artifact hash or signature, or use a lockfile. The effective code installed and subsequently executed can therefore change after this skill has been reviewed.Python package installation may execute package build hooks and related installation logic. Consequently, a malicious upstream revision could execute code during installation, even before the installed
raglitecommand is invoked. The unconditional upgrade ofpip,setuptools, andwheelsimilarly introduces unpinned package changes, although those packages are retrieved through pip's configured package source rather than the cited GitHub repository.The remotely installed implementation is absent from this project, so its behavior cannot be established from the audited files. This finding identifies supply-chain exposure and does not assert that the current upstream repository is malicious.
Attack Path
- An attacker compromises the upstream repository, its maintainer account, or another mechanism capable of modifying the
mainbranch. - The attacker adds malicious package build logic or runtime code to that branch.
- A user runs
./scripts/install.sh. - Pip retrieves the attacker-controlled revision without im ...[truncated 1019 chars]
- An attacker compromises the upstream repository, its maintainer account, or another mechanism capable of modifying the
- Remediation
View remediation
Remediation Suggestions
- Pin RAGLite to a reviewed, immutable Git commit rather than
main, for example:bash python -m pip install \ "git+https://github.com/VirajSanghvi1/raglite.git@<reviewed-full-commit-sha>" - Prefer a signed, versioned release distributed as a wheel. Record and verify its SHA-256 digest using a locked requirements file and
pip install --require-hashes. - Pin exact versions and hashes for
pip,setuptools,wheel, and all transitive dependencies. Avoid unconditional upgrades during routine skill installation. - Audit the exact RAGLite revision, including packaging metadata, build backend, build hooks, dependency declarations, and runtime network behavior, before approving it.
- Build dependencies in a controlled environment and publish reproducible, verified artifacts through a trusted registry or internal artifact repository.
- Run installation and document processing as an unprivileged account with narrowly scoped filesystem and network access. Do not install this dependency with root or administrator privileges.
- Add automated controls that reject mutable VCS references and dependency changes lacking integrity metadata or security review.
- Pin RAGLite to a reviewed, immutable Git commit rather than
