T08 · Insecure Dependencies
- Location
SKILL.md:9- Finding
Unpinned Browser Extension Exposes Sensitive Browser Context to Supply-Chain Risk
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 9–16 and 34–38
Vulnerability Type: Unpinned third-party browser extension with access to sensitive browser state
Risk Level: MediumEvidence
text easyTable is a restaurant table-booking system. Each restaurant has a public booking widget at `https://book.easytable.com/book/?id=<restaurantId>` — the `id` is the only identifier (there's no login). This MCP drives that widget through the user's own signed-in, Cloudflare-cleared browser tab via the fetchproxy bridge; the site blocks any server-side request. ## Setup (one time) 1. Install the fetchproxy browser extension (https://github.com/chrischall/fetchproxy). 2. Open a booking widget in Chrome: `https://book.easytable.com/book/?id=<restaurantId>`. Let the page finish loading — its Cloudflare Turnstile check solves itself. 3. The first tool call prints a one-time pair code; approve it in the extension.text `create` and `modify` submit a Cloudflare Turnstile token the MCP reads from the widget tab's hidden input, so a `book.easytable.com/book/?id=<id>` tab must be open and loaded when you confirm. The token is single-use and expires after a few minutes; if a create fails on the token, reload the tab and retry. `cancel` needs no token.Technical Analysis
The Skill requires installation of a browser extension from a personal GitHub repository, but does not pin an immutable commit or reviewed release, provide a checksum, document required browser permissions, or specify integrity-verification procedures. The extension acts as a bridge into the user's Cloudflare-cleared browser context and is used to read a Turnstile token from page state.
This creates a supply-chain trust boundary around a component with potentially sensitive browser access. If the repository, release process, distribution channel, or extension itself is compromised, the dependen ...[truncated 2176 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin the extension to an immutable, reviewed commit or signed release rather than a mutable repository reference.
- Publish and verify cryptographic checksums or signatures for the reviewed extension artifact.
- Document all requested browser permissions and remove permissions that are not essential to easyTable reservations.
- Restrict host access and bridged requests to
https://book.easytable.com/; deny arbitrary destinations and unrelated tabs. - Prevent access to unrelated cookies, storage, headers, browsing history, and page content.
- Limit page-state access to the minimum fields required for the current operation and avoid retaining Turnstile tokens or personal data.
- Publish the MCP and extension source and build process so reviewers can verify destination restrictions, data handling, pairing security, and confirmation gates.
- Require explicit user approval immediately before every create, modify, or cancel operation, and bind that approval to the displayed restaurant, customer, time, party size, and booking action.
- Prefer a narrowly scoped integration that communicates directly with easyTable where technically possible, rather than a general-purpose browser request bridge.
- Add a clear privacy disclosure describing what information is read, transmitted, retained, and exposed to the extension.
