Skip to content
KitploitKITPLOIT
工具博客
Log in
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
GIGABYTE-H510M-K-V2-BIOS-SMM-Reverse-Engineering-CVE-2025-7026-7027-7028-7029-Research — 对技嘉 H510M K V2(`H510MKV2.F3`)BIOS 镜像的静态逆向工程:对 PI 规范 SMM Core 内存分配器进行完整的 UEFI 固件卷提取分析,并针对性地搜寻技嘉/Binarly 于 2025 年披露的四个 SMM 内存损坏漏洞(CVE-2025-7026 CVE-2025-7027 CVE-2025-7028 CVE-2025-7029)。 | Kitploit
工具/GitHubGitHub/tobss8/gigabyte-h510m-k-v2-bios-smm-reverse-engineering-cve-2025-7026-7027-7028-7029-research
静态分析漏洞分析逆向工程硬件安全二进制分析固件分析
GitHubtobss8/gigabyte-h510m-k-v2-bios-smm-reverse-engineering-cve-2025-7026-7027-7028-7029-research

GIGABYTE-H510M-K-V2-BIOS-SMM-Reverse-Engineering-CVE-2025-7026-7027-7028-7029-Research

对技嘉 H510M K V2(`H510MKV2.F3`)BIOS 镜像的静态逆向工程:对 PI 规范 SMM Core 内存分配器进行完整的 UEFI 固件卷提取分析,并针对性地搜寻技嘉/Binarly 于 2025 年披露的四个 SMM 内存损坏漏洞(CVE-2025-7026 CVE-2025-7027 CVE-2025-7028 CVE-2025-7029)。

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
查看仓库
1291个月前尚未审核
分享

技嘉 H510M K V2 BIOS SMM 逆向工程与 CVE-2025-7026/7027/7028/7029 研究

针对技嘉 H510M K V2(H510MKV2.F3)BIOS 镜像的静态逆向工程:完整地对 PI 规范 SMM Core 内存分配器进行 UEFI 固件卷提取分析,并定向搜寻 GIGABYTE/Binarly 于 2025 年披露的四个 SMM 内存破坏漏洞(CVE-2025-7026、CVE-2025-7027、CVE-2025-7028、CVE-2025-7029)。

状态:4 个 CVE 中已确认 1 个存在(CVE-2025-7027)。另外 3 个已在全部可访问固件中积极搜寻,但未找到。详见 未确认的 CVE 以了解这究竟意味着什么、不意味着什么。


研究的所有文件:谷歌云端硬盘下载:SMM_ALL

目录

  • 免责声明 / 范围
  • 目标
  • TL;DR
  • 方法论与工具
  • 固件布局
  • 仓库布局
  • 背景:公开的 CVE
  • 额外发现:SMM 内存分配器(PiSmmCore)
  • 已确认:CVE-2025-7027
  • 未确认的 CVE——CVE-2025-7026 / 7028 / 7029
  • 修复建议
  • 局限性
  • 参考资料

免责声明 / 范围

这是一项 n-day 研究,而非 0-day 披露。此处引用的所有四个 CVE 均已由 GIGABYTE 公开披露并修复(修复固件于 2025-06-12 开始出货),并由 Binarly 和 CERT/CC 在本研究开始之前分配了 CVE 编号并撰写报告。本仓库中的内容并非新的漏洞发现——而是对先前已披露、已修复的漏洞类别是否存在于一个特定的、可公开下载的 BIOS 构建中的独立静态分析验证。

  • 未包含或构建任何可用的漏洞利用或 PoC。 这仅涉及静态分析(对提取的固件模块进行反汇编/反编译);未执行任何代码,未读取/写入任何 SMRAM,也未接触任何硬件。
  • 不声称发现新漏洞。 CVE-2025-7027 的存在是通过匹配 Binarly 已公开描述的易受攻击代码模式确认的,而非独立发现。
  • 发布用于教育/防御性安全目的:了解 n-day 固件漏洞在实际中的表现形式,并用针对该特定主板/BIOS 版本的具体证据来强化 GIGABYTE 自身的更新建议。
  • 如果您拥有该主板:请更新 BIOS。 参见 修复建议。

目标

主板GIGABYTE H510M K V2 (H510MKV2)
BIOS 文件H510MKV2.F3
文件大小16777216 字节(16 MB)
文件日期2023-12-20
MD5a9bca8aeb55061824af1c3eedfb5c846
SHA-256934a935e5faba8d2cea4e1d51e9edb6aed86b32f412d0da5bae602bd9fd8f9f3
芯片组Intel H510
厂商补丁自2025-06-12(此构建早于该日期约 18 个月)

