Sicherheitslücke in der Java-Implementation des Elliptic Curve Digital Signature Algorithm (ECDSA)

22. April 2022

Beschreibung

Die Sicherheitslücke CVE-2022-21449 in der Java-Implementation des Elliptic Curve Digital Signature Algorithm (ECDSA) erlaubt das Erstellen von "leeren" digitalen Signaturen, die durch die Schwachstelle fälschlicherweise als echt interpretiert werden.

CVE-Nummern: CVE-2022-21449

CVSS Base Score: 7.5 lt. Oracle, 10 lt. dem Entdecker des Bugs

Auswirkungen

Die Sicherheitslücke erlaubt es Angreifer:innen, beliebige Daten mit einer leeren Signatur zu versehen und so die Signaturprüfung zu umgehen. Die verwundbare Java-Applikation bestätigt die Echtheit dieser Daten.

Die weiteren Auswirkungen davon sind schwer abschätzbar, da viele Faktoren in die Bewertung konkreter Systeme einfließen. Wir empfehlen eine Analyse basierend auf der folgenden Punkten, eine überhastete Reaktion ist nicht angebracht.   

  • Server und Client-Zertifikate nach X.509 werden von Certification Authorities (CA) signiert. Ist eine CA, die einen Elliptic Curve Schlüssel verwendet, als vertrauenswürdig konfiguriert, so kann man einer verwundbaren Java-Applikation beliebige Identitäten vortäuschen.
  • Daher kann die Überprüfung, ob ein Server-Zertifikat gültig ist, auf einem verwundbaren Java-basierten Client ausgehebelt werden. Damit sind Man-in-the-Middle Angriffe möglich.
  • Das gleiche gilt für die Gegenrichtung: Eine Authentisierung mittels TLS-Client-Zertifikat kann ebenfalls ausgehebelt werden, wenn der Server verwundbar ist.
  • Digitale Signaturen auf strukturierten Daten, wie etwa XML-DSIG für XML, JOSE/JWS für JSON und COSE für CBOR, können auch ECDSA verwenden. Damit ist die korrekte Verifikation dieser Signaturen durch eine der betroffenen Java-Versionen nicht sichergestellt.
  • Diese Techniken sind die kryptografische Basis diverser anderer Protokolle, etwa:
    • SAML 2.0 (Ein Protokoll für Web-basiertes Single-Sign-On) basiert auf XML-DSIG
    • Open ID Connect (OIDC) ist ein weiteres SSO-Protokoll, es basiert auf JSON Web Tokens (JWT), die ihrerseits ein Spezialfall von JOSE/JWS sind.
    • WebAuthn (Ein Standard zur Identifikation von Usern im Web mittels kryptografischer Token, etwa „FIDO Keys“) basiert auf COSE.
    • Signierte Strich- oder QR-Codes, wie diverse Online-Tickets, die offline validiert werden, basieren auf COSE.
  • Auch die Verifikation von signierten Dokumenten könnte betroffen sein.

Betroffene Systeme

Systeme, auf denen folgende Software zur Verifikation von ECDSA-basierten Zertifikaten/Signaturen eingesetzt wird:

  • Oracle Java SE in den Versionen 7u331, 8u321, 11.0.14, 17.0.2 und 18
  • Oracle GraalVM Enterprise Edition in den Versionen 20.3.5, 21.3.1 und 22.0.0.2
  • OpenJDK in den Versionen 15.0.6, 17.0.2 und 18

Abhilfe

Einspielen der zur Verfügung gestellten Patches. Da damit zu rechnen ist, dass die Schwachstelle innerhalb kurzer Zeit ausgenützt werden wird, sollte dies so schnell wie möglich geschehen.

Hinweis

Generell empfiehlt CERT.at, sämtliche Software aktuell zu halten und dabei insbesondere auf automatische Updates zu setzen. Regelmäßige Neustarts stellen sicher, dass diese auch zeitnah aktiviert werden.


Informationsquelle(n):

CVE-2022-21449 (MITRE)
https://cve.mitre.org/cgi-bin/cvename.cgi?name=2022-21449

Golem.de-Artikel
https://www.golem.de/news/elliptische-kurven-java-signaturpruefung-laesst-sich-mit-nullen-austricksen-2204-164719.html

heise.de-Artikel
https://www.heise.de/news/Bug-in-Java-macht-digitale-Signaturen-wertlos-6847744.html

Blog des Entdeckers der Schwachstelle (englisch)
https://neilmadden.blog/2022/04/19/psychic-signatures-in-java/

Oracle Advisory (englisch)
https://www.oracle.com/security-alerts/cpuapr2022.html

OpenJDK Advisory (englisch)
https://openjdk.java.net/groups/vulnerability/advisories/2022-04-19