T03 · Remote Payload Retrieval and Execution
Error
- Location
- INSTALL.md:6
- Finding
- Unverified Remote Payload Retrieval and Execution## Vulnerability Details **File Location**: `INSTALL.md:6-13`, `INSTALL.md:113-116`, `INSTALL.md:174-181`; equivalent instructions also appear in `GITHUB_INSTALL_GUIDE.md:42` and `GITHUB_INSTALL_GUIDE.md:191` **Vulnerability Type**: Remote payload retrieval and execution without integrity verification **Risk Level**: High ### Vulnerable Code ```bash # 1. Download the release archive wget https://github.com/xiamuciqing/lunar-birthday-reminder/releases/download/v0.9.0/lunar-birthday-reminder-v0.9.0.tar.gz # 2. Extract it tar -xzf lunar-birthday-reminder-v0.9.0.tar.gz cd lunar-birthday-reminder # 3. Run the installation script ./install.sh ``` The troubleshooting instructions also recommend downloading and executing another remote script: ```bash # Install pip curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python3 get-pip.py ``` The upgrade procedure repeats the unverified release installation pattern: ```bash cd /tmp wget https://github.com/xiamuciqing/lunar-birthday-reminder/releases/download/v1.0.0/lunar-birthday-reminder-v1.0.0.tar.gz tar -xzf lunar-birthday-reminder-v1.0.0.tar.gz # Install the new version cd lunar-birthday-reminder ./install.sh ``` ### Technical Analysis The recommended installation and upgrade procedures download archives from a personal GitHub repository, extract their contents, and execute the included `install.sh` without checking a cryptographic hash or digital signature. The reviewed local repository indicates what its generated installer is intended to do, but it cannot guarantee that a remotely hosted release asset will always contain the same content. A release asset can effectively change after review if the hosting account is compromised or an asset is deleted and replaced. The `get-pip.py` procedure similarly downloads a Python program and executes it without integrity validation. These remote execution steps are not necessary for the Skill's norm ...[truncated 1227 chars]
- Remediation
- ## Remediation Suggestions 1. Publish a SHA-256 or stronger digest for every release artifact through an independently protected channel. 2. Require verification before extraction: ```bash echo "<expected-sha256> lunar-birthday-reminder-v0.9.0.tar.gz" | sha256sum --check ``` 3. Sign release tags and artifacts with Sigstore, GPG, or another verifiable release-signing mechanism. 4. Pin installation instructions to a reviewed commit or immutable artifact digest. 5. Replace the `get-pip.py` procedure with the operating system's package manager or Python's supported environment-management process. 6. Instruct users to inspect `install.sh` before execution and install as an unprivileged user. 7. Use a dedicated virtual environment rather than modifying a system-wide Python installation. 8. Add the same integrity controls to both `INSTALL.md` and `GITHUB_INSTALL_GUIDE.md`.
