T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:28
- Finding
- Unpinned Executable Third-Party Dependencies<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:28-31` **Vulnerability Type**: Unpinned Python dependencies and unsafe supply-chain trust **Risk Level**: Medium ### Complete Code Snippet ```markdown ## 安装 ```bash pip install html-golive # 提供 19 套主题 CSS 引擎 + 可选的发布能力 pip install openpyxl # 可选:读 .xlsx 时需要 ``` ``` The same unpinned installation instruction also appears in `README.md:31-35` and `references/PUBLISH.md:14-17`. ### Technical Analysis The installation instructions do not specify reviewed versions or package hashes. Consequently, installation resolves to whatever package release is available from the configured Python package index at that time. This is especially security-sensitive for `html-golive`: the project imports and executes `golive.core.css_style_enhancer` as Python code. It also relies on that dependency for optional publishing. Package installation and subsequent imports therefore execute code with the privileges of the user or agent running the Skill. There is no evidence that the current package is malicious. The vulnerability is the absence of controls that bind installation to a reviewed artifact. A compromised publisher account, malicious future release, package-index compromise, or dependency-resolution substitution could change the effective executable code after this Skill has been audited. ### Attack Path 1. An attacker compromises the `html-golive` publishing account, package repository, or an upstream dependency. 2. The attacker publishes a malicious release under the expected package name. 3. A user or agent follows the documented `pip install html-golive` command. 4. The package manager retrieves the unreviewed current release. 5. Malicious code executes during installation, import, theme application, or publishing. 6. The payload obtains the same filesystem, network, environment-variable, and process privileges as the invoking user. ### Impact Assessment Successful exploitation could r ...[truncated 614 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Pin each dependency to a reviewed exact version, for example: ```text html-golive==X.Y.Z openpyxl==X.Y.Z ``` 2. Maintain a lock file containing cryptographic hashes and install with hash verification: ```bash pip install --require-hashes -r requirements.txt ``` 3. Review the package's source, release provenance, maintainer identity, and transitive dependencies before updating the pin. 4. Separate the publishing dependency from the local formatting dependency where possible. 5. Run external packages in a restricted environment with only the input and output paths required by the task. 6. Avoid exposing unrelated credentials or sensitive environment variables to theme-processing and publishing commands. 7. Document a controlled update process that requires re-audit before changing dependency versions. ]]>
