T08 · Insecure Dependencies
Note
- Location
- SKILL.md:36
- Finding
- Unpinned Third-Party Dependency Installation<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:36` and `scripts/resume_screen.py:59-63` **Vulnerability Type**: Unpinned package installation and supply-chain exposure **Risk Level**: Low ### Vulnerable Code `SKILL.md:36`: ```markdown > **Local PDF:** Local PDF files are converted page-by-page into images (base64) before sending to the model. `PyMuPDF` is required (`pip install PyMuPDF`). URL files support full formats including pdf/docx/txt. ``` `scripts/resume_screen.py:59-63`: ```python if not HAS_PYMUPDF: raise RuntimeError( "PyMuPDF is required to process local PDF files. " "Install it with: pip install PyMuPDF" ) ``` ### Technical Analysis The documented installation command retrieves the latest package version selected by the Python package index at installation time. It does not pin a reviewed version or verify package hashes. Consequently, separate installations of the same Skill can receive different dependency code. The Skill does not install the dependency automatically, and no evidence shows that the legitimate `PyMuPDF` package is currently malicious. The issue is therefore a supply-chain hardening weakness rather than evidence of an active malicious payload. Exploitation depends on compromise of the package distribution channel, a malicious future release, or manipulation of the package index used in the user's environment. The flagged base64 and network behavior is not itself a confirmed vulnerability. Local PDF pages are intentionally converted to base64-encoded PNG data URLs and sent over HTTPS to the fixed Zhipu API endpoint for the declared cloud-based resume-screening operation. This behavior is disclosed in the Skill documentation and is functionally necessary when processing local PDFs. ### Attack Path 1. An attacker compromises the package publisher, package repository, or package-resolution path used by the victim. 2. The attacker makes a malicious version of `PyMuPDF` available under ...[truncated 965 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Add a dependency file that pins a reviewed `PyMuPDF` release: ```text PyMuPDF==<reviewed-version> ``` 2. Generate and publish cryptographic hashes for the approved distribution, then instruct users to install with hash verification: ```bash python -m pip install --require-hashes -r requirements.txt ``` 3. Keep the lock file and hashes under version control and update them only after reviewing new releases. 4. Recommend installation in an isolated virtual environment with the minimum filesystem and network permissions needed for resume processing. 5. Document the external data flow clearly: local resume pages and screening criteria are transmitted to Zhipu's API. Users should obtain candidate consent, avoid submitting unnecessary personal data, and apply applicable retention and privacy requirements. ]]>
