Install
$ agentstack add skill-mikewuping-bios-security-analysis-bios-security-analysis ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
BIOS/UEFI 固件安全分析
从初始镜像识别到深度解压、模块枚举、微码审计、证书分析、最终报告输出的完整方法论。
核心工作流
分析新 BIOS 镜像时按以下顺序执行:
1. 初步鉴定
- 识别文件类型:
file—— 预期 "Intel serial flash for PCH ROM" 或类似输出 - 大小检查:现代 UEFI BIOS 通常为 16MB 或 32MB
- 计算哈希:MD5 + SHA256 用于唯一标识
- 判断格式:UEFI Capsule(头部为 Capsule GUID)还是原始 SPI 镜像
- 原始 SPI 镜像的 Flash Descriptor 从偏移 0x10 开始
2. Intel Flash Descriptor 解析
Flash Descriptor 位于 SPI 镜像偏移 0x10 处:
签名 (0x10): 0x0FF0A55A (LE)
FLMAP0 (FD 偏移 0x00): FCBA[0:7], NC[8:9], FRBA[16:23]
FLMAP1 (偏移 0x04): 包含 FMBA 等
Region Descriptor 从 FRBA 开始,每条 4 字节 (Base[0:11], Limit[12:23], Access[24:27])。
区域名称: Descriptor, BIOS, ME, GbE, Platform Data, EC。
Flash Descriptor 解析是确定各区域布局(BIOS 区、ME 区等)的关键前提。
3. BIOS 原始供应商识别 (IBV)
确定 Independent BIOS Vendor 的方法:
vendor_patterns = {
'AMI': [b'AMI Aptio', b'AMITSESetup', b'AmiWrapperSetup', b'American Megatrends'],
'Insyde': [b'InsydeH2O', b'Insyde Software'],
'Phoenix': [b'Phoenix SecureCore', b'Phoenix Technologies'],
}
- AMI Aptio:
AMITSESetup、AmiWrapperSetup、AmiBoardInfo—— 消费级主板最常见 - InsydeH2O:多见于笔记本
- Phoenix SecureCore:企业级
同时检查:ACPI OEMID/OEM Table ID、DXE/PEI 模块 GUID、Setup IFR 架构特征。
确认供应商后,检索该供应商历史上公开发布的安全公告和已知 CVE 列表,逐项比对目标 BIOS 中是否包含受影响版本的模块。
4. 固件卷 (FV) 枚举
使用 uefi_firmware 库:
from uefi_firmware.uefi import FirmwareVolume, FirmwareFileSystem, EFI_FILE_TYPES, sguid, search_firmware_volumes
# search_firmware_volumes 返回 FV 偏移列表(指向 _FVH 签名位置)
fv_offsets = search_firmware_volumes(data) # 返回 int 列表
# FV 头部在偏移 - 0x28 处(ZeroVector 在 _FVH 前 0x28 字节)
for fv_off in fv_offsets:
fv_start = fv_off - 0x28
fv_hdr = data[fv_start:fv_start+0x48]
fv_len = struct.unpack_from('= 0x100 and total_size 0x1000 and cpuid != 0xFFFFFFFF:
patches.append(...)
pos = idx + 4
return patches
Raptor Lake (13/14 代) CPUID:0x000B0670, 0x000B0671, 0x000B06E0, 0x000B06F0, 0x000B06F2, 0x000B06F5
Alder Lake (12 代) CPUID:0x00090671, 0x00090672, 0x00090675, 0x000906A0, 0x000906A3, 0x000906A4
最新微码版本参考(检查 Intel GitHub:Intel-Linux-Processor-Microcode-Data-Files):
- ADL-S: 0x42E(约 2024 年末)
- RPL-S: 0x12A(约 2025 年 3 月),可能已存在更新的内部版本
7. Secure Boot 证书分析
在解压后的 FV 中查找证书
搜索 DER 编码的 X.509 证书(以 0x30 0x82 开头):
pos = 0
while pos H', fv_data, pos+2)[0]
if 500 = 50 → 1900+)
- GeneralizedTime 格式:`YYYYMMDDHHMMSSZ`
- 前两个连续的时间值分别是 notBefore 和 notAfter
- 验证条件:两者间隔应 5 年`(非根证书)→ 标记
#### DBX(吊销数据库)分析
搜索 `EFI_CERT_SHA256_GUID`(`C1C41626-504C-4092-ACA9-41F936934328`,LE 字节:`2616C4C14C509240ACA941F936934328`)。
DBX 条目是 `EFI_SIGNATURE_LIST` 结构,每条 48 字节(16 字节 Owner GUID + 32 字节 SHA256 哈希)。DBX 为空(< 50 条)意味着平台不阻止任何已知的已吊销引导加载程序。
**需检查的已知已吊销引导加载程序**:
- BlackLotus (2023): `77fa9abd...`
- BootHole GRUB2 (CVE-2020-10713): `e75b63d0...`
- BootHole shim (CVE-2020-14372): `36382848...`
### 8. CSME 固件版本审计
CSME 固件存储在闪存的 ME 区域。版本提取方法:
```python
# CPD (Code Partition Directory) 条目 —— 标识 ME 模块
for m in re.finditer(rb'\x24CPD', data):
cpd_name = data[m.start()+0x18:m.start()+0x28].decode('ascii', errors='replace').strip()
# 从字符串提取版本
for m in re.finditer(rb'PCHC(\d+\.\d+\.\d+\.\d+)', data):
pchc_ver = m.group(1).decode('ascii')
# ADL 平台 CSME 关键组件:
# - CSME ROM: 16.1.x —— ME 主内核
# - PCHC: 16.1.x —— PCH 配置
# - PMCP: 160.x —— 电源管理
# - SPHY: 13.x —— 南桥 PHY
# - ISHC: 5.x —— 集成传感器集线器控制器
与 Intel PSIRT 安全公告交叉比对:
- INTEL-SA-00847 (2024-03, CVSS 8.8): CSME 16.1 特定版本
- INTEL-SA-00783 (2023-08, CVSS 8.2): CSME 16.1.30 及更早版本
- INTEL-SA-00614 (2022-11, CVSS 7.8): 多个 CSME 16.1 版本
- CVE-2022-36392 (CVSS 8.2), CVE-2022-29871 (CVSS 7.8)
重要提示:静态分析无法最终确定 CSME 补丁是否已应用。必须使用 Intel CSMEVDT(CSME Version Detection Tool)进行运行时验证。
9. SMM 攻击面分析
从解压后的 FV 枚举 SMM 模块:
# SMM 模块在 FFS 中的类型为 0x0A
# 需要关注的 SMI Handler(按 UI 名称搜索):
smi_handlers = [
'PchSmiDispatcher', # PCH SMI 事件分发器
'CrbSmi', # Command Register Buffer SMI
'NbSmi', # 北桥 SMI
'SleepSmi', # 睡眠状态 SMI
'TcoSmi', # TCO 看门狗 SMI
'SmiFlash', # 通过 SMI 更新闪存
'SmiVariable', # 通过 SMI 更新变量
'NvramSmm', # NVRAM SMM 处理程序
]
安全检查项:
- SMM 通信缓冲区:存在
PiSmmCommunicationSmm→ 需检查缓冲区验证 - SMRAM 锁定:
PiSmmCpuDxeSmm、SmmAccess、SmmControl - BIOS Guard:
BiosGuardServices→ 硬件级别的 SPI 闪存保护 - HSTI:
HstiIhvSmm→ 硬件安全测试接口 - SPI 保护:
FlashDriverSmm、SpiSmm、SpiSmmStub
仅可通过运行时验证的检查项(静态分析无法验证):
- HSFS.FLOCKDN 寄存器状态
- BIOSCNTL.BIOSWE、BIOSCNTL.BLE
- SMRR 配置
- SMM 通信缓冲区输入验证
10. CSM/遗留启动检测
CSM (Compatibility Support Module) 启用遗留 BIOS 启动,可绕过 Secure Boot。
关键 CSM 模块:CsmDxe、CsmVideo、CsmBlockIo、LegacyRegionDxe、AmiLegacyInterrupt、TcgLegacy
只要发现以上任一模块 → CSM 已启用 → Secure Boot 存在被绕过风险。
11. 安全关键词搜索分类
对模块按 UI 名进行分类时,搜索以下关键词:
security_keywords = {
'SMM': ['Smm', 'SMI', 'SMRAM', 'SmmChild', 'SmmCore', 'SmmAccess', 'SmmControl'],
'SecureBoot': ['SecureBoot', 'ImageSecurity', 'ImageVerification'],
'S3/睡眠': ['S3', 'BootScript', 'S3Save', 'LockBox'],
'SPI/闪存': ['Spi', 'Flash', 'Fvb', 'FirmwareVolumeBlock', 'SpiLock', 'FlashSmm'],
'TPM/安全': ['Tcg', 'Tpm', 'Tcg2', 'TrEE', 'Txt', 'BiosGuard', 'BootGuard'],
'Setup/配置': ['Setup', 'AMITSE', 'AmiTse', 'HiiDatabase', 'FormBrowser'],
'内存保护': ['Memory', 'MemTest', 'HeapGuard', 'PoolGuard', 'NullDetection', 'StackGuard'],
'CSM/遗留': ['Csm', 'Legacy', 'LegacyBios', 'LegacyRegion', 'LegacyInterrupt'],
'网络': ['Pxe', 'Snp', 'Mnp', 'Arp', 'Ip4', 'Ip6', 'Tcp', 'Http', 'Tls', 'UNDI'],
'OEM/AMI': ['AmiDebug', 'AmiCpu', 'Maxsun', 'MsOc', 'OcSupport', 'AmiBoard', 'AmiTse'],
}
EFI GUID 速查表
BIOS 安全分析中重要的 GUID:
# 证书相关
CERT_X509_GUID: A159C0A5-E494-4AA7-87B5-AB155C2BF072
CERT_SHA256_GUID: 2616C4C1-4C50-4092-ACA9-41F936934328
# Secure Boot 变量
IMAGE_SECURITY_DATABASE (db/dbx): CBB219D7-3A3D-4596-A3BC-DAD00E67656F
GLOBAL_VARIABLE (PK/KEK): 61DFE48B-CA93-11D2-AA0D-00E098032B8C
# LZMA 压缩
LZMA_CUSTOM_DECOMPRESS: EE4E5898-3914-4259-9D6E-DC7BD79403CF
# 固件文件系统
FFS1: 7A9354D9-0468-444A-81CE-0BF617D890DF
FFS2: 8C8CE578-8A3D-4F1C-9935-896185C32DD3
FFS3: 5473C07A-3DCB-4DCA-BD6F-1E9689E7349A
NVRAM_EVSA: FFF12B8D-7696-4C8B-A985-2747075B4F50
# AMI NVRAM
NVAR: CEF5B9A3-476D-497F-9FDC-E98143E0422C
工具依赖
必需的 Python 包:
pip install uefi_firmware
uefi_firmware 提供:FirmwareVolume、FirmwareFile、FirmwareFileSystem、CompressedSection、EFI_FILE_TYPES、EFI_SECTION_TYPES、search_firmware_volumes、sguid、LzmaDecompress、TianoDecompress、EfiDecompress
使用的 Python 内置模块:struct、lzma、zlib、re、hashlib、datetime
输出目录组织
始终创建以下目录:
output/—— 解压后文件、模块列表、提取的微码、证书审计结果report/—— 最终分析报告(纯文本 + Word)scripts/—— 分析脚本(可复用)
报告结构规范
编写最终报告时,严格分离两类问题:
- 已确认的问题 —— 可通过静态扫描、版本比对、CVE 匹配验证的
- 待运行时检验的可能问题 —— 需要运行时验证的(SMRAM 锁、SPI 寄存器状态、SMM 输入验证)
两类问题不得混写在同一个章节中。
报告章节建议:
- 项目概述
- 分析方法与工具链
- BIOS 基本信息(供应商、平台、CSME 版本等)
- 固件解包统计
- 微码版本审计
- 已确认的安全问题
- 待运行时检验的可能问题
- 附加观察
- Secure Boot 证书与 DBX 审计
- CSME 及其他子固件安全审计
- 关键安全模块列表
- 输出文件清单
- 结语
使用严重级别:HIGH(高危)、MEDIUM(中危)、LOW(低危)
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: MikeWuPing
- Source: MikeWuPing/bios-security-analysis
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.