T08 · Insecure Dependencies
- Location
SKILL.md:237- Finding
Unpinned Dependencies and Unverified Browser Download Source
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:237-242, 247; duplicated inREADME.md:101-106
Vulnerability Type:T08: Insecure Dependencies
Risk Level: MediumVulnerable Code
SKILL.md:237-242:bash pip install requests openpyxl # 必装 pip install playwright # 浏览器兜底通道需要 # 浏览器下载必须走国内镜像,直连必超时: PLAYWRIGHT_DOWNLOAD_HOST=https://npmmirror.com/mirrors/playwright/ playwright install chromium apt-get install -y --no-install-recommends xvfb # 有头模式(过 CF 必需)配合 xvfb-run pip install patchright # playwright 反检测 fork,CF 站点备选(安装后同样走镜像装浏览器)SKILL.md:247:markdown - **`playwright install` 直连下载必超时**,必须设 `PLAYWRIGHT_DOWNLOAD_HOST=https://npmmirror.com/mirrors/playwright/`(镜像约 30 秒装完)。The same installation instructions are exposed to users in
README.md:101-106:bash pip install requests openpyxl # 必装 pip install playwright # 浏览器兜底通道需要 # 浏览器下载必须走国内镜像,直连必超时: PLAYWRIGHT_DOWNLOAD_HOST=https://npmmirror.com/mirrors/playwright/ playwright install chromium apt-get install -y --no-install-recommends xvfb # 有头模式(过 CF 必需) pip install patchright # 反检测浏览器 fork,强防护站点备选Technical Analysis
The installation commands do not pin package versions or cryptographic hashes. Consequently, the effective code installed by the Skill can change after the Skill itself has been reviewed. Python packages may also execute package-controlled build or installation logic.
The Chromium download is redirected to
npmmirror.com, a non-official mirror, throughPLAYWRIGHT_DOWNLOAD_HOST. The Skill does not prescribe checksum, signature, provenance, or artifact-version verification. This creates a supply-chain trust dependency on both the package repositories and the browser mirror.This finding does not establish that the named packages or mirror are malicious. The vulnerability is the absence of ...[truncated 1557 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin every Python dependency to a reviewed exact version in a lock file.
- Require hashes for all resolved packages, such as through a hash-locked requirements file and
pip install --require-hashes. - Lock and review transitive dependencies rather than pinning only direct dependencies.
- Prefer the official Playwright browser distribution source.
- If a mirror is operationally required, pin the exact browser revision and verify a trusted SHA-256 digest or vendor signature before extraction or execution.
- Install dependencies into an isolated virtual environment as an unprivileged user.
- Build a reviewed environment image in advance rather than installing mutable dependencies during each Skill invocation.
- Remove
patchrightand browser dependencies from the default path unless browser fallback is actually required. - Add automated dependency provenance, vulnerability, and integrity checks to the release process.
