
LetRecovery 安全模型揭秘按风险比例设计的 fail-closed 策略而非伪安全堆砌【免费下载链接】LetRecovery一款免费开源的 Windows 系统重装工具项目地址: https://gitcode.com/gh_mirrors/le/LetRecoveryLetRecovery 是一款免费开源的 Windows 系统重装工具核心职责是分区、引导、离线注册表与系统镜像的部署。这类操作一旦出错代价极高——写错一块盘就可能抹掉整台机器的数据。本文拆解它的安全模型它不靠处处上锁的表面功夫而是按每一步的真实风险比例在关键路径上执行fail-closed失败即关闭策略让不确定永远倒向停止而不是倒向侥幸继续。重装工具为什么天生高风险普通软件出 bug最坏是闪退重装工具出 bug最坏是把用户唯一的系统盘格式化成别人的数据。因此它面对的风险是不可逆的目标磁盘选错→ 整块盘被重写镜像被篡改→ 装进去的是一个带后门或损坏的系统重启交接被伪造→ 桌面端授权安装 A 分区重启进 PE 后却被执行成别的操作下载文件中途损坏→ 部署出一个缺件、跑不起来的系统。LetRecovery 的应对思路只有一句话风险越高闸门越严拿不准的地方一律先停下来。什么是 fail-closed失败即关闭传统做法常是 fail-open失败即放行——校验没通过就先继续跑大概率没事。而 fail-closed 相反任何一个前置校验失败整个流程立即中止绝不降级、绝不记个警告继续走。LetRecovery 里大量这样的注释和断言例如密钥生成时熵源失败就直接报错会话密钥生成依赖 Windows 系统随机数生成器熵源失败即失败关闭handoff_auth.rs读取受保护控制文件时长度超限或内容在读取过程中发生变化直接返回错误而非截断后继续scoped_temp_file.rs关键在于闸门是按风险比例布置的而不是所有地方都堆满同样的锁风险等级处理策略典型场景高危改盘/改引导/装系统多重认证 原子性 回读校验重启交接、安装源锁定、备份发布中危读外部数据严格解析 边界校验下载校验、镜像分卷枚举低危纯本地只读基本信任 轻量断言配置读取、进度上报重启交接的认证边界LRHA1 与 LRHC1重装当前系统盘时桌面端无法一步到位——必须写入引导、重启、再进 WinPE才能完成。这一次重启是最危险的信任边界重启后 PE 怎么证明这份任务确实是刚才那个桌面端授权给我的LetRecovery 用一对分离的标记解决它公开标记 LRHA1不含密钥只带目的、会话 ID 和 HMAC 签名用来在重启后的可写数据卷上定位任务受保护胶囊 LRHC1真正持有本次会话的 32 字节密钥只写进受保护的私有 boot 载荷绝不落盘到数据卷。公开标记负责找到它受保护胶囊负责证明它是真的。二者用HMAC-SHA256绑定到逐字节精确的配置内容上——改一个字节、换一个操作目的把安装偷换成备份、或跨域重放都会被常量时间比对拒掉恒定时间验签防止时序侧信道handoff_auth.rs四个操作域安装/备份/扩容/维护彼此独立互相不能复用签名handoff_auth.rs配套的公开清单LRHM3同样做了防篡改约束字段顺序、重复、大小写、未知字段、非规范字节形式任何一项不合都会被拒绝——清单摘要本身不是授权边界只有被handoff_auth认证过的配置才算数handoff_manifest.rs。安装源锁定文件从验签到部署全程只读用户可能从 U 盘、光驱或网络盘挂载 WIM/ESD/SWM。如果校验时和部署时读的不是同一份文件校验就形同虚设。LetRecovery 的LockedInstallSourceSet的做法是以拒绝写、拒绝删除的共享模式打开每一个镜像分卷并全程持有句柄用同一句柄算出长度和 SHA-256部署前再逐字节复核——另一个进程在此期间无法写入、改名或删除这些文件只读句柄 拒绝写/删共享模式打开源文件install_source_lock.rs部署前重枚举、重新哈希任何变化即失败关闭install_source_lock.rs此外它还会先拒绝任何重解析点junction/符号链接参与路径防止用目录连接点把已校验的文件悄悄换成另一个文件对分卷镜像还要求分卷编号连续、无重复、无缺口缺一卷就停。下载完整性校验只信最强的那把锁在线下载镜像、软件时网络链路是不可信的。LetRecovery 的校验策略很克制也很硬SHA-256 永远优先于 MD5声明的 SHA-256 若格式非法就直接报错绝不回退到更弱的 MD5 蒙混过关download_integrity.rs默认只允许 HTTPS明文 HTTP 必须显式兼容开关才会被接受download_integrity.rs服务器下发的文件名在拼进本地路径前要先过一遍安全校验拒绝路径穿越..\、拒绝 Windows 保留设备名如CON、COM1download_integrity.rs这三条合在一起的效果是没提供校验和不会被当成校验通过——缺校验和的下载会被明确标记为未提供而不是默认信任。驱动签名信任只加白名单绝不放行未签名把磁盘控制器等启动关键驱动注入 PE 时老版本 WinPE 可能缺少完整的微软 WHCP 签名链导致 DISM 拒绝其实合法的驱动包。LetRecovery 的解法只是把三份已固定哈希的微软根/中间证书加入 PE 的易失性证书库——而且每次注入前都会先比对内嵌证书的实际 SHA-256哈希对不上就整体失败driver_trust.rs。这条边界写得很明确它从不修改目标系统的离线证书库也从不放行未签名驱动。换句话说它修的是PE 缺了链中间而不是把验签关掉。备份发布崩溃也能恢复的原子写备份系统盘为镜像时如果写到一半断电最怕的就是留下一个半截文件却还假装成功。LetRecovery 的backup_atomic_publish用带校验和的 PREPARED 日志 文件 ID 原子重命名保证要么完整成功、要么可回滚。恢复时它从不把日志阶段当作真相而是重新按哈希和文件 ID 去实际分类新旧对象从而判断到底是已提交还是应回滚模块整体设计意图backup_atomic_publish.rs受保护发布会话的目录/文件身份校验backup_atomic_publish.rs明确不做什么比做什么更见功力真正专业的安全模型往往体现在它克制住不做什么。以深度移除 Defender 引擎这个高风险选项为例LetRecovery 用一份严格白名单把边界钉死只处理明确的 Defender 引擎服务WinDefend、WdFilter等固定名单绝不触碰防火墙mpssvc、UAC、VBS、SmartScreen、Microsoft Defender for Endpoint 等无关组件任一步注册表写入、ACL 修改、文件删除、删除后复核只要失败就整体中止绝不记个警告继续装完DEFENDER_ENGINE_REMOVAL.md类似的克制贯穿全项目镜像暂存盘只选明确未加密、可写、状态可确认的卷遇到 BitLocker 状态未知直接排除绝不假定重启后的 PE 一定持有解锁密钥DATA_STAGING_POLICY.md。小结安全是分层闸门不是标语把 LetRecovery 的安全模型浓缩成一句它把安全预算花在真正会丢数据的地方并且在每个拿不准的点都选择停而不是继续。高危边界重启交接、安装源、备份发布→ 多重认证 原子性 回读外部输入下载、文件名、签名链→ 严格解析 只信最强校验不确定时 → fail-closed立即中止绝不降级。这种按风险比例设计的工程判断才是重装工具该有的安全感来源——不靠喊口号而靠每一道闸门在失败时都诚实地关上。相关设计文档安全策略 · 镜像暂存策略 · Defender 移除边界【免费下载链接】LetRecovery一款免费开源的 Windows 系统重装工具项目地址: https://gitcode.com/gh_mirrors/le/LetRecovery创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考