T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:23
- Finding
- Unpinned Third-Party Components Receive Reusable Remind Session Credentials<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 23-34 **Vulnerability Type**: Unpinned privileged dependency and supply-chain exposure **Risk Level**: Medium ### Vulnerable Code ```bash Install `@fetchproxy/cli` (`npm i -g @fetchproxy/cli`) and the **Transporter** Chrome extension. Declare the full scope **before** the first pairing — widening it later forces a re-pair: fpx profile add remind --domain remind.com fpx profile declare remind \ --capture-header cookie@www.remind.com \ --capture-header x-csrf-token@www.remind.com ``` ### Technical Analysis The Skill instructs users to install the latest available version of `@fetchproxy/cli` globally and to install a corresponding browser extension. Neither component is version-pinned or subject to an integrity-verification procedure in the instructions. These third-party components are then authorized to capture the complete Remind `Cookie` request header, including HttpOnly session cookies, as well as the CSRF token. The captured session is sufficiently privileged to read private account, class, chat, and message information and to invoke GraphQL mutations permitted to the account. The credential collection is necessary for the Skill's stated method of authenticating to Remind, and the reviewed content does not show credentials being intentionally sent to an unrelated domain. However, granting reusable session credentials to mutable, unpinned third-party components creates a significant supply-chain trust boundary. A compromised package release, extension update, distribution account, or installation source could collect those credentials. ### Attack Path 1. An attacker compromises the npm package, browser extension, maintainer account, or distribution channel. 2. A user follows the Skill and installs the latest unpinned version globally. 3. The user grants the tool permission to capture the full Remind cookie header and CSRF token. 4. The compromised component copies or trans ...[truncated 1033 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Pin `@fetchproxy/cli` to a specifically reviewed version rather than installing an unconstrained latest release. 2. Document the official package and extension sources and provide publisher or package-identity verification steps. 3. Verify package integrity through a lockfile, expected package digest, signed release, or equivalent mechanism. 4. Avoid global installation where possible; use an isolated environment with a locked dependency manifest. 5. Pin and verify the browser extension version where the browser platform permits it. 6. Prefer an official OAuth flow or another revocable, narrowly scoped credential mechanism if Remind provides one. 7. Minimize captured headers and session lifetime. Do not retain additional cookies that are unnecessary for the GraphQL request. 8. Document session revocation and cleanup procedures, including deleting the local session file and signing out of relevant Remind sessions after suspected compromise. 9. Clearly disclose that the bridge and extension receive credentials capable of accessing private Remind data. ]]>
