T08 · Insecure Dependencies
- Location
scripts/package.json:5- Finding
Unpinned Third-Party Runtime Dependency Without Lockfile Integrity
- Content
View full analysis
Vulnerability Details
File Location:
scripts/package.json:5-7
Additional Location:SKILL.md:25
Vulnerability Type: Uncontrolled third-party dependency resolution
Risk Level: MediumVulnerable Code
scripts/package.json:5-7:json "dependencies": { "wyze-node": "^2.12.2" }SKILL.md:25:text npm install --prefix "{baseDir}/scripts" wyze-nodeTechnical Analysis
The runtime dependency uses the semver range
^2.12.2, while the documented installation command does not specify an exact version. The project also contains no package lockfile or other integrity record. Consequently, separate installations can resolve to different package versions from the public npm registry.This dependency is loaded and executed by
scripts/scale, where it receives Wyze account identifiers and API credentials and performs authenticated API operations. If an allowed future release or its publishing infrastructure is compromised, attacker-controlled package initialization code would execute with the same operating-system permissions as the skill.This finding does not establish that the current
wyze-noderelease is malicious. The risk arises from mutable, non-reproducible dependency resolution for a security-sensitive component.Attack Path
- An attacker compromises the
wyze-nodenpm publisher account, package distribution channel, or a future version accepted by^2.12.2. - The attacker publishes a malicious release within the permitted semantic-version range.
- A user follows the setup documentation or performs a fresh dependency installation.
- npm resolves and installs the malicious release because no exact lockfile and integrity-controlled installation process is present.
scripts/scaleimportswyze-nodeusingrequire('wyze-node').- Malicious package code executes in the skill process and can access environment variables, the configured credenti ...[truncated 710 chars]
- An attacker compromises the
- Remediation
View remediation
Remediation Suggestions
- Pin
wyze-nodeto a reviewed exact version rather than a semver range:json "dependencies": { "wyze-node": "2.12.2" } - Generate and commit
package-lock.jsonso package versions and registry integrity hashes are reproducible and reviewable. - Replace ad hoc installation guidance with
npm ci --prefix "{baseDir}/scripts"so installation fails when the manifest and lockfile disagree. - Review dependency provenance, maintainers, release history, transitive dependencies, and npm integrity metadata before upgrades.
- Use a controlled dependency-update process that audits and tests each new version before modifying the lockfile.
- Run the skill with least privilege and restrict its filesystem and network access where practical, reducing the impact of a compromised package.
- Avoid exposing credentials to the process longer than necessary and ensure credential and token files have owner-only permissions.
- Pin
