Blog

Psychic Signatures : ce qu'il faut savoir

April 27, 2022
Charlie Eriksen
Loupe braquée sur une feuille parsemée de divers symboles cryptographiques.

Le 19 avril 2022, Neil Madden a révélé une vulnérabilité dans Oracle Java 15 à 18, ainsi que dans OpenJDK 15, 17 et 18. La faille réside dans la cryptographie des signatures ECDSA, permettant à un attaquant de contourner totalement les vérifications de signature pour ces dernières.

Il est facile de voir les titres concernant cette vulnérabilité et de les ignorer compte tenu de la nature obscure des signatures ECDSA. Pourtant, les signatures ECDSA jouent un rôle clé dans la protection des systèmes sur Internet pour des tâches critiques telles que l'authentification.

Avant d'entrer dans les détails, si vous souhaitez découvrir comment les pirates exploitent les « Psychic Signatures » de manière pratique, lancez-vous directement dans nos laboratoires gratuits - Missions pour essayer par vous-même.

Pourquoi l'ECDSA est-il si important ?

Vous n'avez peut-être jamais entendu parler de l'ECDSA. Il s'agit de l'acronyme de « Elliptic Curve Digital Signature Algorithm » (algorithme de signature numérique sur courbe elliptique), un type de cryptographie qui utilise les propriétés mathématiques des courbes elliptiques, offrant actuellement l'une des sécurités cryptographiques les plus robustes du secteur.

Cela signifie qu'il est utilisé pour de nombreuses fonctions importantes, telles que :

  • La signature de certificats SSL
  • Les poignées de main (handshakes) lors de communications chiffrées
  • SAML
  • Les signatures JWT
  • Les signatures OpenID Connect

L'ECDSA est donc un élément clé de nombreuses fonctions parmi les plus sensibles pour la protection des systèmes. La capacité de contourner les vérifications de signature pourrait s'avérer tout à fait dévastatrice.

Comment la vulnérabilité est-elle exploitée ?

Les mathématiques derrière l'ECDSA sont malheureusement assez complexes. Mais l'essentiel à retenir est qu'une signature ECDSA contient deux éléments d'information : r et s.

Ces nombres sont utilisés pour calculer la validité de la signature. La valeur r est le « résultat » (côté gauche) d'un calcul utilisant à la fois r et s sur le côté droit de l'équation. Étant donné qu'une multiplication par 0 est une mauvaise idée, la spécification ECDSA précise explicitement que si la valeur de r ou de s est égale à 0, elles doivent être rejetées.

Mais l'implémentation Java de l'ECDSA a oublié de prendre cela en compte. Par conséquent, elle accepte une signature où r et s sont tous deux égaux à 0, ce qui sera toujours vrai. Nous pouvons le démontrer avec l'exemple d'un JWT, pour montrer à quel point c'est simple. En utilisant https://token.dev/, nous pouvons générer un jeton avec l'algorithme ES256, similaire à celui qui serait généré par une application :

Un jeton généré avec l'algorithme ES256

Rappelons qu'un JWT est divisé en 3 parties :

  • En-tête (en bleu)
  • Charge utile (en vert)
  • Signature (en rouge)

Maintenant, si nous voulions contourner la vérification de la signature, comment nous y prendrions-nous ? La signature spécifie les valeurs de r et s, et est encodée au format DER.

Encodage DER pour les valeurs de signature

Modifions notre JWT pour utiliser cette nouvelle signature. Notez que dans les JWT, le signe égal n'est pas inclus.

Colored strings of letters and numbers in blue, green, and red inside a black rectangular border.
Nouveau JWT utilisant une signature encodée en DER

Désormais, notre signature a r et s définis sur 0, et dans les versions vulnérables de Java, la vérification de la signature réussira pour n'importe quelle charge utile spécifiée.

Qui est concerné et comment y remédier ?

La vulnérabilité affecte à la fois Oracle Java et OpenJDK. Cela inclut :

Oracle Java SE (et les versions plus anciennes non prises en charge) :

  • 18
  • 17.0.2

Oracle GraalVM Enterprise Edition :

  • 22.0.0.2
  • 21.3.1

