Skip to content

Latest commit

 

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

CWE-602 · Client-Side Authorization Vulnerability · Whitebox Audit Methodology

Seep-Tool

客户端鉴权脆弱性(CWE-602)白盒审计方法论与纵深防御加固研究框架
Methodology · Security Advisories · Hands-on Teaching Range

CWE-602 Defense Advisories Lab License


🗺️ 仓库导航

类型 目录 内容
📖 理论基础 docs/01-理论基础/ CWE-602 原理与成因 · 七类缺陷模式矩阵
🛡️ 防御体系 docs/02-防御体系/ 纵深防御架构 · Ed25519 许可设计 · 发布前自检清单
📋 披露流程 docs/05-披露流程/ 负责任的漏洞披露标准流程
🔍 安全公告 docs/04-安全公告/ 10 款产品 · 19 份公告 · 按缺陷模式分类
🎯 教学靶场 docs/03-教学靶场/ 自建样本源码 + 完整点位表 + 软件归属对照

⚠️ 重要声明:本仓库不含任何预编译产物

本仓库是「文档 + 自建教学样本」型安全研究知识库。

  • ❌ 不提供任何预编译可执行文件(EXE / DLL / 安装包)
  • ❌ 不提供任何一键激活、授权绕过、补丁工具
  • ❌ 不提供任何注册机、密钥生成器或规避技术措施的方法
  • ❌ 不包含任何真实商业产品的偏移、字节或实现细节
  • ✅ 提供脆弱性成因分析、审计方法论与企业级防御加固方案
  • ✅ 提供自建教学靶场的完整源码(MIT 协议)

本项目的全部内容面向软件开发者、安全工程师与安全专业学生, 目的是帮助研发团队识别并修复客户端鉴权设计缺陷,构建更健壮的商业软件。


🔬 研究背景

什么是 CWE-602?

根据 MITRE CWE 官方定义:

CWE-602: Client-Side Enforcement of Server-Side Security 当软件依赖客户端来实施本应由服务端强保证的安全策略时,攻击者可以通过篡改客户端状态、 改写本地函数返回值或修改内存,绕过全部安全限制。

这是一个架构级缺陷,而非某个具体的编码错误。它的危害在于: 一旦攻击者获得对客户端运行环境的完全控制权(这在桌面软件场景下是必然的), 所有由客户端自行裁决的安全决策都将失去可信性。

为什么桌面软件特别容易中招?

客观约束 导致的设计陷阱
需要支持离线使用 无法每次启动都向服务端校验 → 退化为本地裁决
需要低延迟响应 特权判定走本地缓存 → 状态可被篡改
需要减少服务器成本 把权限计算放到客户端 → 决策逻辑暴露
需要保护商业利益 自行发明加密/校验方案 → 引入新的密码学缺陷

🧭 方法论框架:四层审计视角

本方法论建议从四个层次逐级审计客户端鉴权实现:

┌───────────────────────────────────────────────────────────────┐
│ L1 · 架构层 (Architecture)                                    │
│   谁拥有最终裁决权?是否存在“服务端权威”闭环?                    │
├───────────────────────────────────────────────────────────────┤
│ L2 · 密码学层 (Cryptography)                                  │
│   凭据如何签发与验证?是否使用标准非对称签名?                     │
├───────────────────────────────────────────────────────────────┤
│ L3 · 运行时层 (Runtime)                                       │
│   决策状态存储在哪?是否可被外部读写?                            │
├───────────────────────────────────────────────────────────────┤
│ L4 · 代码形态层 (Code Form)                                   │
│   关键逻辑是否暴露?是否可被静态/动态分析定位?                     │
└───────────────────────────────────────────────────────────────┘

📖 详见 docs/01-理论基础/01-CWE602-原理与成因分析.md


🎯 客户端脆弱性模式矩阵

下表归纳了桌面客户端在鉴权设计中最常见的七类架构缺陷模式(已做抽象化处理,不含具体攻击步骤):