TL;DR

  • 从 BIOS 镜像中提取完整的 UEFI 固件卷树(uefi_firmware / uefi-firmware-parser)——在 SMM/DXE 卷中枚举出 356 个 FFS 文件,其中 302 个具有可提取的 PE32/TE 镜像。
  • 隔离并完整逆向工程了 PiSmmCore(PI 规范的 SMM Core),通过其硬编码的 "sphd"/"tail" 防护签名,确认并命名了真正的 SMM 池/页分配器(SmmAllocatePool/SmmFreePool/SmmAllocatePages/SmmFreePages 内部实现)——与 EDK2 开源的 MdeModulePkg/Core/PiSmmCore/Pool.c 完全匹配。
  • 在 ROM 中发现的每个固件卷中搜索了每一个可提取模块(共 325+ 个模块),以查找 Binarly 公开的 CVE-2025-7026/7027/7028/7029 报告中的标识标记。
  • CVE-2025-7027 已确认。 在 GenericComponentSmmEntry 中发现并追踪了确切的易受攻击代码路径:一个 NVRAM 变量(SetupXtuBufferAddress)通过 GetVariable() 获取且未经任何验证,被直接用作可通过 SW SMI 0xB2 触达的写入指针——这与 Binarly 公开的根因描述逐点吻合。
  • CVE-2025-7026 / -7028 / -7029 未找到,尽管对整个可访问固件进行了详尽的字符串/字节级扫描。这是一个悬而未决、尚无定论的结果,而非“完全健康”的证明——原因及得出真正结论所需的条件,请参见专门章节。

方法论与工具

  1. 提取 —— uefi_firmware(uefi-firmware-parser -e)以递归方式解包 BIOS 镜像:Intel Flash Descriptor 区域 → 固件卷 → FFS 文件 → 节(section),并解压其找到的每个 LZMA/Tiano 压缩固件卷。
  2. 模块隔离 —— 将每个包含 .ui(驱动显示名称)节和 .pe/.te 镜像节的 FFS 文件复制为独立的 PE32+/TE 二进制文件,命名为 <DriverName>__<GUID8>.<pe32|te>。
  3. 静态分析 —— IDA Pro(通过 ida-pro-mcp / idalib 无头工作器接口)配合 Hex-Rays 反编译器,每个模块一个数据库。仅使用自动分析 + Hex-Rays——此环境中没有可用的 FLIRT 签名或 EDK2 类型库(在下方备注为局限性)。
  4. 标记搜索 —— 使用 Python 对每个提取的模块(以及原始 16 MB 镜像)进行字节/字符串扫描,查找 Binarly 公开公告中提到的标识符(变量名、魔法常量、函数标签)。
  5. 手动追踪 —— 对每个标记命中,对引用函数进行反编译,并手动遍历其调用图(调用者/被调用者),以重建实际代码路径,并与公开的根因描述进行交叉核对。
  6. 重命名 —— 已确认的函数在其 IDA 数据库中被重命名,以便直接在可分析产物中记录发现,而不仅仅是在文字描述中。

固件布局

BIOS 镜像包含四个 Intel Flash Descriptor 区域;只有 region-bios 包含 GIGABYTE/OEM 代码(region-me.fd、region-gbe.fd、region-pdr.fd 是 Intel Management Engine / GbE / 描述符固件——独立组件,超出范围,未予探索)。

在 region-bios 内发现并提取了四个固件卷:

卷(容器 FFS GUID)内容提取文件数
file-9e21fd93-... → volume-ee4e5898-...主 DXE/SMM 驱动卷——所有 Smm* 驱动、平台 DXE 驱动302
file-f641ac56-... → volume-ee4e5898-...上述内容的重复/PEI 阶段副本(较小的子集:PiSmmCommunicationPei、IT8728FSmmFeaturesPei 等)22
file-3417f275-... → volume-3417f275-...早期 PEI/DXE 启动卷(DxeIpl、FspS3Notify ...)21(2 个含镜像)
file-05ca020b-... → volume-05ca020b-...小型辅助卷,无任何可执行镜像2

四个卷均被提取并进行了标记扫描(参见 未确认的 CVE)。

仓库布局

SMM/
├── README.md                    this file
├── CVE_ANALYSIS.md              full technical deep-dive (code-level detail confidence notes)
├── flash.fd                     copy of the extracted 16MB BIOS image
├── regions/                     raw recursive extraction (every FV/FFS/section as produced by uefi_firmware)
├── smm_modules/                 PiSmmCore isolated + fully analyzed (.pe32 + Hex-Rays .i64 renames applied)
├── smm_modules_all/             all 51 `Smm*`-named drivers as standalone PE32/TE + manifest.txt
│                                 (4 extra ones  PiSmmCpuDxeSmm SmmAccess SmmControl SmmLockBox
│                                  FlashSmiSmm FlashDriverSmm  have auto-analyzed .i64 databases)
├── all_modules/                 every extractable module from the main DXE/SMM volume (302 not just Smm*-named)
├── extra_volumes_modules/       modules from the two smaller auxiliary firmware volumes
└── f641_pei_modules/            modules from the duplicate PEI-phase volume copy