OpenJDK :

  • 18
  • 17.0.2
  • 15.0.6
  • 13.0.10
  • 11.0.14
  • 8u322
  • 7u331

Both Oracle and OpenJDK have put out advisories, and patches for the issue that can be applied right away. 

Pratiques concrètes pour se défendre contre cette vulnérabilité

Chez Secure Code Warrior, nous nous efforçons de fournir aux développeurs les informations les plus pertinentes et des exercices pratiques sur les vulnérabilités critiques, qu'il s'agisse d'une faille récente comme Psychic Signatures ou d'un problème existant depuis des années.

Nous pensons que pour véritablement écarter les risques, il est nécessaire de permettre aux développeurs de comprendre les mécanismes de défense et d'écrire du code sécurisé dès le départ. C'est pourquoi nous avons créé un guide étape par étape sur cette vulnérabilité (et bien d'autres) pour vous et vos équipes concernées.

Dans ce guide, vous pourrez suivre les instructions pour exploiter la faille Psychic Signature dans les JWT et constater l'impact sur une application fonctionnelle en temps réel.

Essayez-le dès maintenant.

‍

Slogan

Gouvernez le développement assisté par IA avant la mise en production

Évaluez les risques liés à l'IA, appliquez des politiques de codage sécurisé dès le commit et accélérez la livraison sécurisée tout au long de votre cycle de développement.

Réserver une démo
Bibliothèque de ressources

Explorer plus d'articles

Accédez à du contenu expert sur le codage sécurisé, la gouvernance de l'IA et la gestion des risques logiciels.

tout parcourir
Étude de cas
Libellé du filtre
Ceci est un texte à l'intérieur d'un bloc div.

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

En savoir plus
Étude de cas
Libellé du filtre
Ceci est un texte à l'intérieur d'un bloc div.

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

En savoir plus
Étude de cas
Libellé du filtre
Ceci est un texte à l'intérieur d'un bloc div.

Une culture de la sécurité : comment Sage a bâti son programme de champions

Découvrez comment Sage a renforcé sa sécurité grâce à une approche flexible axée sur les relations humaines, formant plus de 200 champions de la sécurité et obtenant une réduction mesurable des risques.

En savoir plus
Blog
Libellé du filtre
Ceci est un texte à l'intérieur d'un bloc div.

Mois de la sensibilisation à la cybersécurité 2026 : comprendre la sécurité de l'IA est essentiel à la défense de l'entreprise

Nous avons atteint un point où la plupart des grandes entreprises d'IA ont publiquement appelé à un ralentissement mondial du développement de l'IA afin de permettre aux garde-fous de sécurité de rattraper leur retard. Pourtant, la réalité est que de graves problèmes de sécurité se sont déjà concrétisés. Cela place d'innombrables responsables de la sécurité et équipes de direction dans une situation d'urgence, alors que les coûts financiers et les risques liés à la mise en œuvre de l'IA ne cessent de s'accumuler.

En savoir plus
Blog
Libellé du filtre
Ceci est un texte à l'intérieur d'un bloc div.

Levier 8 : Valoriser votre programme

Un programme de codage sécurisé a besoin de plus qu'un contenu de qualité pour réussir. Le levier 8 montre comment l'image de marque transforme la participation en une expérience convoitée, axée sur le statut.

En savoir plus
Blog
Libellé du filtre
Ceci est un texte à l'intérieur d'un bloc div.

Chaque employé est désormais en première ligne de la cybersécurité IA

Le paysage technologique des entreprises évolue à une vitesse que peu avaient anticipée avant qu'il ne soit trop tard. Nous avons officiellement franchi le cap du code écrit par l'humain et de l'assistance basique par copilote pour entrer dans l'ère du cycle de vie de développement agentique (ADLC). Si les agents IA autonomes promettent une efficacité sans précédent dans de multiples fonctions, ils apportent également une toute nouvelle catégorie de risques en matière de sécurité et de réglementation.

En savoir plus

Sécurisez le développement piloté par l'IA avant le déploiement

Identifiez les risques de développement, appliquez vos politiques et prévenez les vulnérabilités tout au long du cycle de vie de vos logiciels.

Réserver une démo
trust score
Aucun élément trouvé.