Skip to content

Security: twoer/stacktake

Security

SECURITY.md

安全策略

支持版本

版本 是否接收安全修复
1.0.x ✅

V1 首发为 0.1.0。此前仓库为私有状态,无公开发布版本。

上报漏洞

优先走 GitHub Security Advisories(仓库 → Security → Advisories → Report a vulnerability)。 这是一对一私密通道,在修复发布前不会公开,适合还没修好的问题。

如果问题已经公开、不涉及未修复的攻击面,直接开普通 issue 即可。

上报时请附上:

  • 能触发的版本 / commit
  • 你的平台(macOS 版本 / Windows 版本)——本工具双平台,行为可能不同
  • 复现步骤,以及预期与实际行为的差别
  • 影响面:是信息泄露、误删,还是别的

这个工具的安全边界

以下几条是设计上的硬约束,不是当前实现的偶然状态。偏离它们的改动本身就算安全问题:

不接触凭据

  • SSH 私钥内容永不进入数据流。指纹只走 ssh-keygen -lf,「是否加密」只靠读文件头 512 字节做子串判断。私钥内容不落缓存、不进 detail、不传前端。 当前 SSH 扫描器未注册进侧栏,运行时不接触任何凭据。
  • AI 工具目录只读文件名,不读任何文件内容(ai_tools.rs 里禁止 fs::read / read_to_string / File::open)。 凭据可能藏在 auth.json / config.toml / settings.json 任意一处,逐个文件过滤堵不完;不读内容是从根本上消除这条路径。

不是网络服务

本工具不监听端口、不启动 HTTP 服务、没有跨域攻击面。这是选 Tauri 而不是 Web 的理由。 任何引入网络监听的改动都违背这个前提。

清理可恢复、且必须人显式发起

只有 repos / toolchain / ai_tools 三组接了删除入口,执行全部走 trash::delete(废纸篓,可恢复),绝不硬删。 服务端不信任前端传来的 id,回到白名单 / 当前目录重新复核后才删。

  • 整仓删除前查未推送提交与未提交改动,有则拒绝。
  • 构建产物删除清的是 node_modules / target 这类可再生目录,不动源码与 .git。
  • ai_tools 的会话删了不会再生——这不是缓存,确认弹窗里单独写明了。

除上述三组外全程只读

其余扫描分组只统计体积与元数据,不写任何东西。

不属于安全问题的情况

  • 扫描结果与 du 不一致——口径不同(dir_size_excluding 会按规则排除部分子目录),见 docs/known-limits.md。
  • 总占用报不满——SSH 与 Docker 不进 V1 是有意接受的取舍,账面约覆盖 94%,不是待修 bug。
  • 未签名构建的 Gatekeeper 警告——macOS 未签名应用的正常行为。

响应

个人维护的项目,不承诺固定 SLA。收到报告后会先确认收到并给出初步判断; 确认有效的问题会排进修复并发布补丁版本。

There aren't any published security advisories