T08 · Insecure Dependencies
- Location
SKILL.md:66- Finding
Unpinned Third-Party Dependency Installation
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:66-68,README.en.md:29-32,README.en.md:37-40,README.md:40-43, andREADME.md:48-51
Vulnerability Type: Unpinned third-party dependency and supply-chain risk
Risk Level: MediumThe installation instructions recommend installing
markitdown[pdf]without a fixed version or integrity hash.Relevant code snippets:
SKILL.md:66-68bash brew install poppler # pdftotext / pdffonts / pdftoppm / pdfinfo brew install tesseract tesseract-lang # OCR + chi_sim Chinese package uv tool install "markitdown[pdf]" # Fallback engineREADME.en.md:29-32bash brew install poppler brew install tesseract tesseract-lang uv tool install "markitdown[pdf]"README.en.md:37-40bash sudo apt-get update sudo apt-get install -y poppler-utils tesseract-ocr tesseract-ocr-chi-sim tesseract-ocr-eng pipx install "markitdown[pdf]"README.md:40-43bash brew install poppler brew install tesseract tesseract-lang uv tool install "markitdown[pdf]"README.md:48-51bash sudo apt-get update sudo apt-get install -y poppler-utils tesseract-ocr tesseract-ocr-chi-sim tesseract-ocr-eng pipx install "markitdown[pdf]"The installed command is subsequently trusted and executed by
scripts/pdf2md.py:119-124:python def extract_markitdown(pdf, first, last): if first or last: raise RuntimeError("markitdown does not support page ranges; use the pdftotext or ocr engine") need("markitdown", "uv tool install 'markitdown[pdf]'") r = run(["markitdown", str(pdf)]) if r.returncode != 0: raise RuntimeError(f"markitdown failed: {r.stderr.strip()[:200]}")Technical Analysis
Neither
uv tool install "markitdown[pdf]"norpipx install "markitdown[pdf]"constrains the dependency to a reviewed version. The package installer may theref ...[truncated 2224 chars]- Remediation
View remediation
Remediation Suggestions
- Pin
markitdownto a specific, reviewed version in every installation example, such asmarkitdown[pdf]==<reviewed-version>. - Generate and maintain a lock file that constrains all transitive dependencies, not only the top-level package.
- Use hash-verified installation artifacts where the selected package-management workflow supports them.
- Document the expected package registry and publisher so users can verify that the dependency was obtained from the intended source.
- Review and test dependency updates before changing the documented pin; consider automated vulnerability and provenance scanning in CI.
- Keep
markitdownoptional and isolated in a dedicated virtual environment or tool environment with only the permissions needed for PDF conversion. - Replicate the corrected, pinned command consistently in
SKILL.md,README.en.md, andREADME.md.
- Pin
