T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:29
- Finding
- Mutable and Incompletely Verified Third-Party Installation Sources<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:29-32`; related installation guidance in `references/loomloom-setup.md:43-49` and `references/loomloom-setup.md:66-70` **Vulnerability Type**: Supply-chain integrity weakness **Risk Level**: Medium ### Vulnerable Code and Instructions `SKILL.md:29-32`: ```markdown ## Prerequisites - Python 3.10+ with `openpyxl` and `icalendar` packages - If missing, install pinned versions (reviewed, reproducible): `pip install "openpyxl>=3.1,<3.2" "icalendar>=5,<6" "pytz==2024.2"` Prefer a hash-locked `requirements.txt` + `pip install --require-hashes` for production use. ``` `references/loomloom-setup.md:43-49`: ```markdown > Please install LoomLoom in this project: use the official release install script > (never `curl | bash` from an untrusted source). Pin to a specific reviewed release > tag & commit, and verify the artifact checksum after install (see below). > Server: 【the server of your chosen platform, see table above】 > After installing, run `doctor` once to check everything works. ``` `references/loomloom-setup.md:66-70`: ```markdown 2. Clone a specific reviewed tag & commit (NOT the live `main` branch), then verify the release checksum/signature before use: ```bash git clone --branch <reviewed-tag> --depth 1 https://gitee.com/cogfoundry/loomloom.git cd loomloom && cat <published checksum> && <verify> # e.g. pip/installer integrity ``` ``` ### Technical Analysis The Python dependencies are not fully pinned: `openpyxl` and `icalendar` use version ranges, and none of the packages are authenticated with package hashes. A future package release satisfying those ranges can therefore be selected without any corresponding change to the reviewed Skill. This conflicts with the instructions' description of the installation as “pinned” and “reproducible.” The LoomLoom installation procedure recommends sound controls but does not implement them. It supplies placeholders such as `<reviewed ...[truncated 2283 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Replace version ranges with exact reviewed versions, for example: ```text openpyxl==3.1.x icalendar==5.x.y pytz==2024.2 ``` 2. Ship a reviewed lock file containing SHA-256 hashes for every direct and transitive dependency, and require: ```bash python3 -m pip install --require-hashes -r requirements.txt ``` 3. Document the supported Python and package-index configuration. For higher-assurance deployments, use a controlled package mirror and disable unapproved extra indexes. 4. Replace all LoomLoom placeholders with: - A fixed release version. - An immutable commit identifier. - A fixed HTTPS artifact URL. - The expected SHA-256 digest or verified signing identity. - A concrete verification command that aborts on failure. 5. Do not ask an agent to discover or choose an installer dynamically. If an installation script is unavoidable, download it as a file, verify its digest or signature, review it, and execute only the verified artifact. 6. Run installation and the CLI without administrative privileges, preferably in an isolated virtual environment or container with only the required project directory mounted. 7. Keep cloud tokens out of the installation environment where practical. Use interactive credential storage or narrowly scoped credentials, and rotate any token exposed to a compromised dependency. ]]>