背景:公开的 CVE

CVEBinarly IDCVSS公开根因摘要
CVE-2025-7026BRLY-2025-0088.2SW SMI 处理程序(SwSmiInputValue 0xB2)在 Binarly 称为 CommandRcx0 的函数中将 RBX 寄存器视为未检查的指针;如果 *RBX 匹配 '$DB$'/'2DB$',该处理程序将执行任意 SMRAM 写入。
CVE-2025-7027BRLY-2025-0098.2双重指针解引用:未经验证的 NVRAM 变量(SetupXtuBufferAddress)与攻击者控制的、源自 RBX 的指针结合 → 任意 SMRAM 写入。
CVE-2025-7028BRLY-2025-0108.2缺乏对源自 RBX/RCX 的函数指针结构(FuncBlock)的验证,这些结构可通过 ReadFlash/WriteFlash/EraseFlash/GetFlashInfo 触达。
CVE-2025-7029BRLY-2025-0118.2未检查地使用 RBX 来控制攻击者影响的 OcHeader 指针,位于电源/热(超频)配置逻辑中 → 任意 SMRAM 写入。

这四个漏洞的共同主线是:软件 SMI 处理程序将寄存器或源自 NVRAM 的值视为指向内存的指针,却未验证其实际是否位于 SMRAM 之外,从而允许 ring-0(管理员/root)攻击者将普通的 SW SMI 触发转换为 SMM 特权(ring -2)的任意读写——固件完全沦陷、Secure-Boot 绕过以及操作系统之下的持久化。

额外发现:SMM 内存分配器(PiSmmCore)

并非漏洞——这是背景研究,通过证明工具链(提取 → PE 隔离 → IDA/Hex-Rays → 手动逆向)确实能够还原可验证源码的 EDK2 内部实现,为后续工作奠定了基础,之后才将矛头指向安全漏洞。

PiSmmCore(GUID e94f54cd-81eb-47ed-aec3-856f5dc157a9)是 PI 规范的 SMM Core:它拥有 SmmAllocatePool/SmmFreePool/SmmAllocatePages/SmmFreePages 以及 SMI 处理程序分发表。

调用链(地址位于 smm_modules/PiSmmCore.pe32.i64 内):

_ModuleEntryPoint (0x1184)
  -> SmmCoreEntryPointHelper (0x14D4)        writes the "SMST" table signature
     -> SmmInternalAllocatePool_wrapper (0x95EC)
        -> InternalAllocPoolByIndex_sphd_tail (0x57A8)     <- the allocator
     -> SmmAllocateZeroedPool (0x961C)        alloc + zero wrapper

SmmFreePool_wrapper (0x9714)
  -> SmmIsBufferInsideSmram (0x95A8)          decides SMRAM-resident vs not
  -> SmmInternalFreePool_sphd_tail (0x591C)   validates sphd/tail frees
     -> InternalFreePages (0x6A2C)            page-granularity free + coalesce
InternalFindFreePages (0x6820)                page-granularity alloc (mirror of InternalFreePages)

InternalAllocPoolByIndex_sphd_tail(0x57A8)被确认为真正的 EDK2 MdeModulePkg/Core/PiSmmCore/Pool.c 分配器:它硬编码了字面 ASCII 签名 "sphd"(SMM_POOL_HEAD_SIGNATURE)和 "tail"(SMM_POOL_TAIL_SIGNATURE)——正是开源实现中的魔法常量。大小 ≤ 0x800 字节的请求通过大小类别空闲链表子分配器处理;更大的请求则遍历页面空闲链表,并在返回的块上包裹头部/尾部防护签名。释放侧对应函数(SmmInternalFreePool_sphd_tail)在将内存归还空闲链表之前会验证相同的签名。

所有重命名都已固化在 smm_modules/PiSmmCore.pe32.i64 中——在 IDA 中打开它并配合 Hex-Rays 即可直接查看。

已确认:CVE-2025-7027

模块: GenericComponentSmmEntry(GUID 9caa3071-3459-4c5b-bbf0-ee68fe4dd46d) 文件: smm_modules_all/GenericComponentSmmEntry__9caa3071.pe32(+ 已分析的 .i64)

它是如何被发现的

对每个提取的模块(先是 51 个 Smm* 命名模块,然后是主卷中的所有 302 个,接着是辅助卷)进行了针对 SetupXtuBufferAddress 的字节/字符串扫描——这是 Binarly 的 CVE-2025-7027 报告所引用的确切 NVRAM 变量名。它在 GenericComponentSmmEntry 内部以 UTF-16LE 字符串形式匹配(其 DXE 对应物 GenericComponentDxeEntry 也可能设置/暴露该变量)。

易受攻击的调用链

下载工具