T08 · Insecure Dependencies
- Location
SKILL.md:31- Finding
Unpinned Third-Party Mutation Tools Are Downloaded and Executed
- Content
View full analysis
/dev/null || npm install --save-dev @stryker-mutator/core ``` ```bash # SKILL.md:47 pip install mutmut 2>/dev/null ``` ```bash # SKILL.md:62 go install github.com/go-gremlins/gremlins/cmd/gremlins@latest ``` ### Technical Analysis The skill directs the agent to retrieve and execute mutation-testing packages without pinning reviewed versions or verifying package integrity: - `npx stryker` can resolve and execute a remotely obtained npm package. It does not specify a reviewed package version. - `npm install --save-dev @stryker-mutator/core` resolves the current package version permitted by the registry rather than a fixed, audited artifact. - `pip install mutmut` installs the currently resolved release and its transitive dependencies without a pinned version or hash. - `go install ...@latest` explicitly downloads and builds the latest available release. Because package contents and dependency resolution can change after the skill has been reviewed, execution of these commands crosses a mutable supply-chain trust boundary. Installation hooks, package entry points, build logic, or the invoked command-line tools can execute code with the permissions of the agent running the skill. Redirecting standard error to `/dev/null` in two commands also suppresses information that could alert the operator to package-resolution failures, warnings, or unexpected installation behavior. ### Attack Path 1. An attacker compromises an upstream package maintainer account, package registry entry, source repository, release process, or transitive dependency. 2. The attacker publishes a malicious version under a package name used by the skill or introduces malicious behavior into a newly resolved dependency. 3. A u ...[truncated 1537 chars]- Remediation
View remediation
/dev/null`. - Surface resolution warnings, integrity failures, and installation scripts to the operator. Example hardened patterns should use organization-approved fixed versions rather than `latest` or other floating constraints: ```bash # Use an approved, exact version and a committed lockfile. npm ci npx --no-install stryker run ...[truncated 314 chars]
