Moins de 24 heures après que Microsoft a divulgué CVE-2020-0601 — la faille critique de Windows CryptoAPI que Microsoft a corrigée le 14 janvier 2020 après un signalement privé de la NSA —, le chercheur Saleem Rashid a tweeté des images de « Never Gonna Give You Up » de Rick Astley en lecture sur GitHub.com et NSA.gov via HTTPS. Le rickroll constituait la démonstration : son exploit faisait en sorte qu'Edge et Chrome traitent des sites usurpés comme véritablement vérifiés, Brave, d'autres dérivés de Chrome et Internet Explorer étant probablement affectés eux aussi. Firefox n'a montré aucun signe d'être affecté.

La faille brisait complètement la validation des certificats pour les sites web, les mises à jour logicielles, les VPN et d'autres usages critiques pour la sécurité sous Windows 10, y compris Windows Server 2016 et 2019. Le mécanisme : CryptoAPI faisait confiance aux paramètres de courbe elliptique inclus avec chaque certificat plutôt que d'exiger des courbes définies par des normes, si bien qu'un attaquant pouvait fournir des paramètres de générateur personnalisés — permettant à Windows de « s'accorder » sur une clé publique que l'attaquant avait choisie, et faisant passer des certificats falsifiés pour authentiques.

Rashid a déclaré que l'exploit utilisait environ 100 lignes de code, et qu'il pourrait le compresser à 10 s'il abandonnait « quelques astuces utiles ». La rapidité de la démonstration — en moins d'une journée, contre une faille divulguée sans description technique publique — montrait le peu d'écart qui subsistait entre « vulnérabilité corrigée » et « exploit weaponisé » lorsque la cause racine est une erreur de conception plutôt qu'un bug de mémoire.

L'origine de la divulgation donnait à l'histoire son ironie : la NSA avait signalé la faille en privé, dont l'effet pratique incluait l'usurpation du site web de la NSA elle-même. Le rickroll — la démonstration humoristique standard de failles de sécurité graves — rendait l'usurpation immédiatement visible pour les non-experts.

Une bibliothèque cryptographique qui accepte les paramètres de courbe elliptique de l'attaquant permet à celui-ci de choisir la clé sur laquelle les calculs s'accordent — la vérification devient un simple tampon.

La cause racine est un principe de conception, non une défaillance d'implémentation : accepter des paramètres cryptographiques fournis par l'appelant transforme l'agilité en falsification universelle.

Le rayon d'impact couvrait tout ce que TLS protège — sites web, mises à jour logicielles, VPN — sur toutes les machines Windows 10 et Server 2016/2019.

Une usurpation fonctionnelle a été réalisée en environ 100 lignes en l'espace d'une journée après la divulgation, avant même que la plupart des défenseurs aient appliqué le correctif.

La cible de la démonstration était le rapporteur de la faille lui-même, rendant impossible de rejeter le mode de défaillance comme théorique.

L'agilité cryptographique est une surface d'attaque : chaque paramètre qu'un vérificateur acceptera du côté non fiable est un bouton que l'attaquant peut tourner — codez en dur les constantes, ne vérifiez rien d'optionnel.

Le correctif de Microsoft du 14 janvier 2020 a corrigé la faille de validation de CryptoAPI pour Windows 10 et les versions serveur affectées ; la source ne rapporte aucune exploitation dans la nature au-delà de la démonstration de Rashid.

VÉRIFIEZ LES SOURCES

Les sources

  1. Critical Windows 10 vulnerability used to Rickroll the NSA and Github Ars Technica · arstechnica.com ·