
Proof-of-concept che dimostra un bypass della verifica della firma del firmware negli SSD Phison S11, consentendo agli attaccanti di ri-firmare firmware modificato incorporando il proprio modulo RSA.
Proof-of-concept per CVE-2026-82876 (CVSS 3.1: 8.2 Alto / CVSS 4.0: 9.3 Critico, CWE-347): il controller SSD SATA Phison PS3111-S11 verifica le firme RSA degli aggiornamenti firmware contro un modulo pubblico incorporato nell'immagine del firmware stesso invece di un modulo ancorato nella memoria immutabile del controller. Chiunque può generare la propria coppia di chiavi RSA, ri-firmare un firmware modificato, incorporare il modulo corrispondente — e ogni unità basata su S11 accetta l'immagine manomessa come autentica.
Advisory complementare: CVE-2026-84696 (CWE-306) — comandi unici privilegiati del vendor (VUC) esposti tramite l'interfaccia ATA con autenticazione assente o aggirabile (challenge-response CRC-16), che consentono accesso in lettura/scrittura alla memoria del controller e alla NAND grezza — ovvero la stessa persistenza dell'impianto senza nemmeno passare dal percorso di aggiornamento firmware.
Ricerca sulla vulnerabilità di Michael Herbert (trulycrisp). CVE pubblicati il 31 agosto / 2 settembre 2026 (NVD), advisory di VulnCheck.
forge_signature.py è una dimostrazione a livello logico, senza dipendenze —
solo libreria standard Python 3, nessun hardware richiesto:
.BIN documentato
dell'S11 (header da 512 byte | codice burner | segmento firma da 3072 byte | codice
normale) e una firma reale RSA-2048/PKCS#1 v1.5/SHA-256 su di essa.+768 dell'immagine.$ python3 forge_signature.py
Richiede circa 5–15 s (due generazioni di chiavi RSA-2048 in puro Python). Nessun pacchetto di terze parti.
Questo repository si ferma intenzionalmente al livello logico. Per lavorare su hardware reale basato su S11, usa gli strumenti del ricercatore (Python):
$ git clone https://github.com/trulycrisp/psychite
$ cd psychite && python3 -m pip install -e .
$ example/drive_info.py /dev/sg0 # identifica l'unità
$ example/read_firmware.py /dev/sg0 firmware.bin # scarica il firmware installato
$ example/firmware_tool.py unpack firmware.bin fw/ # estrai per la modifica
$ example/firmware_tool.py pack fw/ firmware.bin # ricompatta
$ example/update_firmware.py firmware.bin /dev/sg0 # installa (PERICOLOSO)
Per verificare la postura di blocco VUC di un'unità (controlli in sola lettura), usa disksec:
$ disksec list
$ disksec run /dev/sg0 -vv -o report.txt
Firmware del controller Phison PS3111-S11 ≤ SBFQT1.3 — nessuna correzione disponibile al momento della stesura. L'S11 alimenta una larga fetta di SSD SATA economici, inclusi (secondo la tabella hardware del ricercatore): Kingston A400 / Q500, Toshiba/Kioxia TR200, PNY CS900 / CS2040 / Elite, Seagate BarraCuda Q1, Silicon Power A58, Patriot Burst, MSI S270, Team GX1 e molti altri.
Questo codice è solo per ricerca sulla sicurezza autorizzata e istruzione. Flasha firmware solo su unità di tua proprietà. Un firmware modificato può rendere l'unità permanentemente inutilizzabile (brick), e installare impianti su unità che non possiedi è un reato nella maggior parte delle giurisdizioni.