Elliptische Kurven: Java-Signaturprüfung lässt sich mit Nullen austricksen
Bei der Prüfung von ECDSA-Signaturen in Java fand sich ein Fehler, der dazu führt, dass man eine immer gültige Signatur erstellen kann.

Ein gravierender Fehler in der kryptographischen Bibliothek von Java führt dazu, dass sich die Signaturprüfung des ECDSA-Algorithmus trivial austricksen lässt. Die Sicherheitslücke betrifft Java ab Version 15 und wurde mit dem April-Update von Oracle geschlossen. Sie trägt die Kennung CVE-2022-21449.
Der ECDSA-Algorithmus ist ein gängiges Verfahren, um kryptographische Signaturen mit Hilfe elliptischer Kurven zu erstellen. Eine Signatur besteht hier aus zwei Zahlenwerten, die üblicherweise als r und s bezeichnet werden.
Zwei Nullen führen immer zum Ziel
Wie der IT-Sicherheitsexperte Neil Madden nun herausfand, lässt sich diese Prüfung bei der ECDSA-Implementierung von Java umgehen, indem man schlicht Null für die beiden Werte r und s verwendet. Der Grund: Bei der Signaturprüfung findet eine Multiplikation und eine Prüfung statt, die, wenn man sie naiv mit Nullwerten durchführt, immer erfolgreich ist.
Eine korrekte Implementierung von ECDSA muss diverse Checks vornehmen, die diese Lücke verhindert hätten. So muss auf jeden Fall gewährleistet sein, dass r und s größer als Null sind - alleine das hätte die Lücke in dieser trivialen Form bereits verhindert.
Die Sicherheitslücke besteht seit Java Version 15. Dort wurde die bisherige C++-Implementierung der Kryptographie-Funktionen durch eine in Java geschriebene Implementierung ersetzt. Laut Madden hätte man den Fehler auch finden können, wenn man den Code mit Project Wycheproof, einer von Google entwickelten kryptographischen Testsuite, getestet hätte.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
- ohne Werbung
- mit ausgeschaltetem Javascript
- mit RSS-Volltext-Feed