已开启
fix: 修复四个 P1 级风险并补充测试 #2
阿柒创建于 22 天前
fix: 修复四个 P1 级风险并补充测试 #2
已开启
合并受阻
atomgit-bot
22 天前 评论:
22 天前 评论:
变更摘要
本 PR 主要针对四个 P1 级安全风险进行修复,并补充了相应测试:强化了 CJV_HOME 目录的安全校验、将分发校验和改为强制校验、对 envsetup 生成的可 source 环境脚本进行 shell 转义,以及避免临时/备份清理逻辑误删用户自定义工具链。整体目的是防止误配置或不可信输入导致删除用户数据、执行任意命令或安装未经验证的工具链。
主要改动
set_home增加不安全目录拦截:src/config.rs中Settings::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.toml或bin/cjv等 cjv 标记,防止误卸载到无关目录。 - 下载安装强制校验 checksum:
src/dist.rs中download_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 的唯一备份名避免覆盖用户目录。


atomgit-bot
22 天前 评论:
22 天前 评论:
atomgit-bot
22 天前 评论:
22 天前 评论:
fix: 修复四个 P1 级风险并补充测试