T08 · Insecure Dependencies
- Location
SKILL.md:60- Finding
Unpinned Third-Party Dependencies and Unrestricted Plugin Enablement
- Content
View full analysis
Vulnerability Details
File Locations:
SKILL.md:60-68,POST_INSTALL.md:41-53,reference.md:254-269,scripts/batch_convert.py:59-62, 80
Vulnerability Type: Uncontrolled third-party dependency and plugin execution
Risk Level: MediumRelevant Code and Instructions:
SKILL.md:60-68bash pip install 'markitdown[all]'Or install specific formats only:
bash pip install 'markitdown[pdf,docx,pptx]'POST_INSTALL.md:41-53bash pip install 'markitdown[pdf]' # PDF support pip install 'markitdown[docx]' # Word documents pip install 'markitdown[pptx]' # PowerPoint pip install 'markitdown[xlsx]' # Excel pip install 'markitdown[audio-transcription]' # Audio pip install 'markitdown[youtube-transcription]' # YouTubeOr install everything:
bash pip install 'markitdown[all]'reference.md:254-269markdown ## Plugin System ### Finding Plugins Search GitHub for: `#markitdown-plugin` ### Using Plugins **CLI:** ```bash markitdown --list-plugins markitdown --use-plugins file.pdfPython:
python md = MarkItDown(enable_plugins=True)text `scripts/batch_convert.py:59-62, 80` ```python parser.add_argument( "-p", "--plugins", action="store_true", help="Enable plugins" )python md_kwargs = {"enable_plugins": args.plugins}Technical Analysis
The documented installation commands do not pin package versions or verify package hashes. Installing the
allextra also expands the transitive dependency set substantially. Consequently, the exact code installed can change over time without any corresponding change to this reviewed Skill.The plugin documentation compounds this supply-chain exposure by recommending that users discover plugins through an unrestricted GitHub search. The batch converter exposes a command-line switch that enables installed third-party ...[truncated 1528 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin MarkItDown and all approved dependencies to reviewed versions instead of allowing unconstrained resolution.
- Publish a lock file or constraints file and use package hashes, such as pip's
--require-hashes, for reproducible installation. - Recommend installing only the format-specific extras required for the task rather than
markitdown[all]. - Replace unrestricted plugin discovery guidance with an explicit allowlist containing reviewed plugin names, versions, hashes, and trusted source locations.
- Keep plugin support disabled by default and display a clear warning that enabling plugins executes third-party code.
- Run conversion and plugins in a restricted environment with minimal filesystem access, no unnecessary credentials, and controlled outbound network access.
- Periodically scan and review the complete resolved dependency graph for known vulnerabilities and unexpected package changes.
