Psychische Signaturen - was Sie wissen müssen

Veröffentlicht Apr 27, 2022
von Charlie Eriksen
FALLSTUDIE

Psychische Signaturen - was Sie wissen müssen

Veröffentlicht Apr 27, 2022
von Charlie Eriksen
Ressource anzeigen
Ressource anzeigen

Am 19. April 2022 hat Neil Madden eine Sicherheitslücke in Oracle Java 15 bis 18 und OpenJDK 15, 17 und 18 bekannt gegeben. Die Schwachstelle liegt in der Kryptographie für ECDSA-Signaturen, die es einem Angreifer ermöglicht, die Signaturprüfungen für diese Signaturen vollständig zu umgehen. 

Es ist leicht, die Schlagzeilen über diese Sicherheitslücke zu lesen und sie zu überfliegen, da ECDSA-Signaturen sehr undurchsichtig sind. ECDSA-Signaturen spielen jedoch eine wichtige Rolle beim Schutz von Systemen im Internet für wichtige Aufgaben wie die Authentifizierung.

Bevor wir ins Detail gehen, sollten Sie erfahren, wie Hacker psychische Signaturen praktisch ausnutzen. Gehen Sie direkt in unser kostenloses Labor - Missions und probieren Sie es selbst aus.

Was hat es mit ECDSA auf sich?

Vielleicht haben Sie noch nie von ECDSA gehört. Es ist die Abkürzung für Elliptic Curve Digital Signature Algorithm, eine Art der Kryptographie, die die mathematischen Eigenschaften elliptischer Kurven nutzt und eine der derzeit stärksten kryptographischen Sicherheiten in der Branche bietet.

Das bedeutet, dass es für viele wichtige Funktionen verwendet wird, z. B:

  • Die Unterzeichnung von SSL-Zertifikaten
  • Handshakes bei verschlüsselter Kommunikation
  • SAML
  • JWT-Signaturen
  • OpenID Connect-Signaturen

Das bedeutet, dass ECDSA ein Schlüsselelement für viele der sensibelsten Funktionen zum Schutz von Systemen ist, die es gibt. Die Möglichkeit, die Signaturprüfung zu umgehen, wäre potenziell ziemlich verheerend.

Wie wird die Schwachstelle ausgenutzt?

Die Mathematik von ECDSA ist leider etwas kompliziert. Aber das Wichtigste ist, dass eine ECDSA-Signatur zwei Informationen enthält: r und s

Diese Zahlen werden verwendet, um die Gültigkeit der Signatur zu berechnen. Der Wert r ist das "Ergebnis" (linke Seite) einer Berechnung, bei der sowohl r als auch s auf der rechten Seite der Gleichung verwendet werden. Da die Multiplikation mit 0 eine schlechte Idee ist, wird in der ECDSA-Spezifikation ausdrücklich darauf hingewiesen, dass die Werte r und s verworfen werden sollten, wenn sie jemals 0 sind. 

Aber die Java-Implementierung von ECDSA hat vergessen, dies zu berücksichtigen. Daher wird sie eine Signatur akzeptieren, bei der sowohl r als auch s gleich 0 sind, was immer der Fall sein wird. Wir können dies am Beispiel eines JWT demonstrieren, um zu zeigen, wie einfach es ist. Mit Hilfe von https://token.dev/ können wir ein Token mit dem Algorithmus ES256 erzeugen, ähnlich wie eines, das von einer Anwendung erzeugt wird:

Ein mit dem Algorithmus ES256 erzeugtes Token

Ein JWT ist in drei Teile aufgeteilt:

  • Kopfzeile (in blau)
  • Nutzlast (in grün)
  • Unterschrift (in rot)

Wenn wir nun die Signaturprüfung umgehen wollten, wie würden wir das tun? Die Signatur gibt die Werte für r und s an und ist im DER-Format kodiert. 

DER-Kodierung für Signaturwerte

Ändern wir unser JWT, um diese neue Signatur zu verwenden. Beachten Sie, dass in JWTs das Gleichheitszeichen nicht enthalten ist.

Neues JWT mit DER-kodierter Signatur

Jetzt hat unsere Signatur r und s auf 0 gesetzt, und in anfälligen Versionen von Java wird die Signaturprüfung jetzt für jede von Ihnen angegebene Nutzlast erfolgreich sein. 

