Alert!

Bug in Java macht digitale Signaturen wertlos

Doctor-Who-Fans wollen es schon lange: "Psychic Paper" präsentiert dem Opfer scheinbar echte Ausweise aller Art. Ein Fehler in Java macht das zum Kinderspiel.

Lesezeit: 3 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 173 Beiträge
Von Spezifikationen und Geheimdiensten: Hinter den Kullissen eines Zertifikats-Skandals

(Bild: deepadesigns / shutterstock.com)

Von
  • Jürgen Schmidt

Durch einen dummen Fehler in der Umsetzung von digitalen Signaturen akzeptieren viele Java-Umgebungen gefälschte digitale Unterschriften. Der Entdecker des Problems vergleicht es mit dem legendären Psychic Paper, das dem Gegenüber der britischen Serienheldin aus Doctor Who ein beliebiges Dokument präsentiert – also etwa den Ausweis eines Gerichtsvollziehers.

Der Fehler betrifft digitale Signaturen auf Basis des weit verbreiteten Elliptic Curve Digital Signature Algorithms (EDSA). Etwas vereinfacht besteht eine digitale Unterschrift aus zwei ganzen Zahlen r und s, die gemeinsam mit dem involvierten Schlüssel einer Gleichung genügen müssen, damit die Unterschrift gültig ist. Dabei dürfen r und s jedoch explizit nicht 0 sein, denn sonst ergibt sich aus den Gleichungen immer das triviale "0 = 0" und damit eine gültige Unterschrift.

Exakt diesen Test auf den unsinnigen Wert 0 haben die Java-Entwickler jedoch vergessen. Genauer gesagt fiel der unter den Tisch, als sie den Krypto-Code des JDK für Java 15 nach Java portierten; die vorherige C++-Version enthielt ihn nämlich noch. Konkret betroffen sind lauf dem Entdecker Neil Madden die Java-Versionen 15, 16, 17 und 18 vor dem Critical Patch Update (CPU) im April 2022 Critical Patch Update, mit dem Oracle die Lücke beseitigt hat. Gemeldet hatte Madden den Bug nach eigenen Angaben bereits im November letzten Jahres.

Digitale Signaturen sollen typischerweise die Echtheit irgendwelcher Angaben beweisen und kommen in dieser Funktion an unzähligen Stellen vor: Identitätsnachweise in Form von Zertifikaten, als digitale Unterschrift unter Verträgen oder anderen Dokumenten, Nachweise der Echtheit von Software-Paketen und so weiter und so fort. Erledigt eine dieser Aufgaben eine Java-App auf Basis einer der betroffenen Bibliotheken haben Angreifer leichtes Spiel: Sie können beliebige Daten mit einer leeren Unterschrift versehen und die App bestätigt deren Echtheit.

Das kann dramatische Konsequenzen haben, auch wenn Oracle dem Fehler CVE-2022-21449 nur ein Rating von 7,5 (High) zugesteht. Wer solche Apps einsetzt oder entwickelt, sollte Oracles aktuelles Java-Update zügig einspielen und bei Bedarf neue Versionen seiner Software bereitstellen.

Für Entwickler hat Madden noch einen weiteren Tipp parat: Oft nutzen Programme beziehungsweise Protokolle digitale Signaturen, um die Echtheit von (übertragenen) Daten sicherzustellen; dabei wäre in vielen Fällen der Einsatz eines kryptografischen Hash-Verfahrens mit einem zuvor ausgetauschten Shared Secret (Hash-basierter Message Authentication Code, kurz HMAC) viel einfacher und vor allem weniger fehleranfällig.

(ju)