T08 · Insecure Dependencies
Warning
- Location
- references/api-reference.md:115
- Finding
- Unpinned Python SDK Creates a Supply-Chain Execution Risk## Vulnerability Details **File Location**: `SKILL.md:58`, `README.md:103`, `references/api-reference.md:115-119`, and `scripts/tts.py:24-35` **Vulnerability Type**: T08: Insecure Dependencies **Risk Level**: Medium The documentation recommends installing the `smallestai` Python package without a version constraint, integrity hash, or lock file: `SKILL.md:58`: ```text ### Python (requires `pip install smallestai` or just `requests`) ``` `README.md:103`: ```text Optional: `pip install smallestai` for the official SDK with async support and streaming. ``` `references/api-reference.md:115-119`: ```markdown ## Python SDK ```bash pip install smallestai ``` ``` When that package is available, `scripts/tts.py:24-35` automatically imports and invokes it: ```python def synthesize_sdk(text, voice, speed, rate, lang, out_path, api_key): """Use the official Smallest AI Python SDK.""" from smallestai.waves import WavesClient client = WavesClient(api_key=api_key) client.synthesize( text=text, voice=voice, save_as=out_path, sample_rate=rate, speed=speed, ) return True ``` ### Technical Analysis Installing a package without pinning an audited version allows the installed code to change independently of the reviewed Skill. Python packages may execute code during installation, module import, object initialization, or method invocation. The Skill automatically prefers the SDK whenever the import succeeds, so an altered package release would be placed directly in the TTS execution path. No evidence establishes that the current package is malicious. The issue is the absence of version and integrity controls around executable third-party code. This exceeds the minimum dependency requirement because the Skill already includes direct HTTPS and `curl` implementations that do not require the SDK. ### Attack Path 1. An attacker compromi ...[truncated 1369 chars]
- Remediation
- ## Remediation Suggestions 1. Pin the SDK to a reviewed release, for example: ```bash python3 -m pip install "smallestai==REVIEWED_VERSION" ``` 2. Publish a lock file or requirements file containing cryptographic hashes and require hash verification: ```bash python3 -m pip install --require-hashes -r requirements.txt ``` 3. Record the reviewed package version, expected publisher, package index, and release provenance in the documentation. 4. Prefer the fixed-endpoint `requests` or `curl` implementation unless SDK-specific functionality is required. 5. Consider making SDK use explicit rather than automatically importing and preferring any installed package. 6. Install dependencies in an isolated virtual environment under an unprivileged account. 7. Add dependency scanning and release verification to the project's maintenance process. 8. Keep API credentials narrowly scoped and rotate `SMALLEST_API_KEY` if dependency compromise is suspected.
