Une vulnérabilité catastrophique dans la mise en œuvre de certaines opérations de chiffrement dans Java JDK permet aux attaquants de falsifier facilement des informations d’identification contrefaites.

La faiblesse cryptographique – qui affecte les versions 15 et ultérieures de Java JDK – a été corrigée par Oracle avec une mise à jour publiée dans le cadre de son programme régulier. lot de patchs trimestriel mardi (19 avril).

Oracle Java et OpenJDK doivent tous deux être mis à jour en raison de failles qui impliquent la mise en œuvre d’ECDSA largement utilisé (Algorithme de signature numérique à courbe elliptique) signatures.

Tout le problème découlait d’une erreur de codage plutôt que d’un problème avec la technologie de cryptage sous-jacente.

Laissées sans réponse, les failles permettent à un attaquant de falsifier certains types de certificats SSL et de poignées de main, ouvrant la porte à un manipulateur au milieu des attaques.

JWT signés, Assertions SAML, WebAuthn les messages d’authentification, et plus encore, peuvent tous être facilement piratés à cause de l’erreur cryptographique, prévient le chercheur en sécurité Neil Madden.

« Il est difficile d’exagérer la gravité de ce bogue », explique Wadden, architecte de la sécurité chez ForgeRock, dans un article de blog technique sur la question.

« Si vous utilisez des signatures ECDSA pour l’un de ces mécanismes de sécurité, un attaquant peut les contourner de manière triviale et complète si votre serveur exécute une version Java 15, 16, 17 ou 18 avant la mise à jour critique du correctif (CPU) d’avril 2022. ”

Papier psychique

Java prend en charge ECDSA, une norme largement utilisée pour signer toutes sortes de documents numériques, depuis quelques années. L’erreur est venue avec la réécriture du code EC du code C++ natif vers Java dans le cadre de la version Java 15, comme l’explique Wadden.

L’implémentation Java de la vérification de signature ECDSA n’a pas vérifié si r ou s [values related to an ECDSA signature] étaient nuls, vous pourriez donc produire une valeur de signature dans laquelle ils valent tous les deux 0 (codé de manière appropriée) et Java l’accepterait comme signature valide pour n’importe quel message et pour n’importe quelle clé publique. L’équivalent numérique d’une carte d’identité vierge.

Wadden compare ce concept de carte d’identité vierge au papier psychique de la série de science-fiction Doctor Who, qui est utilisé par le personnage titulaire pour inciter les gens à coopérer.

Divulgation lourde

Wadden et ses collègues de la société de gestion des identités et des accès ForgeRock ont ​​découvert la faille en novembre dernier, date à laquelle ils l’ont signalée à Oracle et à d’autres développeurs Java. Le processus de divulgation subséquent était loin d’être idéal.

« J’ai été déçu par le processus de divulgation », a déclaré Wadden La gorgée quotidienne. « J’ai signalé à l’alias OpenJDK, puis je me suis retrouvé dans le trou noir d’Oracle. »

« Pour être juste, ils ont répondu assez rapidement aux e-mails, mais toujours avec une réponse minimale et je n’ai reçu aucun détail sur le correctif jusqu’à ce qu’il atterrisse dans les dépôts de backport OpenJDK GitHub. »

Des scores contradictoires

Dans ses notes de version, Oracle note la vulnérabilité avec un score CVSS de seulement 7,5. ForgeRock, en revanche, évalue la vulnérabilitéle score de 10.

Selon Wadden, l’industrie a esquivé une balle. « Je suis surpris qu’il [wasn’t] trouvé et exploité, mais peut-être que cela en dit plus sur l’enracinement de Java 8 ! »

« La plupart des gens considèrent que les schémas de signature de clé publique sont extrêmement sécurisés, mais en réalité, ce type de bogues de mise en œuvre n’est pas rare.

« Pour moi, l’un des aspects les plus troublants de cet examen a été de réaliser à quel point WebAuthn/FIDO [Fast Identity Online – an authentication technology] L’écosystème est essentiellement une monoculture autour des signatures ECDSA P-256 à ce stade », a conclu Wadden.

L’évaluation de la gravité du bogue a été confirmée par le sommité de l’industrie Thomas H Ptacek qui l’a décrit sur Twitter comme le « bug crypto de l’année ».