T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:21
- Finding
- Unpinned Third-Party CLI Handles OAuth Credentials and Sensitive Health Data## Vulnerability Details **File Location**: `SKILL.md`, lines 21–27 **Vulnerability Type**: `T08: Insecure Dependencies` **Risk Level**: Medium **Vulnerable Code**: ```bash # Source: https://github.com/LuisGot/whoo bun add -g @luisgot/whoo # requires Bun 1.3+ # or: npm install -g @luisgot/whoo ``` ### Technical Analysis The Skill instructs users to install the latest available version of `@luisgot/whoo` globally. It does not specify an exact version, lock the dependency, or provide an integrity hash or signature. Consequently, the executable code installed by these commands can change after this Skill has been reviewed. The dependency is then trusted to process a WHOOP OAuth client secret, persistent access and refresh tokens, identity information, and sensitive health records. Its source code is not included in this project, so the audit could not verify its credential handling, token-storage permissions, network destinations, installation scripts, or data-retention behavior. WHOOP network access is necessary for the declared functionality, and the Skill explicitly states that raw health data must not be forwarded to external APIs, logs, or third-party services. No project-local evidence demonstrates exfiltration to a non-WHOOP endpoint. The risk arises because the unpinned and externally maintained CLI occupies a privileged position through which such data necessarily passes. ### Attack Path 1. An attacker compromises the package publisher account, package registry entry, source repository, or a transitive dependency. 2. The attacker publishes a malicious release under the existing `@luisgot/whoo` package name. 3. A user follows the documented global installation command, which resolves to that mutable release. 4. Malicious code executes during package installation or when the `whoo` command is invoked. 5. The compromised CLI captures interactively entered OAuth credentials, reads persisted tokens, intercepts ...[truncated 904 chars]
- Remediation
- ## Remediation Suggestions 1. Pin the dependency to a specific, reviewed version, for example `@luisgot/whoo@<exact-version>`, rather than installing the mutable latest release. 2. Provide and verify a registry integrity hash, signed release artifact, or equivalent cryptographic provenance before installation. 3. Avoid global installation where practical. Use an isolated project environment or sandbox with a lockfile and minimum filesystem and network permissions. 4. Audit and document the CLI's source, lifecycle scripts, transitive dependencies, network destinations, OAuth scopes, token-storage location, file permissions, and refresh-token behavior. 5. Restrict OAuth scopes to only those required to retrieve the metrics requested by the user. 6. Ensure stored credentials use operating-system credential protection or equivalently restrictive permissions, and document reliable revocation and deletion procedures. 7. Re-audit every dependency update before changing the pinned version. 8. Preserve the existing prohibition against forwarding raw health data to unrelated APIs, logs, or third-party services.
