Entwickler von Oracle zu Java: Beenden Sie das Signieren von JAR-Dateien mit MD5

Ab April behandelt Oracle mit dem MD5-Hashing-Algorithmus signierte JAR-Dateien so, als wären sie nicht signiert. Dies bedeutet, dass moderne Versionen der Java Runtime Environment (JRE) die Ausführung dieser JAR-Dateien blockieren. Die Verschiebung ist längst überfällig, da die Sicherheitslücken von MD5 bekannt sind und stattdessen sicherere Algorithmen für die Codesignatur verwendet werden sollten.

"Ab den für den 18. April 2017 geplanten Critical Patch Update-Versionen im April behandeln alle JRE-Versionen mit MD5 signierte JARs als nicht signiert", schrieb Oracle auf seiner Java-Download-Seite.

JAR-Dateien mit Codesignatur, die mit Java-Bibliotheken und -Applets gebündelt sind, sind eine grundlegende Sicherheitspraxis, da Benutzer wissen, wer den Code tatsächlich geschrieben hat, und er seit dem Schreiben nicht geändert oder beschädigt wurde. In den letzten Jahren hat Oracle das Sicherheitsmodell von Java verbessert, um Systeme besser vor externen Exploits zu schützen und nur signiertem Code die Ausführung bestimmter Arten von Vorgängen zu ermöglichen. Eine Anwendung ohne gültiges Zertifikat ist möglicherweise unsicher.

Neuere Versionen von Java erfordern jetzt, dass alle JAR-Dateien mit einem gültigen Codesignaturschlüssel signiert werden. Ab Java 7 Update 51 können nicht signierte oder selbstsignierte Anwendungen nicht mehr ausgeführt werden.

Die Codesignatur ist ein wichtiger Bestandteil der Sicherheitsarchitektur von Java, aber der MD5-Hash schwächt genau den Schutz, den die Codesignatur bieten soll. MD5 stammt aus dem Jahr 1992 und wird für One-Way-Hashing verwendet: Es wird eine Eingabe vorgenommen und eine eindeutige kryptografische Darstellung generiert, die als identifizierende Signatur behandelt werden kann. Keine zwei Eingaben sollten zu demselben Hash führen, aber seit 2005 haben Sicherheitsforscher wiederholt gezeigt, dass die Datei geändert werden kann und bei Kollisionsangriffen immer noch denselben Hash aufweist. Während MD5 nicht mehr für TLS / SSL verwendet wird - Microsoft hat MD5 für TLS im Jahr 2014 abgelehnt -, ist es trotz seiner Schwächen in anderen Sicherheitsbereichen weiterhin weit verbreitet.

Mit der Änderung von Oracle werden "betroffene MD-5-signierte JAR-Dateien [von Oracle JRE] nicht mehr als vertrauenswürdig angesehen und können nicht mehr standardmäßig ausgeführt werden, z. B. bei Java-Applets oder Java Web Start-Anwendungen." Erik Costlow, ein Oracle-Produktmanager bei der Java Platform Group, schrieb bereits im Oktober.

Entwickler müssen überprüfen, ob ihre JAR-Dateien nicht mit MD5 signiert wurden, und, falls dies der Fall ist, betroffene Dateien mit einem moderneren Algorithmus neu signieren. Administratoren müssen sich bei den Anbietern erkundigen, um sicherzustellen, dass die Dateien nicht MD5-signiert sind. Wenn auf den Dateien zum Zeitpunkt der Umschaltung noch MD5 ausgeführt wird, wird den Benutzern eine Fehlermeldung angezeigt, dass die Anwendung nicht ausgeführt werden konnte. Laut Costlow hat Oracle bereits Anbieter und Quelllizenznehmer über die Änderung informiert.

In Fällen, in denen der Anbieter nicht mehr bereit ist oder die Anwendung nicht erneut signieren möchte, können Administratoren den Prozess deaktivieren, der nach signierten Anwendungen sucht (was schwerwiegende Auswirkungen auf die Sicherheit hat), benutzerdefinierte Bereitstellungsregelsätze für den Speicherort der Anwendung einrichten oder eine Ausnahmesite verwalten Liste, schrieb Costlow.

Es gab viele Warnungen. Oracle hat die Verwendung von MD5 mit RSA-Algorithmus als Standard-JAR-Signaturoption mit Java SE6 eingestellt, die 2006 veröffentlicht wurde. Die MD5-Ablehnung wurde ursprünglich im Rahmen des Critical Patch-Updates vom Oktober 2016 angekündigt und sollte diesen Monat im Rahmen des Januar CPU. Um sicherzustellen, dass Entwickler und Administratoren für die Umstellung bereit sind, hat das Unternehmen beschlossen, die Umstellung auf das Critical Patch Update im April mit Oracle Java SE 8u131 und den entsprechenden Versionen von Oracle Java SE 7, Oracle Java SE 6 und Oracle JRockit R28 zu verschieben.

„Der CA Security Council begrüßt Oracle für seine Entscheidung, MD5 als nicht signiert zu behandeln. MD5 ist seit Jahren veraltet, was die Abkehr von MD5 zu einem entscheidenden Upgrade für Java-Benutzer macht “, sagte Jeremy Rowley, Executive Vice President für Schwellenländer bei Digicert und Mitglied des CA Security Council.

Es hat lange gedauert, MD5 zu verwerfen, aber es reicht nicht aus. Oracle sollte sich auch mit der Ablehnung von SHA-1 befassen, das seine eigenen Probleme aufweist, und SHA-2 für die Codesignatur übernehmen. Diese Vorgehensweise würde der aktuellen Migration entsprechen, da sich große Browser verpflichtet haben, die Unterstützung von Websites mit SHA-1-Zertifikaten einzustellen. Da die meisten Organisationen bereits an der SHA-1-Migration für TLS / SSL beteiligt sind, ist es sinnvoll, auch den Rest ihrer Infrastruktur für Zertifikate und Schlüsselsignaturen auf SHA-2 zu verlagern.

Die gute Nachricht ist, dass Oracle plant, SHA-1 in Zertifikatketten zu deaktivieren, die durch Roots verankert sind, die standardmäßig im JDK von Oracle enthalten sind, während MD5 veraltet ist. Dies geht aus der Crypto Roadmap von JRE und JDK hervor, in der technische Anweisungen und Informationen zu laufenden Kryptografien enthalten sind arbeiten für Oracle JRE und Oracle JDK. Die minimale Schlüssellänge für Diffie-Hellman wird später im Jahr 2017 ebenfalls auf 1.024 Bit erhöht.

In der Roadmap wird außerdem behauptet, Oracle habe kürzlich die Unterstützung für die Signaturalgorithmen SHA224withDSA und SHA256withDSA für Java 7 hinzugefügt und die Elliptic Curve (EC) für Schlüssel mit weniger als 256 Bit für SSL / TLS für Java 6, 7 und 8 deaktiviert.