T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:43
- Finding
- Unpinned Global Installation of a Privileged Browser-Bridge Dependency## Vulnerability Details **File Location**: `SKILL.md`, lines 43–58 **Vulnerability Type**: Unpinned third-party dependency with access to a browser-authenticated session **Risk Level**: Medium ### Vulnerable Code ```sh One-time setup: npm install -g @fetchproxy/cli # provides `fpx` fpx profile add resy --domain resy.com fpx pair -p resy # prints a pair code → approve in Transporter Then bootstrap the token through the tab (this replicates the one call resy.com's own JS makes to refresh its in-memory token — the HttpOnly session cookies authenticate it): fpx post-json 'https://api.resy.com/3/auth/refresh' '{}' -p resy \ | jq -r '.token' ``` ### Technical Analysis The Skill instructs users to globally install the latest available version of `@fetchproxy/cli` without pinning a version or verifying package integrity. It then pairs this dependency with a browser bridge that can issue a request authenticated by the user's signed-in Resy session. The required Resy authentication and API traffic are consistent with the Skill's declared reservation-management functionality. The identified risk arises from placing an unpinned third-party package in a sensitive authentication path. The effective package contents can change after the Skill has been reviewed, and a global installation gives the package's installation lifecycle scripts and executable code access under the invoking user's account. Pairing the tool with a signed-in browser context is also more privileged than making direct API requests with a narrowly scoped token. Although the documented profile is restricted to `resy.com` and the demonstrated request targets `api.resy.com`, compromise of the npm package, its maintainer account, its transitive dependencies, or the associated bridge could expose the returned Resy token or abuse browser-mediated requests. No evidence was found that the currently documented package is malicio ...[truncated 2050 chars]
- Remediation
- ## Remediation Suggestions 1. Pin `@fetchproxy/cli` to a specifically reviewed version rather than installing the latest release: ```sh npm install --global @fetchproxy/cli@<reviewed-version> ``` 2. Record and verify the expected package integrity hash or lockfile metadata before installation. 3. Document the authoritative npm package, source repository, publisher identity, and required browser extension so users can detect typosquatting or spoofed components. 4. Avoid global installation. Run the pinned dependency in an isolated temporary environment, container, or dedicated low-privilege user account. 5. Disable unnecessary npm lifecycle scripts where compatible, and inspect the package and its dependency tree before granting browser access. 6. Clearly disclose the permissions and data accessible through the browser bridge before pairing, and require explicit user consent. 7. Keep the direct credential-based path as the preferred option and use the browser bridge only when no less-privileged authentication mechanism is available. 8. After bootstrap, disconnect the bridge and remove the temporary package or environment. Invalidate the Resy session or token if compromise is suspected. 9. Prefer an official Resy authorization flow or supported API if one becomes available.
