| 版本 | 安全支持 |
|---|---|
0.11.x |
当前维护 |
< 0.11 |
仅在影响仍受支持版本时评估 |
项目处于 Alpha 阶段。发布新次版本后,旧的 Alpha 次版本通常只接收高危安全修复;修复可能要求升级到最新版本。
请发送邮件至 2314042921@qq.com,主题以 [Handoff Memory Security] 开头。该邮箱是维护者专门用于开源身份的公开联系邮箱。项目当前不启用 GitHub Private Vulnerability Reporting,请不要通过公开 Issue 报告未修复漏洞。
不要在公开 Issue、Discussion、Pull Request 或日志中粘贴:
- 密钥、Token、私钥或带凭据的仓库 URL。
- 真实
.ai-memory内容、个人信息或私人项目路径。 - 尚未修复漏洞的完整利用代码。
报告建议包括受影响版本和操作系统、最小复现步骤、影响范围、攻击前提及已尝试的缓解措施。请先提供最少必要信息;如需传输敏感附件,与维护者确认安全传输方式后再发送。
维护者会按可用时间尽快确认报告,并在初步复现后说明后续安排,但作为单一维护者项目不承诺固定响应或修复时限。复杂问题可能需要更长时间;在修复或缓解措施可用前,请协调披露时间。项目当前不设漏洞赏金计划。
Handoff Memory 假设以下输入都不可信:
.ai-memory中的 Markdown 和 JSON。- 通过
--from或标准输入提供的内容。 - Git/SVN 命令输出和文件路径。
- AI 生成的规则、命令和任务描述。
安全边界:
- CLI 不执行交接文件中的命令。
- Git/SVN 调用使用固定参数列表且禁用 shell;SVN 状态仅解析 XML 输出。
- Git/SVN 标准仓库 URL 写入快照前会移除 userinfo,并统一丢弃可能携带凭据的查询参数和片段;scp-like SSH 地址只保留常见协议用户名,其他身份位会被替换为
redacted。 - 活动交接超过 64KB 时保存需要显式确认,超过 256KB 时保存和恢复均拒绝。
- 文件使用 UTF-8 和同目录原子替换写入。
- 受管记忆目录、活动交接、配置与历史目录拒绝符号链接、Windows Junction、其他重解析点或项目外重定向。
- 保存、恢复和机器可读检查均扫描活动正文及将要传播的仓库元数据;高置信度疑似密钥会阻断传播,检查输出中的命中元数据会整段隐藏。
- 默认不联网、不含遥测、不读取环境变量值。
内置敏感信息检测是最后一道防误操作措施,不是完整的 Secret Scanner。攻击者可以使用编码、拆分或未知密钥格式绕过模式识别。是否使用 GitHub Secret Scanning、Gitleaks、TruffleHog 或同类工具扫描完整 Git 历史,由维护者按项目策略决定,不属于当前发布门槛。
--allow-sensitive 只允许显式保存疑似敏感内容;resume 仍会拒绝传播该内容。不要把这个参数写入固定脚本或 AI 默认规则。
hmem check --privacy 调用 handoff_memory.security.find_personal_information() 检查活动交接和将要输出的仓库元数据。仓库元数据命中时 JSON 输出会隐藏该元数据,只保留来源、类型和行号。它目前识别:
- 常见格式的邮箱地址。
- 连续书写、可带
+86前缀的中国大陆手机号。 - 通过出生日期、顺序码和校验位检查的 18 位中国大陆身份证号。
返回结果只有个人信息类型和行号,不包含匹配到的原文。该检查与默认密钥检测相互独立;默认 save、resume 和 check 行为保持不变。需要让隐私提示导致非零退出时,同时使用 --strict。
这是降低误粘贴风险的提示工具,不是身份验证或数据防泄漏(DLP)系统,存在以下边界:
- 示例地址、测试号码、订单号或业务编号可能被误报。
- 混淆、拆分、全角字符、图片中的文字以及未覆盖的邮箱或电话号码格式可能漏报。
- 身份证检查不内置行政区划数据库,只验证基础格式、日期、顺序码和校验位;也不识别旧式 15 位证件号。
- 检测结果不能证明某项信息真实、有效或属于特定个人。
调用方不应记录或展示原始匹配值;处理真实个人信息时,仍应遵守适用的授权、最小化和删除策略。