
Preuve de concept démontrant un contournement de la vérification de signature du firmware dans les SSD Phison S11, permettant aux attaquants de re-signer un firmware modifié en intégrant leur propre module RSA.
Preuve de concept pour CVE-2026-82876 (CVSS 3.1 : 8,2 Élevé / CVSS 4.0 : 9,3 Critique, CWE-347) : le contrôleur SSD SATA Phison PS3111-S11 vérifie les signatures RSA des mises à jour de firmware par rapport à un module public intégré dans l'image du firmware lui-même au lieu d'un module ancré dans le stockage immuable du contrôleur. N'importe qui peut générer sa propre paire de clés RSA, re-signer un firmware modifié, intégrer le module correspondant — et chaque disque basé sur S11 accepte l'image falsifiée comme authentique.
Avis complémentaire : CVE-2026-84696 (CWE-306) — commandes uniques privilégiées du fournisseur (VUC) exposées via l'interface ATA avec une authentification absente ou contournable (défi-réponse CRC-16), permettant un accès en lecture/écriture à la mémoire du contrôleur et à la NAND brute — c'est-à-dire la même persistance d'implant sans même passer par le chemin de mise à jour du firmware.
Recherche de vulnérabilité par Michael Herbert (trulycrisp). CVE publiées le 31 août / 2 septembre 2026 (NVD), avis par VulnCheck.
forge_signature.py est une démonstration au niveau logique, sans dépendance —
pur Python 3 bibliothèque standard, aucun matériel requis :
.BIN documentée du S11
(en-tête de 512 octets | code burner | segment de signature de 3072 octets | code normal)
et une véritable signature RSA-2048/PKCS#1 v1.5/SHA-256 dessus.+768 de l'image.$ python3 forge_signature.py
Prend environ 5 à 15 s (deux générations de clés RSA-2048 en pur Python). Aucun paquet tiers.
Ce dépôt s'arrête intentionnellement au niveau logique. Pour travailler contre du matériel réel basé sur S11, utilisez l'outillage du chercheur (Python) :
$ git clone https://github.com/trulycrisp/psychite
$ cd psychite && python3 -m pip install -e .
$ example/drive_info.py /dev/sg0 # identifier le disque
$ example/read_firmware.py /dev/sg0 firmware.bin # vider le firmware installé
$ example/firmware_tool.py unpack firmware.bin fw/ # dépaqueter pour modification
$ example/firmware_tool.py pack fw/ firmware.bin # re-paqueter
$ example/update_firmware.py firmware.bin /dev/sg0 # installer (DANGEREUX)
Pour auditer la posture de verrouillage VUC d'un disque (contrôles en lecture seule), utilisez disksec :
$ disksec list
$ disksec run /dev/sg0 -vv -o report.txt
Firmware du contrôleur Phison PS3111-S11 ≤ SBFQT1.3 — aucun correctif n'est disponible à ce jour. Le S11 alimente une grande part des SSD SATA économiques, y compris (selon le tableau matériel du chercheur) : Kingston A400 / Q500, Toshiba/Kioxia TR200, PNY CS900 / CS2040 / Elite, Seagate BarraCuda Q1, Silicon Power A58, Patriot Burst, MSI S270, Team GX1, et bien d'autres.
Ce code est destiné uniquement à la recherche en sécurité autorisée et à l'éducation. Ne flashez le firmware que sur des disques qui vous appartiennent. Un firmware modifié peut briquer définitivement le disque, et installer des implants sur des disques qui ne vous appartiennent pas est un crime dans la plupart des juridictions.