T08 · Insecure Dependencies
- Location
- SKILL.md:44
- Finding
- Unpinned Third-Party Dependency Granted Access to Reusable Authentication Credentials<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:44-48` **Vulnerability Type**: `T08: Insecure Dependencies` **Risk Level**: High ### Vulnerable Code ```sh npm install -g @fetchproxy/cli # provides `fpx` fpx profile add alphaportal --domain alphaportal.app fpx profile declare alphaportal --local-storage user # declare scope BEFORE first pairing fpx local-storage user -p alphaportal # first call prints a pair code → approve in Transporter export ALPHAPORTAL_RT=$(fpx local-storage user -p alphaportal | jq -r '.user | fromjson | .User.RefreshToken') ``` ### Technical Analysis The Skill instructs users to install the latest available version of `@fetchproxy/cli` globally and pair it with the Transporter browser extension. No package version, package integrity hash, or audited release is specified. The dependency is then authorized to retrieve the AlphaPortal `user` local-storage entry, from which it extracts an approximately eight-day reusable refresh token. This grants a third-party CLI and browser extension access to a credential capable of minting access tokens for sensitive student and transportation information. This access is not the minimum privilege required for the declared functionality because `SKILL.md:31-37` already documents a dependency-free browser-console method that reads the specific refresh-token field. The bridge method expands the trusted computing base and exposes the entire `user` local-storage item to third-party components. The audit did not establish that the named package or extension is malicious. The vulnerability arises from installing an unpinned, globally scoped dependency and granting it access to a high-value browser credential, creating a supply-chain compromise path. ### Attack Path 1. An attacker compromises a future release of `@fetchproxy/cli`, its distribution account, one of its transitive dependencies, or the associated browser extension. 2. A u ...[truncated 1466 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Make the dependency-free browser-console procedure the preferred and default credential-capture method. 2. Remove the bridge procedure unless browser automation is essential to the declared functionality. 3. If the bridge must remain: - Pin `@fetchproxy/cli` to a specifically reviewed version. - Verify the package using a lockfile and trusted integrity hash. - Avoid global installation; use an isolated, temporary environment. - Audit the CLI, its transitive dependencies, and the browser extension. - Document the extension's publisher, update policy, data flow, and trust boundary. 4. Request access only to the exact refresh-token field where technically possible, rather than the complete `user` local-storage object. 5. Clearly warn users that pairing grants a third-party component access to a reusable authentication credential. 6. Provide instructions to revoke sessions and rotate credentials immediately if the CLI, extension, or host is suspected of compromise. ]]>
