Scan Report
5 /100
gstack
Fast headless browser for QA testing and site dogfooding via Playwright/Chromium
gstack 是一个合法的 Playwright 驱动的无头浏览器 QA 工具,所有声称的能力与实际行为一致,无恶意功能。预扫描标记的 IOC 均为文档示例(test fixtures 和 README 安装/卸载说明),非运行时危险。
Safe to install
该技能安全,可直接使用。无需修改。
Findings 3 items
| Severity | Finding | Location |
|---|---|---|
| Info | 预扫描 IOC 非真实危险 Doc Mismatch | README.md, browse/test/cookie-import-browser.test.ts:629, 641, 8, 25 |
| Info | Keychain 访问有合理用途 Sensitive Access | browse/src/cookie-import-browser.ts:160 |
| Low | Playwright 依赖无版本锁定上限 Supply Chain | package.json:1 |
| Resource | Declared | Inferred | Status | Evidence |
|---|---|---|---|---|
| Browser | WRITE | WRITE | ✓ Aligned | SKILL.md 声明使用 headless Chromium,代码使用 Playwright 实现 |
| Filesystem | READ | READ | ✓ Aligned | Read 工具用于读取页面内容、HTML、截图等,eval/chain 命令有路径限制(/tmp 或 cwd) |
| Shell | WRITE | WRITE | ✓ Aligned | Bash 用于执行 browse 二进制,setup 时安装 bun,无其他 shell 执行 |
| Network | NONE | READ | ✓ Aligned | 通过 goto 命令访问用户指定 URL,server 仅监听 127.0.0.1 localhost |
| Environment | NONE | READ | ✓ Aligned | 代码仅读取 _CONTRIB、_BRANCH 等会话元信息,无凭证收集行为 |
| Skill Invoke | NONE | NONE | — | 无跨技能调用 |
2 Critical 4 High 39 findings
Critical Dangerous Command 危险 Shell 命令
curl -fsSL https://bun.sh/install | bash README.md:629 Critical Dangerous Command 危险 Shell 命令
rm -rf ~ README.md:641 High API Key 疑似硬编码凭证
password = "test-keychain-password" browse/test/cookie-import-browser.test.ts:8 High API Key 疑似硬编码凭证
PASSWORD = 'test-keychain-password' browse/test/cookie-import-browser.test.ts:25 High IP Address 硬编码 IP 地址
1.16.0.0 retro/SKILL.md:399 High IP Address 硬编码 IP 地址
1.16.1.0 retro/SKILL.md:399 Medium External URL 外部 URL
https://playwright.dev/ BROWSER.md:25 Medium External URL 外部 URL
https://staging.myapp.com BROWSER.md:31 Medium External URL 外部 URL
https://conductor.build CONTRIBUTING.md:228 Medium External URL 外部 URL
https://docs.anthropic.com/en/docs/claude-code README.md:5 Medium External URL 外部 URL
https://git-scm.com/ README.md:102 Medium External URL 外部 URL
https://x.com/garrytan README.md:147 Medium External URL 外部 URL
https://www.ycombinator.com/ README.md:147 Medium External URL 外部 URL
https://greptile.com README.md:345 Medium External URL 外部 URL
https://staging.myapp.com/signup README.md:427 Medium External URL 外部 URL
https://staging.myapp.com/dashboard README.md:437 Medium External URL 外部 URL
https://staging.myapp.com/settings/billing README.md:444 Medium External URL 外部 URL
https://staging.myapp.com/api/health README.md:451 Medium External URL 外部 URL
https://bun.sh/install README.md:629 Medium External URL 外部 URL
https://app.example.com/login SKILL.md:121 Medium External URL 外部 URL
https://yourapp.com SKILL.md:140 Medium External URL 外部 URL
https://app.example.com/new-feature SKILL.md:153 Medium External URL 外部 URL
https://app.example.com/upload SKILL.md:203 Medium External URL 外部 URL
https://app.example.com/form SKILL.md:213 Medium External URL 外部 URL
https://staging.app.com SKILL.md:259 Medium External URL 外部 URL
https://prod.app.com SKILL.md:259 Medium External URL 外部 URL
https://app.example.com SKILL.md:266 Medium External URL 外部 URL
https://app.com/login browse/SKILL.md:121 Medium External URL 外部 URL
http://127.0.0.1:9470 browse/test/cookie-picker-routes.test.ts:40 Medium External URL 外部 URL
http://127.0.0.1:9450 browse/test/cookie-picker-routes.test.ts:62 Medium External URL 外部 URL
https://external.com/link browse/test/fixtures/basic.html:18 Medium External URL 外部 URL
https://external.com browse/test/fixtures/snapshot.html:21 Medium External URL 外部 URL
https://myapp.com qa/SKILL.md:117 Medium External URL 外部 URL
https://claude.com/claude-code ship/SKILL.md:477 Info Email 邮箱地址
[email protected] SKILL.md:268 Info Email 邮箱地址
[email protected] browse/SKILL.md:123 Info Email 邮箱地址
[email protected] browse/src/config.ts:128 Info Email 邮箱地址
[email protected] browse/test/fixtures/forms.html:19 Info Email 邮箱地址
[email protected] browse/test/fixtures/qa-eval-spa.html:75 File Tree
88 files · 921.6 KB · 23226 lines TypeScript 42f · 14629L
Markdown 24f · 7784L
HTML 13f · 554L
JSON 6f · 188L
Ruby 3f · 71L
├─
▾
browse
│ ├─
▾
src
│ │ ├─
browser-manager.ts
TypeScript
│ │ ├─
buffers.ts
TypeScript
│ │ ├─
cli.ts
TypeScript
│ │ ├─
commands.ts
TypeScript
│ │ ├─
config.ts
TypeScript
│ │ ├─
cookie-import-browser.ts
TypeScript
│ │ ├─
cookie-picker-routes.ts
TypeScript
│ │ ├─
cookie-picker-ui.ts
TypeScript
│ │ ├─
find-browse.ts
TypeScript
│ │ ├─
meta-commands.ts
TypeScript
│ │ ├─
read-commands.ts
TypeScript
│ │ ├─
server.ts
TypeScript
│ │ ├─
snapshot.ts
TypeScript
│ │ └─
write-commands.ts
TypeScript
│ ├─
▾
test
│ │ ├─
▾
fixtures
│ │ │ ├─
basic.html
HTML
│ │ │ ├─
cursor-interactive.html
HTML
│ │ │ ├─
dialog.html
HTML
│ │ │ ├─
empty.html
HTML
│ │ │ ├─
forms.html
HTML
│ │ │ ├─
qa-eval-checkout.html
HTML
│ │ │ ├─
qa-eval-spa.html
HTML
│ │ │ ├─
qa-eval.html
HTML
│ │ │ ├─
responsive.html
HTML
│ │ │ ├─
snapshot.html
HTML
│ │ │ ├─
spa.html
HTML
│ │ │ ├─
states.html
HTML
│ │ │ └─
upload.html
HTML
│ │ ├─
commands.test.ts
TypeScript
│ │ ├─
config.test.ts
TypeScript
│ │ ├─
cookie-import-browser.test.ts
TypeScript
│ │ ├─
cookie-picker-routes.test.ts
TypeScript
│ │ ├─
find-browse.test.ts
TypeScript
│ │ ├─
gstack-config.test.ts
TypeScript
│ │ ├─
gstack-update-check.test.ts
TypeScript
│ │ ├─
snapshot.test.ts
TypeScript
│ │ └─
test-server.ts
TypeScript
│ └─
SKILL.md
Markdown
├─
▾
document-release
│ └─
SKILL.md
Markdown
├─
▾
gstack-upgrade
│ └─
SKILL.md
Markdown
├─
▾
plan-ceo-review
│ └─
SKILL.md
Markdown
├─
▾
plan-eng-review
│ └─
SKILL.md
Markdown
├─
▾
qa
│ ├─
▾
references
│ │ └─
issue-taxonomy.md
Markdown
│ ├─
▾
templates
│ │ └─
qa-report-template.md
Markdown
│ └─
SKILL.md
Markdown
├─
▾
qa-only
│ └─
SKILL.md
Markdown
├─
▾
retro
│ └─
SKILL.md
Markdown
├─
▾
review
│ ├─
checklist.md
Markdown
│ ├─
greptile-triage.md
Markdown
│ ├─
SKILL.md
Markdown
│ └─
TODOS-format.md
Markdown
├─
▾
scripts
│ ├─
dev-skill.ts
TypeScript
│ ├─
eval-compare.ts
TypeScript
│ ├─
eval-list.ts
TypeScript
│ ├─
eval-summary.ts
TypeScript
│ ├─
eval-watch.ts
TypeScript
│ ├─
gen-skill-docs.ts
TypeScript
│ └─
skill-check.ts
TypeScript
├─
▾
setup-browser-cookies
│ └─
SKILL.md
Markdown
├─
▾
ship
│ └─
SKILL.md
Markdown
├─
▾
test
│ ├─
▾
fixtures
│ │ ├─
eval-baselines.json
JSON
│ │ ├─
qa-eval-checkout-ground-truth.json
JSON
│ │ ├─
qa-eval-ground-truth.json
JSON
│ │ ├─
qa-eval-spa-ground-truth.json
JSON
│ │ ├─
review-eval-enum-diff.rb
Ruby
│ │ ├─
review-eval-enum.rb
Ruby
│ │ └─
review-eval-vuln.rb
Ruby
│ ├─
▾
helpers
│ │ ├─
eval-store.test.ts
TypeScript
│ │ ├─
eval-store.ts
TypeScript
│ │ ├─
llm-judge.ts
TypeScript
│ │ ├─
observability.test.ts
TypeScript
│ │ ├─
session-runner.test.ts
TypeScript
│ │ ├─
session-runner.ts
TypeScript
│ │ └─
skill-parser.ts
TypeScript
│ ├─
gen-skill-docs.test.ts
TypeScript
│ ├─
skill-e2e.test.ts
TypeScript
│ ├─
skill-llm-eval.test.ts
TypeScript
│ ├─
skill-parser.test.ts
TypeScript
│ └─
skill-validation.test.ts
TypeScript
├─
ARCHITECTURE.md
Markdown
├─
BROWSER.md
Markdown
├─
CHANGELOG.md
Markdown
├─
CLAUDE.md
Markdown
├─
conductor.json
JSON
├─
CONTRIBUTING.md
Markdown
├─
package.json
JSON
├─
README.md
Markdown
├─
SKILL.md
Markdown
└─
TODOS.md
Markdown
Dependencies 2 items
| Package | Version | Source | Known Vulns | Notes |
|---|---|---|---|---|
playwright | ^1.58.2 | npm | No | 仅指定最低版本,建议锁定版本上限 |
diff | ^7.0.0 | npm | No | 纯文本 diff 库,无安全风险 |
Security Positives
✓ 工具行为与文档声明完全一致,无阴影功能
✓ 所有网络通信仅在 127.0.0.1 localhost,带 Bearer token 认证
✓ Cookie 导入有完整的 SQL 注入防护(参数化查询)、路径遍历检查、profile 名称白名单验证
✓ 代码无 base64 编码执行、无 eval(atob(...))、无裸 IP 请求、无凭证外传
✓ Cookie 解密使用标准 Chromium v10 格式(PBKDF2 + AES-128-CBC),无自制弱加密
✓ Eval/chain 命令限制路径于 /tmp 或 cwd,防止任意文件执行
✓ Legacy /tmp 状态文件清理有进程 PID 验证,防止误杀其他进程
✓ Auto-shutdown 机制(30min idle)防止浏览器进程泄露
✓ 所有 skill SKILL.md 均从模板生成,行为可审计