技嘉UEFI BIOS固件中的后门漏洞分析
相关链接
受影响型号
第一批修复
Intel 700/600
AMD 500/400
第二批修复
Intel 500/400
AMD 600
样本比对
z790 未上传

b760 已上传

选取b760的两个版本固件作为分析对象,标记为F1和F2
根据eclypsium提供的信息,获得UEFI固件中相关可执行程序:
GUID:AEB1671D-019C-4B3B-BA-00-35-A2-E6-28-04-36
提取出一个二进制efi文件,标记为
F1_Section_PE32_image_AEB1671D-019C-4B3B-BA00-35A2E6280436_body.efi
F2_Section_PE32_image_AEB1671D-019C-4B3B-BA00-35A2E6280436_body.efi
EFI文件分析
先使用NtCreateFile函数尝试创建一个文件,第三个参数ObjectAttributes指明了位置:
使用ida pro比对两个版本之间差异,发现只存在一处不同:

该函数是一个写文件的函数,不同位置为写入缓冲区的大小(以字节为单位)。
F1:
数据长度:0x1208F8u
F2
数据长度:0x120AF8u, 1182456
找到对应写入文件的指针,提取出该文件,标记为
F1_payload.bin
F2_payload.bin
Payload沙盒测试
运行释放的可执行文件F1_payload

服务管理器中出现GigabyteUpdateService

Payload静态分析
使用bindiff比对F1_payload.bin、F2_payload.bin,并未发现不同
使用binwalk在文件中查询PE头,发现在payload.exe中还存在第二个PE可执行文件,提取出该文件,标记为
F1_MZ2.bin
F2_MZ2.bin
第二个PE文件分析
该文件是一个.NET编写的程序
Bindiff

反编译分析
反编译工具:dotPeek
AppLiveUpdateWebPath
\Utilities\AppLiveUpdate\AppLiveUpdateWebPath.cs

删除了更新源Software-nas/Swhttp/LiveUpdate4,保留 mb.download.gigabyte.com/FileList/Swhttp/LiveUpdate4
UtilityUserControlsDownloadAndInstallBox
\UtilityUserControlsDownloadAndInstallBox.xaml.cs

添加了安全校验库,之前可能未作安全校验

增加了安装前验证,未通过则抛出异常
URL说明
url格式为 {0}://{1}/{2}/{3},如:
https://mb.download.gigabyte.com/FileList/Swhttp/LiveUpdate4/AppCenter/verInfo.ini
- {0}:
- http
- https,默认状态下设置为https
- {1}: ToUrl:
- mb.download.gigabyte.com/FileList/Swhttp/LiveUpdate4
- Software-nas/Swhttp/LiveUpdate4
- {2}: folderName:
- AppCenter
- webappcenter
- GCC
- {3}: 文件名称
- UpdPack.exe
- verInfo.ini
- setup.exe
- setup.iss
结论
可以确定,未修复的版本中存在两个弱点:
- InternalUrl(Software-nas/Swhttp/LiveUpdate4):实际情况下无法发起攻击
- 下载文件未作校验:可被中间人攻击并释放可执行文件
厂商借助WPBT功能,从固件层面向用户的操作系统内释放网络下载器,具有潜在的安全风险。
如果不能保证下载来源的可靠性,或者通过中间人替换下载来源,则很容易造成漏洞利用。