aidenybai / aidenybai/react-grab
open-file fallback sends local filesystem paths to react-grab.com; telemetry undocumented in README
- 主要语言
- TypeScript
- 星标
- 7.6k
- 派生
- 340
- 平均合并
- 5 小时 12 分钟
- 30 天内合并 PR
- 6
描述
## Summary
Two related privacy/disclosure items from a security review:
### 1. Local file path transmitted to vendor server (Medium)
`packages/react-grab/src/utils/open-file.ts:7,42-44` — when the dev-server open fails in production mode, the code calls:
```js
window.open("https://react-grab.com/open-file?url=&line=N")
```
This transmits the user's **local filesystem path** (which often contains usernames, project names, and directory structure) to a third-party server as URL parameters.
Suggested fix: route through the local CLI/daemon instead, or strip to project-relative paths before constructing the URL.
### 2. Telemetry not disclosed in README
The browser package sends an anonymous `{source=browser, v, t}` version ping on init (`src/core/log-intro.ts:13-19`, opt-out via `telemetry: false`), and the CLI sends a `{source=cli}` ping plus an init report POSTing framework/package-manager/router info and error stack traces to `react-grab.com/api/report-cli` (`packages/cli/src/commands/init.ts:33,44-57`; `DO_NOT_TRACK` respected). None of this is mentioned in the README. Sibling projects handle disclosure well (react-doctor's telemetry README section), so react-grab should match that bar — especially given agents are instructed by SKILL.md to auto-run `npx react-grab@latest pull`.
## Credit where due
The rest of the egress story is solid: opt-outs exist for every path (`telemetry: false`, `DO_NOT_TRACK`), captured grabs stay on-device in a 0700 dir with symlink/ownership refusal, clipboard parsing treats hostile input as untrusted, no lifecycle scripts, npm provenance attested.
贡献指南
评估
这个 Issue 还没有评估数据。