已开启
fix: 修复四个 P1 级风险并补充测试 #2
阿柒创建于 22 天前
fix: 修复四个 P1 级风险并补充测试 #2
已开启
阿柒创建于 22 天前
阿柒
阿柒成员
22 天前

fix: 修复四个 P1 级风险并补充测试

likedislike
合并受阻
atomgit-bot
atomgit-bot
22 天前 评论:

变更摘要

本 PR 主要针对四个 P1 级安全风险进行修复,并补充了相应测试:强化了 CJV_HOME 目录的安全校验、将分发校验和改为强制校验、对 envsetup 生成的可 source 环境脚本进行 shell 转义,以及避免临时/备份清理逻辑误删用户自定义工具链。整体目的是防止误配置或不可信输入导致删除用户数据、执行任意命令或安装未经验证的工具链。

主要改动

  • set_home 增加不安全目录拦截src/config.rsSettings::set_home 在写入前调用新增的 utils::is_unsafe_cjv_home,若目标是文件系统根目录或用户主目录则返回 CjvError::InvalidArgument,避免后续破坏性操作误清空数据。
  • is_unsafe_cjv_home 新增目录安全性判断src/utils.rs 新增该函数,识别 /、空路径、Windows 根级路径以及 dirs::home_dir() 返回的用户主目录,并补充对应单元测试。
  • 卸载前校验 CJV_HOME 标记src/self_update.rs 新增 validate_cjv_home,在 self_uninstall 执行破坏性操作前要求目录包含 settings.tomlbin/cjv 等 cjv 标记,防止误卸载到无关目录。
  • 下载安装强制校验 checksumsrc/dist.rsdownload_and_install 将 checksum 从可选改为强制,None 时直接返回 CjvError::DownloadFailed,校验失败时清理临时归档文件,并新增集成测试 install_refuses_toolchain_without_checksum
  • 环境脚本生成增加 shell 转义与临时目录清理保护src/env.rs 新增 sh_escape/pwsh_escape 对工具链名称和路径转义;src/fstx.rs 新增 looks_like_toolchain 保护真实工具链不被清理,atomic_replace 使用带进程 ID 的唯一备份名避免覆盖用户目录。
likedislike
atomgit-bot
atomgit-bot
22 天前 评论:

代码审查

✅ 未发现问题

likedislike
atomgit-bot
atomgit-bot
22 天前 评论:

AtomGit AI 助手使用指南

在 PR 评论中使用命令即可触发。支持在普通评论和代码行评论中使用。

功能 命令 说明
代码审查 /ai review 检查代码质量、潜在问题、安全风险
PR 摘要 /ai summary 生成 PR 变更内容的结构化摘要
代码解释 /ai explain 解释代码变更的逻辑和意图
自由提问 @atomgit-bot <问题> 询问关于本 PR 的任何问题
帮助 /ai help 显示此帮助信息

免责声明

AI 助手可能存在误判,请结合自身判断。可以对评论点 👍 或 👎 帮助我们改进。

likedislike