T08 · Insecure Dependencies
Error
- Location
- references/mcp-adapter-guide.md:27
- Finding
- Mutable GitHub releases and development branches are installed as executable WordPress plugins<![CDATA[ ## Vulnerability Details **File Location**: `references/mcp-adapter-guide.md:27-56` **Vulnerability Type**: Unpinned executable dependency installation **Risk Level**: High ### Vulnerable Code ```bash ### Option 1: WP-CLI with release ZIP (recommended — no composer) wp plugin install https://github.com/WordPress/mcp-adapter/releases/latest/download/mcp-adapter.zip --activate --path=$WP_PATH wp rewrite flush --path=$WP_PATH ### Option 2: Manual download + copy (when wp plugin install fails) cd /tmp curl -L -o mcp-adapter.zip "https://github.com/WordPress/mcp-adapter/releases/latest/download/mcp-adapter.zip" unzip -q mcp-adapter.zip -d /tmp/mcp-adapter-extract sudo cp -r /tmp/mcp-adapter-extract/mcp-adapter $WP_PATH/wp-content/plugins/mcp-adapter sudo chown -R www:www $WP_PATH/wp-content/plugins/mcp-adapter wp plugin activate mcp-adapter --path=$WP_PATH wp rewrite flush --path=$WP_PATH ### Option 3: From source (developers — requires composer) cd /tmp curl -L -o mcp-adapter.zip "https://github.com/WordPress/mcp-adapter/archive/refs/heads/trunk.zip" unzip -q mcp-adapter.zip -d /tmp/mcp-adapter-src mv /tmp/mcp-adapter-src/mcp-adapter-trunk $WP_PATH/wp-content/plugins/mcp-adapter cd $WP_PATH/wp-content/plugins/mcp-adapter composer install --no-dev --no-interaction --optimize-autoloader wp plugin activate mcp-adapter --path=$WP_PATH wp rewrite flush --path=$WP_PATH ``` Additional mutable plugin installation examples occur at: - `references/mcp-adapter-guide.md:78` - `references/mcp-adapter-guide.md:262` - `references/mcp-adapter-guide.md:369` ### Technical Analysis The documented commands retrieve PHP code from mutable GitHub targets and immediately install or activate it. The `latest` release URL can resolve to a different artifact after the Skill has been reviewed, while the `trunk` archive follows an actively changing development branch. The source installation path also runs Composer against metadata from the downloaded branch. This expands t ...[truncated 1328 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Replace every `latest` and `trunk` installation URL with an exact release tag. 2. Publish a trusted SHA-256 allowlist for each supported version. 3. Require checksum verification before extraction, copying, Composer execution, or plugin activation. 4. Reject installation when the expected checksum is missing. 5. Use release artifacts rather than source-branch archives in production. 6. Review Composer lockfiles and disable Composer plugins and scripts unless explicitly required. 7. Keep development-from-source instructions clearly separated from production installation guidance. ]]>