Wer ist betroffen, und wie kann man das Problem abmildern?

Die Sicherheitslücke betrifft sowohl Oracle Java als auch OpenJDK. Dazu gehören:

Oracle Java SE (und ältere, nicht unterstützte Versionen): 

  • 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

Sowohl Oracle als auch OpenJDK haben Hinweise und Patches für das Problem herausgegeben, die sofort angewendet werden können. 

Praktische Übungen zum Schutz vor dieser Sicherheitslücke

Hier auf Secure Code Warrior bemühen wir uns, Entwicklern die wichtigsten Informationen und praktischen Übungen für kritische Schwachstellen zur Verfügung zu stellen, unabhängig davon, ob es sich um eine neue Schwachstelle wie Psychic Signatures oder um eine seit Jahren bekannte handelt.

Wir sind der Meinung, dass es für eine wirkliche Risikominimierung notwendig ist, die Entwickler in die Lage zu versetzen, den Abwehrmechanismus zu verstehen und von Anfang an sicheren Code zu schreiben. Deshalb haben wir für Sie und die betroffenen Teams einen schrittweisen Überblick über diese (und viele andere) Schwachstellen erstellt. 

In der Komplettlösung können Sie den Anweisungen folgen, um die physikalische Signatur in JWTs auszunutzen und die Auswirkungen auf eine funktionierende App in Echtzeit zu sehen.

Probieren Sie es jetzt aus.

Ressource anzeigen
Ressource anzeigen

Autor

Charlie Eriksen

Sie wollen mehr?

Tauchen Sie ein in unsere neuesten Erkenntnisse über sichere Kodierung im Blog.

Unsere umfangreiche Ressourcenbibliothek zielt darauf ab, die menschliche Herangehensweise an eine sichere Weiterbildung im Bereich der Programmierung zu stärken.

Blog ansehen
Sie wollen mehr?

Holen Sie sich die neuesten Forschungsergebnisse zur entwicklergesteuerten Sicherheit

Unsere umfangreiche Ressourcenbibliothek ist voll von hilfreichen Ressourcen, von Whitepapers bis hin zu Webinaren, die Ihnen den Einstieg in die entwicklungsorientierte sichere Programmierung erleichtern. Erforschen Sie sie jetzt.

Ressourcendrehscheibe

Psychische Signaturen - was Sie wissen müssen

Veröffentlicht Apr 27, 2022
Von Charlie Eriksen

Am 19. April 2022 hat Neil Madden eine Sicherheitslücke in Oracle Java 15 bis 18 und OpenJDK 15, 17 und 18 bekannt gegeben. Die Schwachstelle liegt in der Kryptographie für ECDSA-Signaturen, die es einem Angreifer ermöglicht, die Signaturprüfungen für diese Signaturen vollständig zu umgehen. 

Es ist leicht, die Schlagzeilen über diese Sicherheitslücke zu lesen und sie zu überfliegen, da ECDSA-Signaturen sehr undurchsichtig sind. ECDSA-Signaturen spielen jedoch eine wichtige Rolle beim Schutz von Systemen im Internet für wichtige Aufgaben wie die Authentifizierung.

Bevor wir ins Detail gehen, sollten Sie erfahren, wie Hacker psychische Signaturen praktisch ausnutzen. Gehen Sie direkt in unser kostenloses Labor - Missions und probieren Sie es selbst aus.

Was hat es mit ECDSA auf sich?

Vielleicht haben Sie noch nie von ECDSA gehört. Es ist die Abkürzung für Elliptic Curve Digital Signature Algorithm, eine Art der Kryptographie, die die mathematischen Eigenschaften elliptischer Kurven nutzt und eine der derzeit stärksten kryptographischen Sicherheiten in der Branche bietet.

Das bedeutet, dass es für viele wichtige Funktionen verwendet wird, z. B:

  • Die Unterzeichnung von SSL-Zertifikaten
  • Handshakes bei verschlüsselter Kommunikation
  • SAML
  • JWT-Signaturen
  • OpenID Connect-Signaturen

