T08 · Insecure Dependencies
- Location
SKILL.md:95- Finding
Unpinned Third-Party MCP Package Execution via uvx
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:95-110
Vulnerability Type: T08: Insecure Dependencies
Risk Level: MediumVulnerable Code
markdown > I cannot convert this {format} file without the markitdown > MCP server. To enable conversion, add this to `.mcp.json`: > > ```json > { > "mcpServers": { > "markitdown": { > "type": "stdio", > "command": "uvx", > "args": ["markitdown-mcp"] > } > } > } > ```The same unsafe configuration is repeated in
modules/fallback-tiers.md:99-105:markdown > **Option A**: Install markitdown-mcp by adding to > `.mcp.json`: > ```json > {"mcpServers": {"markitdown": {"type": "stdio", > "command": "uvx", "args": ["markitdown-mcp"]}}} > ```Technical Analysis
The recommended MCP configuration invokes
markitdown-mcpthroughuvxwithout pinning an exact reviewed version or verifying package integrity. Consequently, the code executed when the MCP server starts may differ from the package version available when this Skill was audited.This creates a supply-chain trust boundary: compromise of the package, its publishing account, its package-index entry, or a transitive dependency could cause arbitrary third-party code to execute under the MCP process user's account. The Skill provides no lockfile, hash, signature, trusted-index restriction, or sandboxing requirement to constrain this risk.
Attack Path
- A user attempts to process a format that has no native fallback.
- The Skill directs the user to add the supplied MCP configuration to
.mcp.json. - The application launches
uvxwith the unversioned package namemarkitdown-mcp. uvxresolves package content available from the configured package source at execution time.- An attacker who has compromised the package, publisher, source, or dependency chain supplies a malicious release.
- The malicious package executes when the MCP server starts, inheriting the filesystem, network, environmen ...[truncated 908 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin
markitdown-mcpto an exact version that has been reviewed, rather than resolving an unconstrained release. - Use a lockfile or equivalent mechanism to pin all transitive dependencies.
- Require package hashes or verified signatures where the package tooling supports them.
- Explicitly configure a trusted package index and disable unexpected fallback indexes to reduce dependency-confusion exposure.
- Review the pinned package and its dependency tree before publishing the configuration.
- Run the MCP server in a sandbox or container with:
- Access only to documents explicitly selected for conversion.
- No access to unrelated home-directory files or credential stores.
- A minimal environment without unnecessary secrets.
- Read-only filesystem access where possible.
- Restricted outbound network access.
- Document a controlled upgrade process that reviews and repins new versions before deployment.
- Update both duplicated configuration examples so users are not directed to the unpinned form.
- Pin
