T08 · Insecure Dependencies
- Location
references/integration-playbook.md:15- Finding
Unpinned Third-Party Package Installation and Execution
- Content
View full analysis
Vulnerability Details
File Location:
references/integration-playbook.md:15-16andreferences/integration-playbook.md:35
Vulnerability Type: Unpinned third-party dependencies and CLI execution
Risk Level: MediumVulnerable code snippets:
sh npm i react-native-update npm i -g react-native-update-clish npx expo prebuildThe related workflow instruction in
SKILL.md:23also directs the Agent to install the SDK and make the CLI available:text 3. Install `react-native-update` and ensure `react-native-update-cli` is available.Technical Analysis
The installation commands do not specify reviewed package versions or integrity constraints. Consequently, package resolution depends on the registry state at execution time rather than a version that was reviewed with this Skill.
Installing
react-native-update-cliglobally also places an externally supplied executable on the user'sPATH. Thenpx expo prebuildcommand may retrieve and execute a package from the configured npm registry when a suitable local executable is unavailable. npm installation can execute package lifecycle scripts, while CLI invocation directly executes package code.This creates a supply-chain exposure: compromise of a referenced package, maintainer account, registry response, or transitive dependency could cause code different from the code originally reviewed to execute during integration.
Attack Path
- An attacker compromises a referenced npm package release, a transitive dependency, a package maintainer account, or the registry used by the target environment.
- The user or Agent follows the Skill and runs an unpinned installation or
npxcommand. - The package manager resolves the attacker-controlled release because no exact reviewed version is required.
- Malicious code executes through an installation lifecycle script or the invoked CLI.
- The payload accesses or modifies ...[truncated 874 chars]
- Remediation
View remediation
Remediation Suggestions
-
Pin each dependency to a reviewed exact version rather than resolving the latest compatible release:
sh npm install --save-exact react-native-update@REVIEWED_VERSION npm install --save-dev --save-exact react-native-update-cli@REVIEWED_VERSION -
Install the CLI as a project development dependency instead of globally. Invoke the lockfile-controlled local executable through a package script or package-manager execution command.
-
Commit and review the package lockfile. In automated environments, use deterministic installation such as:
sh npm ci -
Ensure Expo is declared at an approved version in the project and execute the local locked binary. Avoid permitting
npxto download an unspecified package dynamically. -
Where supported, require offline or lockfile-only execution after dependencies have been reviewed and fetched:
sh npm exec --offline -- expo prebuild -
Verify npm registry configuration, package provenance, publisher identity, and integrity metadata before installation. Restrict CI network access and package lifecycle scripts where operationally possible.
-
Document the approved versions directly in the playbook and establish a controlled process for reviewing and updating those versions.
-
