T08 · Insecure Dependencies
- Location
SKILL.md:61- Finding
Unpinned Git Dependency Allows Mutable Remote Code Installation
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 61-79
Vulnerability Type: Unpinned third-party Git dependency
Risk Level: MediumVulnerable Code
markdown **Provenance:** | Field | Value | |-------|-------| | Source Code | https://github.com/skinapi2025/AirCtl | | License | MIT | | Author | skinapi2025 | **Verify airctl is installed:** ```bash airctl --versionIf airctl is not installed, ask the user to install it before proceeding. Provide the following installation command for the user to review and execute:
bash pip install git+https://github.com/skinapi2025/AirCtl.git> Note: Do NOT automatically run
pip installwithout user confirmation. The user should verify the package source and approve the installation.text ### Technical Analysis The documented installation command retrieves and installs the current default branch of a remote Git repository without pinning a commit, signed tag, version, or artifact hash. Consequently, the code ultimately installed can change after this skill has been reviewed. A Python package installation can execute package build hooks and install executable components. If the upstream repository, maintainer account, or dependency chain is compromised, the installation may execute attacker-controlled code. Checking `pip show airctl` after installation only verifies package metadata supplied by the package itself; it does not establish source integrity or prove that the installed revision was audited. The requirement for user confirmation reduces the likelihood of silent exploitation, but it does not address the underlying integrity problem: the user is being asked to approve a mutable source whose exact contents are not identified. ### Attack Path 1. An attacker compromises the referenced GitHub repository, its maintainer account, or the repository's default branch. 2. The attacker adds malicious installation hook ...[truncated 1332 chars]- Remediation
View remediation
Remediation Suggestions
-
Pin the repository to a specific, reviewed commit rather than its mutable default branch:
bash pip install "git+https://github.com/skinapi2025/AirCtl.git@<audited-full-commit-sha>" -
Prefer a trusted package release with an exact version and verified hash. Publish a locked requirements file containing
--hashentries and install with:bash pip install --require-hashes -r requirements.txt -
Record the expected commit SHA, release signature, package version, and artifact hashes in the skill so users can independently verify integrity.
-
Use signed releases or signed Git tags and document signature verification before installation.
-
Install in an isolated virtual environment with minimum privileges. Explicitly warn users not to run the installation with
sudoor from a privileged agent account. -
Replace the
pip showmetadata check with integrity verification against independently documented hashes or signatures. Metadata alone must not be treated as proof of provenance. -
Review and lock the dependency's transitive dependencies, because pinning only the top-level Git commit does not prevent mutable downstream packages from being resolved during installation.
-
