
ファームウェア署名検証バイパスを実証する概念実証で、Phison S11 SSDにおいて、攻撃者が独自のRSAモジュラスを埋め込むことで改変したファームウェアに再署名できるようにするものです。
CVE-2026-82876(CVSS 3.1: 8.2 High / CVSS 4.0: 9.3 Critical、CWE-347)の概念実証です。Phison PS3111-S11 SATA SSDコントローラは、ファームウェア更新用RSA署名を、不変のコントローラストレージに固定されたモジュラスではなく、ファームウェアイメージ自体に埋め込まれた公開モジュラスに対して検証します。攻撃者は誰でも独自のRSA鍵ペアを生成し、改変したファームウェアに再署名して、対応するモジュラスを埋め込むことができ、S11ベースのすべてのドライブが改ざんされたイメージを正規のものとして受け入れます。
関連アドバイザリ: CVE-2026-84696(CWE-306)— ATAインターフェース経由で公開される特権ベンダー固有コマンド(VUC)に、認証が存在しないか無効化可能(CRC-16チャレンジレスポンス)であり、コントローラメモリと生NANDへの読み書きアクセスが可能になります。つまり、ファームウェア更新経路を経由せずとも、同じインプラントの永続化が可能です。
脆弱性調査: Michael Herbert(trulycrisp)。CVEは2026年8月31日/9月2日に公開(NVD)、アドバイザリはVulnCheckによるものです。
forge_signature.py はロジックレベルの、依存関係のないデモンストレーションです。純粋なPython 3標準ライブラリのみで、ハードウェアは不要です。
.BIN レイアウト(512バイトヘッダ | バーナーコード | 3072バイト署名セグメント | 通常コード)を模した合成イメージと、それに対する実際のRSA-2048/PKCS#1 v1.5/SHA-256署名を構築します。+768 から読み取られます。$ python3 forge_signature.py
約5〜15秒かかります(純PythonによるRSA-2048鍵生成が2回)。サードパーティ製パッケージは不要です。
このリポジトリは意図的にロジックレベルで止めています。実際の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、その他多数。
このコードは許可されたセキュリティ研究および教育のみを目的としています。ファームウェアを書き込むのは、自分が所有するドライブのみにしてください。改変されたファームウェアはドライブを恒久的に文鎮化させる可能性があり、所有していないドライブにインプラントをインストールすることは、ほとんどの法域で犯罪です。