T08 · Insecure Dependencies
- Location
scripts/start-server.sh:4- Finding
Unpinned Third-Party Package Is Downloaded and Executed at Runtime
- Content
View full analysis
/dev/null; then echo "Error: uvx not found. Please install uv first." exit 1 fi # Start blender-mcp echo "Starting Blender MCP server..." uvx blender-mcp ``` The same mutable dependency is launched from Python scripts: ```python self.process = subprocess.Popen( ['uvx', 'blender-mcp'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, env=env, bufsize=1 ) ``` ### Technical Analysis The project invokes `uvx blender-mcp` without specifying an exact package version, lock file, artifact hash, or verified immutable source. `uvx` can resolve and execute package content obtained from the configured Python package index. Consequently, the code that runs can change independently of this audited project. This is a supply-chain weakness rather than evidence that the current `blender-mcp` package is malicious. Nevertheless, executing a mutable dependency directly creates a time-of-check/time-of-use gap: a package version published or selected after this audit may behave differently from the version expected by the project. The subprocess inherits the calling user's environment through constructs such as: ```python env = { **os.environ, 'BLENDER_HOST': host, 'BLENDER_PORT': str(port), 'DISABLE_TELEMETRY': 'true' } ``` A compromised dependency would therefore execute with the user's operating-system privileges and receive the inherited environment, including variables unrelated to Blender. ### Attack Path 1. An attacker compromises the upst ...[truncated 1227 chars]- Remediation
View remediation