# 缺陷模式 涉及产品(实测样本) 关联 CWE 加固方向
1 单点布尔裁决 PixPin · Seer · XYplorer · Allen Explorer · Bandizip · Burp Suite · BoosterX CWE-602 业务逻辑内联化,消除显式判定出口
2 硬编码密钥材料 Snipaste PRO · Allen Explorer · BoosterX CWE-321 / CWE-798 改用非对称签名(Ed25519 / RSA-PSS)
3 动态库加载顺序缺陷 Bandizip · Burp Suite · XYplorer CWE-427 SetDefaultDllDirectories + 签名白名单
4 可写全局状态变量 XYplorer · Bandizip · BoosterX CWE-602 敏感状态加密存储 + 用毕擦除
5 明文进程间通信 Uninstall Tool CWE-311 / CWE-345 HMAC 消息认证 + 时戳防重放
6 自研弱校验算法 Listary Pro CWE-327 使用行业标准密码学原语
7 空值短路校验(Fail-Open) BoosterX CWE-287 鉴权分支全面改为 Fail-Closed

📖 每种模式的成因剖析与对照代码,详见 docs/01-理论基础/02-客户端脆弱性模式矩阵.md

📋 上述 10 款产品的逐款安全公告(含受影响版本、组件、根因与加固方案),详见 docs/04-安全公告/README.md


🎯 教学靶场 · 从「看懂」到「会做」

📌 理论看懂了,但不知道怎么动手?

docs/03-教学靶场/ 提供了完整的靶场参考环境。

靶场示例程序(SeepLab,MIT 协议)演示 6 种鉴权缺陷模式, 可用于走通这条完整链路:

源码  →  编译  →  IL/汇编  →  文件偏移  →  字节修改  →  效果验证

为什么需要靶场?

真实产品分析的三大障碍 靶场如何解决
版本漂移 —— 点位随版本变化 源码公开,可随时重建对照
保护层干扰 —— 混淆掩盖缺陷形态 无保护层,专注理解缺陷本身
无源码对照 —— 看不懂指令对应哪行逻辑 每条点位都对应到源码行

快速开始(零依赖)

cd docs\03-教学靶场
powershell -ExecutionPolicy Bypass -File .\build.ps1   # 用 Windows 自带 csc.exe 编译

.\SeepLab.exe 01        # 模式 01 · 单点布尔裁决
.\SeepLab.exe 03 <PE>   # ★ 对任意 PE 做导入表审计(真实可用)
.\SeepLab.exe all       # 依次运行全部模式

覆盖的 6 种缺陷模式

模式 核心缺陷 攻防成本对比
01 单点布尔裁决 授权状态为静态可写布尔量,被 3 处业务逻辑读取 改源头 1 处 vs 改消费端 3 处
02 硬编码密钥材料 信任根(公钥)无完整性保护,可被原位置换 无校验 1 处 → 三点交叉 5 处
03 动态库加载顺序缺陷 裸 LoadLibrary + 缺失 SetDefaultDllDirectories 攻击:放一个 DLL/防御:1 行代码
04 可写全局状态变量 权益判据存放在注册表/配置/环境变量 无需触碰二进制
05 明文进程间通信 鉴权结果通过无认证的 IPC 通道传递 强内核 + 弱通道 = 白下沉
07 空值短路校验 凭据缺失被当作「无需校验」→ 免检通道 攻击≈0 / 防御≈1 字节

每份点位文档包含 9 个板块

# 板块 内容
1 靶场程序信息 源码、编译命令、真实 SHA256
2 缺陷成因(源码层) 标注缺陷的代码 + 逐行讲解
3 二进制分析 真实字符串偏移、元数据偏移、IL 指令特征
4 完整点位表 偏移 / 原始字节 / 修补字节 / 效果
5 定位方法 如何自己找到这些点位(方法论)
6 验证步骤 修改前后的预期输出对照
7 回滚方式 三种回滚方法
8 软件归属对照表 该模式在哪些真实产品中出现、落在哪一层
9 防御加固方案 真实可用的修复代码 + 优先级路线图

💡 第 8 板块「软件归属对照表」是本仓库的核心设计 —— 它把「靶场里学到的模式」与「真实产品中的表现」对应起来, 但只引用设计层分析,不提供任何真实产品的偏移或字节。


🛡️ 纵深防御加固体系

针对上述缺陷,本方法论提出三层纵深防护架构(Defense-in-Depth):