Das bedeutet, dass ECDSA ein Schlüsselelement für viele der sensibelsten Funktionen zum Schutz von Systemen ist, die es gibt. Die Möglichkeit, die Signaturprüfung zu umgehen, wäre potenziell ziemlich verheerend.

Wie wird die Schwachstelle ausgenutzt?

Die Mathematik von ECDSA ist leider etwas kompliziert. Aber das Wichtigste ist, dass eine ECDSA-Signatur zwei Informationen enthält: r und s

Diese Zahlen werden verwendet, um die Gültigkeit der Signatur zu berechnen. Der Wert r ist das "Ergebnis" (linke Seite) einer Berechnung, bei der sowohl r als auch s auf der rechten Seite der Gleichung verwendet werden. Da die Multiplikation mit 0 eine schlechte Idee ist, wird in der ECDSA-Spezifikation ausdrücklich darauf hingewiesen, dass die Werte r und s verworfen werden sollten, wenn sie jemals 0 sind. 

Aber die Java-Implementierung von ECDSA hat vergessen, dies zu berücksichtigen. Daher wird sie eine Signatur akzeptieren, bei der sowohl r als auch s gleich 0 sind, was immer der Fall sein wird. Wir können dies am Beispiel eines JWT demonstrieren, um zu zeigen, wie einfach es ist. Mit Hilfe von https://token.dev/ können wir ein Token mit dem Algorithmus ES256 erzeugen, ähnlich wie eines, das von einer Anwendung erzeugt wird:

Ein mit dem Algorithmus ES256 erzeugtes Token

Ein JWT ist in drei Teile aufgeteilt:

  • Kopfzeile (in blau)
  • Nutzlast (in grün)
  • Unterschrift (in rot)

Wenn wir nun die Signaturprüfung umgehen wollten, wie würden wir das tun? Die Signatur gibt die Werte für r und s an und ist im DER-Format kodiert. 

DER-Kodierung für Signaturwerte

Ändern wir unser JWT, um diese neue Signatur zu verwenden. Beachten Sie, dass in JWTs das Gleichheitszeichen nicht enthalten ist.

Neues JWT mit DER-kodierter Signatur

Jetzt hat unsere Signatur r und s auf 0 gesetzt, und in anfälligen Versionen von Java wird die Signaturprüfung jetzt für jede von Ihnen angegebene Nutzlast erfolgreich sein. 

Wer ist betroffen, und wie kann man das Problem abmildern?

Die Sicherheitslücke betrifft sowohl Oracle Java als auch OpenJDK. Dazu gehören:

Oracle Java SE (und ältere, nicht unterstützte Versionen): 

  • 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

Sowohl Oracle als auch OpenJDK haben Hinweise und Patches für das Problem herausgegeben, die sofort angewendet werden können. 

Praktische Übungen zum Schutz vor dieser Sicherheitslücke

Hier auf Secure Code Warrior bemühen wir uns, Entwicklern die wichtigsten Informationen und praktischen Übungen für kritische Schwachstellen zur Verfügung zu stellen, unabhängig davon, ob es sich um eine neue Schwachstelle wie Psychic Signatures oder um eine seit Jahren bekannte handelt.

Wir sind der Meinung, dass es für eine wirkliche Risikominimierung notwendig ist, die Entwickler in die Lage zu versetzen, den Abwehrmechanismus zu verstehen und von Anfang an sicheren Code zu schreiben. Deshalb haben wir für Sie und die betroffenen Teams einen schrittweisen Überblick über diese (und viele andere) Schwachstellen erstellt. 

In der Komplettlösung können Sie den Anweisungen folgen, um die physikalische Signatur in JWTs auszunutzen und die Auswirkungen auf eine funktionierende App in Echtzeit zu sehen.

Probieren Sie es jetzt aus.

Wir bitten Sie um Ihre Erlaubnis, Ihnen Informationen über unsere Produkte und/oder verwandte Themen der sicheren Codierung zuzusenden. Wir werden Ihre persönlichen Daten immer mit äußerster Sorgfalt behandeln und sie niemals zu Marketingzwecken an andere Unternehmen verkaufen.

Um das Formular abzuschicken, aktivieren Sie bitte "Analytics"-Cookies. Sie können die Cookies wieder deaktivieren, sobald Sie fertig sind.