T08 · Insecure Dependencies
- Location
scripts/tts_linux.py:117- Finding
Unpinned Third-Party Dependencies and Mutable Model Artifacts
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:29-32,SKILL.md:42-43,references/linux_windows_transformers.md:34-48,references/macos_mlx_audio.md:29-33,scripts/tts_linux.py:117-118
Vulnerability Type: Supply-chain risk caused by unpinned executable dependencies and model revisions
Risk Level: MediumVulnerable Code and Instructions
SKILL.md:29-32:bash pip install mlx-audio brew install ffmpegSKILL.md:42-43:bash pip install qwen-ttsreferences/linux_windows_transformers.md:34-48:bash pip install qwen-ttsbash pip install flash-attn --no-build-isolationscripts/tts_linux.py:117-118:python model = Qwen3TTSModel.from_pretrained(model_id, **model_kwargs) tokenizer = Qwen3TTSTokenizer.from_pretrained(model_id)Technical Analysis
The installation instructions resolve the latest available versions of
mlx-audio,qwen-tts, andflash-attnrather than versions reviewed and approved by the project. No lock file, package hashes, constraints file, or integrity-verification procedure is supplied.The FlashAttention command additionally disables build isolation. This can allow its build process to interact with packages already installed in the active Python environment and makes the result more dependent on mutable local and upstream state.
The Linux wrapper loads models and tokenizers from repository identifiers without pinning immutable repository revisions. The macOS backend likewise receives mutable model identifiers through its command line. These operations can initiate network downloads on first use, despite prominent claims that the Skill has no external dependencies and requires no network.
There is no evidence that any currently referenced package or model is malicious. The vulnerability is the absence of controls ensuring that future installations retrieve the same reviewed code and artifacts.
Attac
...[truncated 1386 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin every Python dependency to an exact reviewed version in a requirements or lock file.
- Use hash-checked installation, such as
pip install --require-hashes -r requirements.txt. - Maintain separate dependency sets for macOS and Linux/Windows, including all transitive dependencies.
- Avoid
--no-build-isolationwhere possible. If it is unavoidable, document why it is needed and build from a verified source in a disposable environment. - Pin Hugging Face and MLX model repositories to immutable commit revisions rather than mutable repository heads.
- Record and verify checksums for model files used in high-assurance or air-gapped environments.
- Install and run the Skill in an unprivileged virtual environment or container.
- Clearly disclose that package installation and initial model acquisition require network access.
- Provide an explicit offline installation procedure using preverified package wheels and model artifacts.
- Add automated dependency and artifact provenance checks to release testing.
