T08 · Insecure Dependencies
- Location
SKILL.md:10- Finding
Unpinned Third-Party Package and Optional Dependencies
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 10–16
Vulnerability Type: Uncontrolled third-party dependency installation
Risk Level: MediumComplete Code Snippet:
json "install": [ { "id": "venv", "kind": "exec", "command": "python3 -m venv .venv && .venv/bin/pip install 'markitdown[all]'", "label": "Create virtual environment and install markitdown with all dependencies from PyPI", }, ],Technical Analysis
The installation command resolves the latest available version of
markitdownand all dependencies enabled by itsallextra from PyPI. It does not use pinned versions, a reviewed lockfile, package hashes, or--require-hashes.The virtual environment limits changes to the global Python environment, but it does not sandbox installed packages from the installing user's filesystem or network privileges. Package installation may also execute package build logic. Consequently, compromise of the named package or any transitive dependency could cause attacker-controlled code to run under the Agent or user account.
Installing the full
alldependency set also exceeds minimum dependency scope when the user only needs selected conversion formats, unnecessarily increasing supply-chain exposure.Attack Path
- An attacker compromises an upstream
markitdownrelease or one of its transitive dependencies. - Alternatively, an unsafe future dependency version is published to the configured package index.
- The Skill installation runs
pip install 'markitdown[all]'without version or hash constraints. - Pip resolves and downloads the attacker-controlled or compromised version.
- Malicious build or runtime code executes with the privileges of the account installing or invoking the package.
- The malicious dependency can access resources available to that account, including documents supplied for conversion, and may transmit or mo ...[truncated 881 chars]
- An attacker compromises an upstream
- Remediation
View remediation
Remediation Suggestions
- Pin
markitdownto a specifically reviewed version rather than resolving the latest release. - Generate and commit a lockfile containing exact versions for all transitive dependencies.
- Record approved package hashes and install with
pip --require-hashes. - Replace the
allextra with only the format-specific dependencies required for the declared task. - Use a trusted, controlled package index or internal artifact mirror with package provenance and integrity verification.
- Perform installation and document conversion in a sandbox with restricted filesystem access, a minimal environment, and network access disabled by default.
- Enable outbound network access only when the user explicitly requests conversion of a remote URL.
- Regularly scan and review the locked dependency set before approving updates.
- Pin
