Skip to content

Security: matou1118/DevCleaner

Security

SECURITY.md

安全策略

支持范围

版本 收到安全报告
0.1.x ✅

报告漏洞

不要开公开 Issue。 用 GitHub 的 私密漏洞报告(Security → Report a vulnerability)。

48 小时内我会确认收到,评估后给修复时间。

这个工具的攻击面

它以当前用户的权限操作你的机器。默认非管理员,删 HKLM 下的键会报「权限不足」。

它不做这些事:

  • 不联网。没有遥测、没有自动更新、没有崩溃上报
  • 不读你的文件内容。扫描只看路径、文件名、大小、修改时间
  • 不执行要删的东西
  • 不改 PATH、不改注册表默认项、不动防火墙

已知的信任边界

按风险从高到低:

1. 判据错误导致误删

这是本项目最大的风险。 一个扫描器把在用项目当成垃圾,代价是丢源码。

现有防线:

  • 文件删除走 SHFileOperationW + FOF_ALLOWUNDO → 进回收站,可还原
  • 需确认项不自动勾选
  • 确认弹窗列出前 40 项和总条目数
  • Git 仓库默认只读,要同时满足三条才进可删列表
  • 删之前检查文件是否被进程占用

仍然存在的风险:你勾选了「需确认」项并确认删除,源码就进回收站了。

2. 注册表修改

  • 删之前必定先导出 .reg 备份,导出失败就拒绝删除
  • 备份在 %LOCALAPPDATA%\DevCleaner\registry_backups\
  • 只碰 HKCU 的 10 个 MRU 键和三个 Uninstall/Run 分支,刻意不遍历 HKCR\CLSID —— 那里误删会让系统装不上程序

3. 断链删除

用 os.rmdir/os.unlink 只删链接本身。不递归进去 —— 断链的目标已经不存在,递归进去可能命中同名的别的东西。

4. TOCTOU

扫描和清理之间有时间差。中间状态变了(程序被安装/卸载/文件被占用)可能导致删错。防线是清理前重新检查存在性和占用。

降低风险的用法建议

  • 第一次用先别点「移入回收站」。 先展开每个分类,看清楚判据对不对
  • 保留 settings.yaml 的副本
  • 定期清空回收站之前,确认一遍最近删了什么
  • 注册表备份目录别急着删
  • 重要项目自己还有 Git 备份的话,风险本来就低

披露

发现问题请按上面报 privately。修好后我会在 CHANGELOG 里记一笔,包括误报了什么 —— 判据的教训比修复本身更有价值。

There aren't any published security advisories