T03 · Remote Payload Retrieval and Execution
- Location
scripts/setup.sh:19- Finding
Unpinned Remote Repository Retrieval and Dependency Execution
- Content
View full analysis
Vulnerability Details
File Location:
scripts/setup.sh:19,scripts/setup.sh:46
Vulnerability Type: Mutable remote payload retrieval and insecure dependency installation
Risk Level: HighVulnerable Code:
bash git clone https://github.com/Stepuuu/portfolio-daily-tracker.git "$TARGET"bash if command -v pip3 &>/dev/null; then pip3 install -r dashboard/requirements.txt 2>/dev/null || echo " ⚠ pip install failed — install manually: pip3 install -r dashboard/requirements.txt" else echo " ⚠ pip3 not found — install manually: pip3 install -r dashboard/requirements.txt" fiTechnical Analysis
The setup script clones the current default branch of an external Git repository without pinning a reviewed commit, verifying a signed tag, or checking a cryptographic digest. It then passes a requirements file from that mutable repository directly to
pip3.Consequently, the code and dependencies installed at setup time may differ from those present when this Skill was audited. A repository owner, compromised maintainer account, or supply-chain attacker could change the default branch or its requirements after publication. Python package installation may execute package build hooks, while the downloaded engine scripts are explicitly invoked during normal Skill operation.
This is a remote payload execution boundary rather than merely a network availability concern: the externally controlled repository determines both executable engine code and the dependency installation manifest.
Attack Path
- An attacker compromises the remote repository, a maintainer account, or a dependency referenced by its requirements file.
- The attacker modifies the default branch, adds a malicious dependency, or replaces an expected package version with a compromised release.
- A user follows the documented setup process and runs
scripts/setup.sh. - The script clones the mutable default ...[truncated 827 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin the repository to a specific, reviewed commit hash rather than cloning the mutable default branch.
- Verify a cryptographically signed release tag and compare the checkout against an expected commit identifier.
- Prefer shipping the audited engine code with the Skill so that its effective implementation cannot change independently.
- Use a fully locked dependency manifest containing exact versions and cryptographic hashes, and install with
pip --require-hashes. - Review direct and transitive dependencies before updating the lock file.
- Install dependencies in a dedicated virtual environment or other isolated execution environment instead of the caller's global Python environment.
- Avoid suppressing pip error output, because doing so obscures security-relevant installation failures.
- Run setup and engine components with a minimally privileged account that does not expose unrelated secrets.
