概念验证,演示了 Phison S11 固态硬盘中固件签名验证的绕过方法,允许攻击者通过嵌入自己的 RSA 模数来重新签名修改后的固件。
针对 CVE-2026-82876(CVSS 3.1:8.2 高危 / CVSS 4.0:9.3 严重,CWE-347)的概念验证:Phison PS3111-S11 SATA SSD 控制器在验证固件更新 RSA 签名时,使用的是固件镜像自身内部嵌入的公共模数,而非锚定在不可变控制器存储中的模数。任何人都可以生成自己的 RSA 密钥对,对修改后的固件重新签名,嵌入匹配的模数——所有基于 S11 的驱动器都会将篡改后的镜像视为正品。
配套公告:CVE-2026-84696(CWE-306)——特权厂商唯一命令(VUC)通过 ATA 接口暴露,且缺少认证或认证可被绕过(CRC-16 挑战-响应),允许对控制器内存和原始 NAND 进行读写访问——即无需经过固件更新路径即可实现相同的植入持久化。
漏洞研究由 Michael Herbert(trulycrisp)完成。CVE 于 2026 年 8 月 31 日 / 9 月 2 日发布(NVD),公告由 VulnCheck 发布。
forge_signature.py 是一个逻辑层面、零依赖的演示——纯 Python 3 标准库,无需任何硬件:
.BIN 布局的合成镜像(512 字节头部 | burner 代码 | 3072 字节签名段 | 普通代码),并对其生成真实的 RSA-2048/PKCS#1 v1.5/SHA-256 签名。+768 处读取的。$ python3 forge_signature.py
大约需要 5–15 秒(两次纯 Python RSA-2048 密钥生成)。无需第三方包。
本仓库有意止步于逻辑层面。要针对实际的 S11 硬件进行操作,请使用研究者自己的工具(Python):
$ git clone https://github.com/trulycrisp/psychite
$ cd psychite && python3 -m pip install -e .
$ example/drive_info.py /dev/sg0 # 识别驱动器
$ example/read_firmware.py /dev/sg0 firmware.bin # 转储已安装的固件
$ example/firmware_tool.py unpack firmware.bin fw/ # 解包以便修改
$ example/firmware_tool.py pack fw/ firmware.bin # 重新打包
$ example/update_firmware.py firmware.bin /dev/sg0 # 安装(危险)
要审计驱动器的 VUC 锁定状态(只读检查),请使用 disksec:
$ disksec list
$ disksec run /dev/sg0 -vv -o report.txt
Phison PS3111-S11 控制器固件 ≤ SBFQT1.3——截至撰写本文时尚无修复方案。S11 为大量廉价 SATA SSD 提供动力,包括(根据研究者的硬件列表):Kingston A400 / Q500、Toshiba/Kioxia TR200、PNY CS900 / CS2040 / Elite、Seagate BarraCuda Q1、Silicon Power A58、Patriot Burst、MSI S270、Team GX1 等众多型号。
此代码仅用于授权的安全研究和教育目的。只能向您自己拥有的驱动器刷写固件。修改后的固件可能永久性地使驱动器变砖,而在非您所有的驱动器上安装植入物在大多数司法管辖区属于犯罪行为。