背景
基于 pr-206 工作区当前状态做了一轮安全与数据审核。目标是把可验证结论和需要后续处理的安全假设统一落到 issue,避免审计结果散在本地上下文里。
已审计范围
- 本地变更:
openless-all/app/src-tauri/src/commands.rs、openless-all/app/src/pages/QaPanel.tsx
- 未跟踪数据/项目:
AGENTS.md、promo-openless-v2/
- 云/数据库线索:repo 内配置、
.github/workflows/*、Tauri updater 配置、MCP 资源可见性
- 依赖检查:主 app 与 promo 项目 npm audit;主 app build;Rust cargo check;promo tsc
结论摘要
pr-206 现有两处代码改动未发现直接新增敏感数据泄漏:prefs:changed 广播的是 UserPreferences,按当前 TS/Rust 类型不包含 API key / token / 密码。
- 未发现仓库内存在 Supabase / Postgres / Cloudflare D1 / Firebase / Prisma / Drizzle 等云数据库连接配置;设计交付文档还写了“不要做云同步”。当前没有可用 DB MCP/凭据,因此无法直接登录所谓“云端所有数据库”做表级审计;更准确的结论是:仓库中未发现云数据库资产,需要人工确认是否存在仓库外云资产。
- 发现若干应跟踪的安全/数据风险,见下方任务清单。
风险与待办
验证记录
关联上下文
- 当前本地分支:
pr-206
- 当前本地未跟踪:
AGENTS.md、promo-openless-v2/
- 当前被 ignore 的敏感本地文件:
密钥对.zip 已由根 .gitignore 排除,未进入待提交集
背景
基于
pr-206工作区当前状态做了一轮安全与数据审核。目标是把可验证结论和需要后续处理的安全假设统一落到 issue,避免审计结果散在本地上下文里。已审计范围
openless-all/app/src-tauri/src/commands.rs、openless-all/app/src/pages/QaPanel.tsxAGENTS.md、promo-openless-v2/.github/workflows/*、Tauri updater 配置、MCP 资源可见性结论摘要
pr-206现有两处代码改动未发现直接新增敏感数据泄漏:prefs:changed广播的是UserPreferences,按当前 TS/Rust 类型不包含 API key / token / 密码。风险与待办
CLAUDE.md:96说凭据在 Keychain,明文 JSON 只是 legacy fallback;但openless-all/app/src-tauri/src/persistence.rs:108-125/:236-303/:661-718显示当前实现为~/.openless/credentials.json纯 JSON,写 0600 权限但不使用 Keychain。需要决定:恢复 Keychain / 加密本地凭据 / 更新文档与威胁模型。openless-all/app/src-tauri/tauri.conf.json:68-70设置"csp": null。桌面 app 不是普通网页,但 QA 面板渲染 markdown 且 app 有 IPC surface,建议建立最小 CSP 或写清楚关闭原因与 XSS/IPC 边界。.github/workflows/pr-agent.yml:4-33使用pull_request_target,给外部 PR 可触发路径注入OPENAI_KEY与自定义 OpenAI-compatible API base,且 action 使用the-pr-agent/pr-agent@main未 pin SHA。当前注释说明不 checkout PR 代码,但仍建议 pin action、限制触发条件、评估 issue_comment 路径和 third-party action 供应链风险。.github/workflows/release-tauri.yml:99-117在 Apple signing/notarization secrets 缺失时只 warning,可能产出 ad-hoc macOS release;需要确认正式 tag 是否必须 fail closed。promo-openless-v2的npm audit --audit-level=moderate报 4 个 moderate,链路是postcss <8.5.10(GHSA-qx2v-qp2m-jg93)经@remotion/bundler/@remotion/cli/@remotion/studio-server引入。建议升级 Remotion 或执行npm audit fix后复查。promo-openless-v2/当前未跟踪,包含约 190 个媒体文件/截图/视频引用,并且node_modules/、out/、public/SC/被该目录自己的.gitignore忽略。需要人工确认这些素材是否可公开、是否包含用户录屏/个人信息,以及最终是否只提交源文件而不是构建产物。验证记录
npm run buildinopenless-all/app通过(Vite 有动态/静态 import chunk warning,非阻塞)cargo check --manifest-path src-tauri/Cargo.toml通过(16 个既有 dead-code warning)npm run checkinpromo-openless-v2通过npm audit --audit-level=moderateinpromo-openless-v2失败并报告 4 个 moderate 漏洞npm audit --audit-level=moderateinopenless-all/app两次因 npm registry TLS 连接中断未完成,需要网络恢复后重跑关联上下文
pr-206AGENTS.md、promo-openless-v2/密钥对.zip已由根.gitignore排除,未进入待提交集