发现安全漏洞(例如:特征库更新被篡改、规则误杀系统组件、未授权修改系统等),请不要公开提 issue,直接联系仓库维护者,或发送邮件(通过 GitHub 主页联系)。
- 默认只读:scan 不修改任何设置
- 入口分别确认:
- GUI:普通权限界面先完成 review 选择;只有选择中包含
manual_impact时才要求独立二次确认,之后才请求用于 clean 的管理员 UAC - CLI /
2-清理.bat:必须以管理员权限运行,并在控制台中选择待处理项;它不提供与 GUI review 相同的复核体验,但仍受 strict pending、当前 profile 和 current-target 重验约束。manual_impact没有正确确认 digest 时一律拒绝 - 两种入口的
-YesToAll都不能绕过 safe/tested、执行类别、matcher 或当前目标授权
- GUI:普通权限界面先完成 review 选择;只有选择中包含
- 逐命中来源:scan hit 保存
matched_pattern、matched_type、matched_field。危险动作只接受实际命中的exact,或命中真实路径字段的path;规则中存在其他窄 matcher 不构成授权,contains/regex与execution.allow_auto=true都不能绕过 - 确定的匹配语义:
exact/contains/path使用OrdinalIgnoreCase字面比较,通配符字符保持字面含义;regex是唯一表达式 matcher - pending schema 3 失败关闭:只接受整数
pending_schema_version: 3,且必须包含actions、resolved、observations、suspicious四个数组。schema 2、旧版、缺失、字符串或数组版本必须重新 scan,不自动升级;GUI 也拒绝用它们生成执行子集 - 管理员态重新授权:clean 对当前特征库中的同一 matcher、同一字段和当前对象重放匹配,并核对服务、自启、任务或进程身份。自启源仅限标准
HKLM/HKCU ...\CurrentVersion\Run键;用户选择后、任何备份或系统变更前再最终复核 - 敌对 pending 防护:管理员 clean 拒绝重复 JSON 键、超过 5 MiB、容器深度超过 64、非法 UTF-8 或读取期间变化的文件;检查和读取使用同一受保护文件句柄,授权失败只标记 skipped,不执行 mutation
- 类别与高影响项隔离:
safe=false不能成为automatic_safe;只有完整合法的manual_impact策略、exact/path实际命中、用户主动勾选并完成二次确认,才可进入手动执行路径。其余safe=false/tested=false只报告 - 双重摘要绑定:执行子集的 pending 文件 SHA-256 与已确认
manual_impact身份摘要同时绑定并校验;任一清单、身份或确认范围改变都拒绝执行 - 执行后验证与安全结果:每个动作执行完重新读取真实状态;每项结果持久化并写回
result_reason/failure_stage,GUI 仅显示通过严格验证和安全净化的result_reason/failure_stage。验证失败标记failed,不假装成功 - 持久动作备份 + 一次性动作隔离:持久动作
disable_service/remove_autostart/disable_task在执行前备份并可通过可信恢复包恢复。stop_process和stop_service_runtime是用户单独确认的一次性、非持久动作,不进入恢复包,因此不可通过恢复包恢复;它们不删除文件或修改自启 - HRWSCCtrl 分流约束:非 PPL exact
HRWSCCtrl才允许stop_service_runtime,且不禁用服务、不修改StartMode。执行前复验服务/路径/PID/进程名/进程路径/启动时间,并通过同一原生 SCM 句柄核对配置和 PID;停止后约 5 秒内出现任意正 PID 即记录为failed/verification。PPL 保护级别 3 不尝试强停,只允许open_official_uninstaller,并要求完整可信的联想卸载证据 - 官方卸载安全交接:用户主动选择并确认后,管理员 clean 在短生命周期进程内重新校验 pending SHA-256、影响摘要、当前 profile、exact 服务、卸载注册表、稳定文件身份、安装目录约束和联想 Authenticode 签名,再以无参数方式打开官方 EXE。打开结果只能是
manual_required,不代表卸载完成;兼容旧结果的 GUI 交接也必须在隔离进程中执行相同复验 - 受保护清单版本:只接受整数
inventory_schema_version: 3。v1/v2、缺失版本和未来版本均拒绝并要求重新扫描;不自动迁移,也不静默迁移 - 服务证据状态机:进程身份、LaunchProtected 和卸载证据分别按严格字段表达;进程身份
complete原子绑定稳定运行 PID、ProcessName、ProcessPath和ProcessStartTimeUtc,但本身不替代 matcher 与动作授权。not_running与unavailable始终只观察、不可执行并要求重新扫描 - 只读采集与故障隔离:管理员采集器保持只读,只对当前 profile 声明的特权候选服务做昂贵身份/保护/卸载证据增强;普通服务使用轻量投影。单条记录失败只产生经过净化的
unavailable,其他记录继续独立处理 - 内部可信来源标记:内部
ProcessIdentitySource仅在受保护 inventory 包验证通过后附加,不序列化到 pending 或执行子集。任何带有ProcessIdentitySource的已复核动作都失败关闭并拒绝执行 - 普通扫描的数据边界:管理员普通 scan 与可信 inventory 使用同一 v3 服务投影;非管理员有限扫描不得合成保护状态或卸载证据
- 服务名授权边界:
stop_service_runtime与open_official_uninstaller都只接受exact的service_name来源;显示名或服务名的 contains/regex 均不授权 - 管理员执行时再绑定:管理员执行重新读取当前目标并核对对应动作的完整身份。任何身份漂移都令
status='skipped'、failure_stage为空,并以安全净化的result_reason提示重新扫描;failure_stage仅供status='failed'终态使用 - 特征库供应链:
-Mode update支持 SHA256 校验(配置ProfileSha256Url后强制校验,不一致拒绝替换);建议发布方配套发布.sha256文件
自动测试不等同真实机器验收,也不等同其他机器上的真实 UAC、用户确认、系统 mutation 或恢复闭环。2026-09-07 当前联想机器完成了一次用户批准的官方卸载入口验收:经安全复验打开联想卸载程序,用户在厂商界面完成卸载,0 / 5 / 30 秒回读均未发现 HRWSCCtrl、目标进程或对应卸载项。随后修复的管理员 clean 直接交接路径已通过全量自动回归,但目标已经卸载,未在同一目标上重复实机启动。v1.8.1 仍未正式发布;相关修复已推送至 master。
- 特征库是静态名单,新机型/新软件需要持续补充;
tested=false的规则只报告不自动处理 - restore 按已校验备份恢复持久化配置(StartType/DelayedAutoStart)和记录的原运行状态;单项失败必须保留为失败并提示用户
- 卸载动作不静默执行;即使官方卸载程序已打开,最终选择和厂商卸载过程仍由用户完成
- 桌面快捷方式的目标、工作目录和多尺寸鼠鼠图标已在当前 Windows 机器验证;其他 DPI、主题和机器仍需持续验证