
Prova de conceito demonstrando uma bypass na verificação de assinatura de firmware em SSDs Phison S11, permitindo que atacantes reassinem firmware modificado ao incorporar seu próprio módulo RSA.
Prova de conceito para CVE-2026-82876 (CVSS 3.1: 8.2 Alta / CVSS 4.0: 9.3 Crítica, CWE-347): o controlador PS3111-S11 de SSD SATA da Phison verifica as assinaturas RSA de atualização de firmware contra um módulo público embutido na própria imagem do firmware em vez de um módulo ancorado no armazenamento imutável do controlador. Qualquer pessoa pode gerar seu próprio par de chaves RSA, reassinar firmware modificado, embutir o módulo correspondente — e todos os drives baseados em S11 aceitam a imagem adulterada como genuína.
Advisory complementar: CVE-2026-84696 (CWE-306) — comandos únicos privilegiados do fornecedor (VUCs) expostos pela interface ATA com autenticação ausente ou contornável (desafio-resposta CRC-16), permitindo acesso de leitura/escrita à memória do controlador e à NAND bruta — ou seja, a mesma persistência de implante sem sequer passar pelo caminho de atualização de firmware.
Pesquisa de vulnerabilidade por Michael Herbert (trulycrisp). CVEs publicados em 31 de ago. / 2 de set. de 2026 (NVD), advisories pela VulnCheck.
forge_signature.py é uma demonstração em nível lógico, sem dependências —
apenas biblioteca padrão do Python 3, sem necessidade de hardware:
.BIN documentado do S11
(cabeçalho de 512 bytes | código do burner | segmento de assinatura de 3072 bytes | código normal)
e uma assinatura real RSA-2048/PKCS#1 v1.5/SHA-256 sobre ela.+768 da imagem.$ python3 forge_signature.py
Leva ~5–15 s (duas gerações de chaves RSA-2048 em Python puro). Sem pacotes de terceiros.
Este repositório intencionalmente para no nível lógico. Para trabalhar com hardware real baseado em S11, use a própria ferramenta do pesquisador (Python):
$ git clone https://github.com/trulycrisp/psychite
$ cd psychite && python3 -m pip install -e .
$ example/drive_info.py /dev/sg0 # identificar o drive
$ example/read_firmware.py /dev/sg0 firmware.bin # despejar firmware instalado
$ example/firmware_tool.py unpack firmware.bin fw/ # descompactar para modificação
$ example/firmware_tool.py pack fw/ firmware.bin # recompactar
$ example/update_firmware.py firmware.bin /dev/sg0 # instalar (PERIGOSO)
Para auditar a postura de bloqueio de VUC de um drive (verificações somente leitura), use o disksec:
$ disksec list
$ disksec run /dev/sg0 -vv -o report.txt
Firmware do controlador Phison PS3111-S11 ≤ SBFQT1.3 — nenhuma correção está disponível até o momento desta escrita. O S11 alimenta uma grande parcela dos SSDs SATA de baixo custo, incluindo (conforme a tabela de hardware do pesquisador): Kingston A400 / Q500, Toshiba/Kioxia TR200, PNY CS900 / CS2040 / Elite, Seagate BarraCuda Q1, Silicon Power A58, Patriot Burst, MSI S270, Team GX1 e muitos outros.
Este código é apenas para pesquisa de segurança autorizada e educação. Apenas grave firmware em drives que você possui. Firmware modificado pode danificar permanentemente o drive, e instalar implantes em drives que você não possui é um crime na maioria das jurisdições.