# 安全说明（typing-insight）

## 报告漏洞

请在 GitHub 仓库 Issues 提交安全报告（仓库地址见 package.json repository）。涉及敏感细节时可先联系作者（邮箱待补充），确认后再公开细节。

## 威胁模型

- **本机物理访问者**：可读取明文 SQLite 数据。当前版本未实现磁盘加密（FR-022），这是已知的、文档化的限制。缓解：内容级脱敏 + 密码框排除 + 短保留期。
- **其他本机用户/进程**：数据目录默认无额外 ACL；Windows 用户目录通常仅本用户可读。插件不提升权限、不读取其他进程内存。
- **网络**：插件运行期零网络请求；依赖安装时的 npm 网络活动不属于运行期。
- **键盘钩子滥用担忧**：钩子仅用于按键计数与文本采集门控；原始按键序列不对外暴露，日志不含按键内容。

## 签名状态

- `typing-insight-uia.exe` 当前**未做 Authenticode 签名**（NotSigned）。全局键盘钩子 + 未签名 EXE 可能触发 SmartScreen/杀毒软件告警。
- 正式发布前将引入代码签名证书（CI Secret 管理 .pfx，绝不入库/入包）；在完成签名前，本插件仅以 rc/beta 标签发布，不占用 latest。

## 已知风险与限制

1. SQLite 明文存储（见 PRIVACY.md）。
2. 微信 4.1.x 聊天输入区为封闭渲染，文本不可采集（仅按键）——按限制处理。
3. 应用切换后 500ms 内的个别按键可能归属前一应用（已用事件驱动前台兜底）。
4. 键盘钩子异常自动重试未实现（UIA 失联有 5 秒重连）。
5. UIA helper 启动期存在偶发瞬态 fault（已分步隔离，不影响采集，fault 带 step 定位）。

## 构建与发布

- 发布包内容由 scripts/verify-release.mjs 校验：唯一 helper、无数据库/日志/测试残留、版本一致、SHA-256 与 RELEASE.md 一致、无密钥文件。
- CI 建议增加：npm audit、依赖许可证检查、Secret 扫描、SBOM 生成（见 RELEASE.md 发布清单）。
