T08 · Insecure Dependencies
- Location
scripts/prepare_doc_workflow.sh:26- Finding
Unpinned Third-Party Package Is Retrieved and Executed at Runtime
- Content
View full analysis
Vulnerability Details
File Location:
scripts/prepare_doc_workflow.sh, lines 26-28
Vulnerability Type: Unpinned runtime dependency execution
Risk Level: MediumVulnerable Code
bash if command -v uvx >/dev/null 2>&1; then echo "Running: uvx --from 'markitdown[all]' markitdown '$INPUT' -o '$OUTPUT'" uvx --from 'markitdown[all]' markitdown "$INPUT" -o "$OUTPUT"Technical Analysis
The script invokes
uvxwith the unversioned package specificationmarkitdown[all]. No exact package version, dependency lockfile, package hashes, or other integrity verification is provided.When the required package is not already available locally,
uvxmay resolve and retrieve the current package and its transitive dependencies from its configured package source before executing themarkitdownentry point. Consequently, the effective code executed by the Skill can change after the Skill itself has been audited.This creates a supply-chain exposure: a compromised package release, compromised transitive dependency, unsafe package source, or package-resolution attack could cause arbitrary dependency code to run under the invoking user's account. It also makes conversions non-reproducible.
Attack Path
- An attacker compromises a future
markitdownrelease, one of its transitive dependencies, or a package source used byuvx. - A user asks the Agent to process a supported
docx,pdf,pptx,xlsx, orxlsfile and supplies an output path. - The Agent invokes
scripts/prepare_doc_workflow.sh. - The script detects that
uvxis installed and executes the unpinneduvx --from 'markitdown[all]'command. uvxresolves and, where necessary, retrieves the currently available dependency set.- Malicious package installation, import, or entry-point code executes with the privileges of the user running the Skill.
Exploitation depends on compromise or manipulation of the dependency supply chain; no evidence of a currently malici ...[truncated 571 chars]
- An attacker compromises a future
- Remediation
View remediation
Remediation Suggestions
- Pin
markitdownto an audited exact version rather than resolving the latest available release at runtime. - Lock all transitive dependencies and verify package hashes through a reviewed lockfile.
- Configure
uvxto use a trusted, controlled package index where feasible. - Prefer a preinstalled and reviewed converter so ordinary document processing does not retrieve executable dependencies dynamically.
- Separate dependency installation from document processing and require explicit user approval before any network-backed package retrieval.
- Run conversion in a sandbox with minimal filesystem access, restricted network access, and no unnecessary credentials.
- Document the dependency and network behavior clearly, including the fact that
uvxmay download packages. - Update the release checklist to test pinned dependency resolution and integrity verification.
- Pin
