
Prueba de concepto que demuestra una omisión de la verificación de firma del firmware en SSD Phison S11, permitiendo a los atacantes volver a firmar firmware modificado incrustando su propio módulo RSA.
Prueba de concepto para CVE-2026-82876 (CVSS 3.1: 8.2 Alta / CVSS 4.0: 9.3 Crítica, CWE-347): el controlador Phison PS3111-S11 de SSD SATA verifica las firmas RSA de actualización de firmware contra un módulo público incrustado dentro de la propia imagen de firmware en lugar de un módulo anclado en el almacenamiento inmutable del controlador. Cualquiera puede generar su propio par de claves RSA, volver a firmar firmware modificado, incrustar el módulo correspondiente — y cada unidad basada en S11 acepta la imagen manipulada como genuina.
Aviso complementario: CVE-2026-84696 (CWE-306) — comandos únicos de proveedor privilegiados (VUC) expuestos a través de la interfaz ATA con autenticación ausente o eludible (desafío-respuesta CRC-16), lo que permite acceso de lectura/escritura a la memoria del controlador y NAND en bruto — es decir, la misma persistencia de implante sin siquiera pasar por la ruta de actualización de firmware.
Investigación de vulnerabilidades por Michael Herbert (trulycrisp). CVEs publicados el 31 de agosto / 2 de septiembre de 2026 (NVD), avisos por VulnCheck.
forge_signature.py es una demostración a nivel lógico, sin dependencias —
solo biblioteca estándar de Python 3, sin necesidad de hardware:
.BIN del S11
(encabezado de 512 bytes | código burner | segmento de firma de 3072 bytes | código normal)
y una firma real RSA-2048/PKCS#1 v1.5/SHA-256 sobre ella.+768 de la imagen.$ python3 forge_signature.py
Tarda ~5–15 s (dos generaciones de claves RSA-2048 en Python puro). Sin paquetes de terceros.
Este repositorio se detiene intencionalmente a nivel lógico. Para trabajar contra hardware real basado en S11, use las herramientas propias del investigador (Python):
$ git clone https://github.com/trulycrisp/psychite
$ cd psychite && python3 -m pip install -e .
$ example/drive_info.py /dev/sg0 # identificar la unidad
$ example/read_firmware.py /dev/sg0 firmware.bin # volcar firmware instalado
$ example/firmware_tool.py unpack firmware.bin fw/ # desempaquetar para modificar
$ example/firmware_tool.py pack fw/ firmware.bin # reempaquetar
$ example/update_firmware.py firmware.bin /dev/sg0 # instalar (PELIGROSO)
Para auditar la postura de bloqueo VUC de una unidad (comprobaciones de solo lectura), use disksec:
$ disksec list
$ disksec run /dev/sg0 -vv -o report.txt
Firmware del controlador Phison PS3111-S11 ≤ SBFQT1.3 — no hay corrección disponible al momento de escribir esto. El S11 alimenta una gran parte de los SSD SATA económicos, incluidos (según la tabla de hardware del investigador): Kingston A400 / Q500, Toshiba/Kioxia TR200, PNY CS900 / CS2040 / Elite, Seagate BarraCuda Q1, Silicon Power A58, Patriot Burst, MSI S270, Team GX1, y muchos más.
Este código es solo para investigación de seguridad autorizada y educación. Solo actualice el firmware de unidades que le pertenecen. El firmware modificado puede bloquear permanentemente la unidad, e instalar implantes en unidades que no le pertenecen es un delito en la mayoría de las jurisdicciones.