安全政策
当前状态
设备工具只允许文档列明的读取,以及对 credential_service 和 credential_service_primary 的有限写入。写入要求当前诊断实体、与该诊断绑定的五分钟一次性操作计划、schema v2 原子快照、精确状态复核、回读验证和自动恢复;autofill_service 始终只读。演示模式的前端会话只能从其子 Injector 解析 fixture gateway,无法回退到真实 Tauri 设备 gateway。
发布流水线绝不调用 ADB。所有发布渠道均提供 GitHub Artifact Attestation、manifest 和 SHA-256 校验。Windows 产物没有 Authenticode 签名,无需 CA 凭据;来源证明用于验证构建来源,不能提供 Windows 发布者身份或 SmartScreen 信誉。稳定版 macOS 必须通过平台签名与 notarization,凭据限定在 Environment 中,签名失败不能降级。manifest 的 signed 字段仅表示平台代码签名。应用没有 updater 或 minisign 签名密钥。
后端会拒绝失效的父实体 ID 和迟到的异步结果。首次可能写入前必须先保存 executing 快照;取消、过期、状态漂移和执行结果都是终态。旧 v1 快照文件保持原样且不能用于恢复。
安全边界
- WebView 永远不能获得通用进程或 shell API。
- 可执行文件和参数必须分开传递,禁止拼接 shell 命令字符串。
- 设备 serial、Android user、provider component、setting key、package 和 URL 必须来自后端控制的枚举结果或固定 allowlist。
- WebView 只选择不透明的 ADB candidate ID 和 device ID;原生路径与解析后的 serial 只由 Rust 后端处理。
- Demo Mode 只使用内置数据,绝不能回退到真实 ADB 操作。
- 常规测试只使用 mock 或 fake executable,不能使用宿主机 ADB server。
- 诊断数据保留在本地,仅在用户主动导出时生成脱敏内容。
报告漏洞
请使用本仓库 GitHub private security advisory 功能,不要提交真实凭据、passkey、完整设备 serial 或未脱敏日志。报告应包括受影响版本、平台、复现条件和被突破的安全边界。
完成初步处置前,请勿创建公开 issue。