┌───────────────────────────────────────────────────────────────┐
│ 第一层 · 传输与权威层 (Server-Side Authority)                  │
│  • 确立“服务端权威”原则:核心权益必须由服务端签发并二次验签          │
│  • 离线许可证采用非对称签名(Ed25519),私钥永不离线               │
│  • 全链路双向 mTLS 证书绑定 + 时戳 Nonce 防重放                   │
├───────────────────────────────────────────────────────────────┤
│ 第二层 · 环境与运行时层 (Runtime Integrity)                    │
│  • 关键系统 API 调用完整性自检 (Anti-Hook / Direct Syscalls)     │
│  • 自身二进制 Authenticode 签名动态复核                          │
│  • 严格 DLL 搜索目录白名单 (SetDefaultDllDirectories)            │
│  • 敏感内存区域加密与用毕即时擦除                                 │
├───────────────────────────────────────────────────────────────┤
│ 第三层 · 代码形态与混淆层 (Obfuscation)                        │
│  • 控制流平坦化 (Control Flow Flattening) 与虚假控制流            │
│  • 关键判定逻辑代码虚拟化 (VMP) 保护                             │
│  • 符号剥离与敏感字符串动态解密                                    │
└───────────────────────────────────────────────────────────────┘

📖 完整实现指南,详见 docs/02-防御体系/01-纵深防御加固体系.md


📚 文档目录(按类型分类)

📂 完整目录导航见 docs/README.md

文档仓库按类型组织,每个类型下是具体内容;安全公告按缺陷模式分类,每个模式下列出具体软件。

📖 理论基础 · docs/01-理论基础/

文档 内容
CWE-602 原理与成因分析 缺陷本质、为何客户端裁决不可信、四层审计视角
客户端脆弱性模式矩阵 七类高频缺陷模式的成因、反例与对照修正

🛡️ 防御体系 · docs/02-防御体系/

文档 内容
纵深防御加固体系 三层防护架构的工程落地指南
Ed25519 离线许可体系设计 可直接用于生产的非对称离线授权方案(含防御性参考代码)
发布前安全自检清单 桌面软件上线前必过的 20 项客户端安全基准

📋 披露流程 · docs/05-披露流程/

文档 内容
负责任的漏洞披露流程 安全研究者与厂商协作的标准流程与邮件模板

🔍 安全公告 · docs/04-安全公告/

📊 公告总览矩阵见 安全公告总览

按缺陷模式分类,每个模式文件夹下是具体软件的公告文件:

模式 名称 CWE 涉及产品 目录
1 单点布尔裁决 CWE-602 7 款 进入 →
2 硬编码密钥材料 CWE-321 / CWE-798 3 款 进入 →
3 动态库加载顺序缺陷 CWE-427 3 款 进入 →
4 可写全局状态变量 CWE-602 3 款 进入 →
5 明文进程间通信 CWE-311 / CWE-345 1 款 进入 →
6 自研弱校验算法 CWE-327 1 款 进入 →
7 空值短路校验 (Fail-Open) CWE-287 / CWE-863 1 款 进入 →

🎯 教学靶场 · docs/03-教学靶场/

自建示例程序 + 完整点位表 + 软件归属对照表(MIT 协议)

文档 内容
靶场总览与学习路径 快速开始、学习路径、常见失败原因
点位 01 · 单点布尔裁决 扩散效应 · 改源头 vs 改消费端
点位 02 · 硬编码密钥材料 信任根替换 · 多点交叉校验
点位 03 · 动态库加载顺序缺陷 附真实可用的 PE 导入表审计器
点位 04 · 可写全局状态变量 注册表/配置/环境变量三种形态
点位 05 · 明文进程间通信 强内核 + 弱通道的对比
点位 07 · 空值短路校验 Fail-Open vs Fail-Closed

靶场源码:docs/03-教学靶场/src/SeepLab/(7 个 C# 文件,约 1000 行)


⚖️ 合规与伦理声明

  1. 教育目的:本仓库全部内容仅用于安全知识普及、防御架构教学与授权范围内的安全评估;
  2. 不提供攻击工具:本项目刻意不包含任何可运行的规避技术措施制品、注册机或补丁工具;
  3. 负责任披露:如您在实际产品中发现本方法论描述的缺陷,请遵循 docs/05-披露流程/01-负责任的漏洞披露流程.md 联系厂商,而非公开利用;
  4. 尊重知识产权:所有提及的商业软件均归其各自权利人所有。若相关软件对您产生了实际价值, 请通过官方渠道购买正版许可;
  5. 禁止滥用:严禁将本方法论用于任何违反法律法规的活动。使用者应自行承担全部法律责任。

📄 License

本项目遵循 GNU General Public License v3.0 许可协议。

Copyright (C) 2026 Angus (angusdevgo)

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.

About

CWE-602 客户端鉴权脆弱性白盒审计方法论与纵深防御加固研究框架

Topics

Resources

Stars

11 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors