T08 · Insecure Dependencies
- Location
config.json:8- Finding
Unpinned Third-Party Package with Broad Optional Dependencies
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:27-31,config.json:8-12,config.json:39-51, andscripts/run.sh:45-48
Vulnerability Type: Unpinned and unnecessarily broad third-party dependency
Risk Level: MediumVulnerable Code
SKILL.md:27-31:markdown 安装 markitdown: ```bash pip install 'markitdown[all]'text `config.json:8-12`: ```json "runtime": { "python": ">=3.10" }, "binaries": ["markitdown"], "packages": { "pip": ["markitdown[all]"] }config.json:39-51:json "install": { "type": "pip", "autoInstall": false, "riskLevel": "low", "riskReason": "仅安装 markitdown Python 包,在本地执行文件转换,不发送数据到远程服务(除非启用 LLM 功能)。", "requiresApproval": true, "installCommand": "pip install 'markitdown[all]'" }, "dependencies": { "pip": ["markitdown[all]"], "binaries": [], "note": "Requires markitdown CLI. Install with: pip install 'markitdown[all]'" }scripts/run.sh:45-48:bash if ! command -v markitdown &>/dev/null; then echo >&2 "错误: markitdown 未安装。请运行: pip install 'markitdown[all]'" exit 1 fiTechnical Analysis
The project repeatedly instructs users to install
markitdown[all]without an exact version, lock file, or integrity hashes. Consequently, pip may resolve whichever compatible package and transitive dependency versions are available at installation time rather than a specifically reviewed dependency set.The
[all]extra also installs a broader collection of optional dependencies than may be necessary for a particular conversion task. This expands the software supply-chain attack surface and increases the number of packages whose installation and runtime behavior must be trusted. Python package installation may execute package build logic, and installed components later execute within themarkitdownprocess.The configuration requires installation approval and disables ...[truncated 1795 chars]
- Remediation
View remediation
Remediation Suggestions
-
Pin
markitdownand every transitive dependency to reviewed, exact versions in a lock file. -
Generate and verify cryptographic hashes for all downloaded artifacts. Use a command such as:
bash pip install --require-hashes -r requirements.txt -
Replace the broad
[all]extra with only the extras required by the supported use cases. Separate optional format support into explicitly approved dependency groups where practical. -
Install dependencies in a dedicated virtual environment or isolated container rather than the user's global Python environment.
-
Configure pip to use a trusted package index and, where possible, an internally controlled mirror containing reviewed artifacts.
-
Add automated dependency vulnerability and provenance scanning to the release process.
-
Keep
autoInstalldisabled andrequiresApprovalenabled, but update the approval prompt andriskReasonto disclose the unpinned third-party and transitive dependency risks. -
Update
SKILL.md,config.json, and the error message inscripts/run.shso every installation path consistently points to the locked and hash-verified requirements file.
-
