Java version 8 update 141 has been released by Oracle. This is the latest version available for users who run Java on their PCs. Java is a programming language and computing platform. It is also a software package that runs on more than 850 million personal computers worldwide. There are lots of applications and websites that will not work properly unless you have Java installed.
Known Issues
deploy/webstart
JAR file validation changes
After upgrading to the JDK July CPU release (8u141/7u151/6u161), when executing Java Webstart applications, customers may encounter an exception like
“java.lang.SecurityException: digest missing for …” that prevents the application from loading.
The issue is observed in signed JAR files whose manifest contains package version information[1] and does not have a trailing “/” in the name of the package (e.g.: Name: org/apache/xml/resolver). While we work towards resolving this issue, in the interim, users can work-around the issue as follows:
NOTE: We recommend use of this workaround only if the distributor of the JAR files can “re-sign” the JAR files.
1. Extract the contents of the signed JAR file (e.g.: jar xf jar-file).
2. Modify META-INF/MANIFEST.MF file and add a trailing “/” to the name of the package ( e.g.: Name: org/apache/xml/resolver/).
3. Remove the current signature files ( e.g.: rm -f META-INF/*.SF META-INF/*.RSA META-INF/*.DSA).
4. Recreate the JAR file ( e,g.: jar cfm jar-file META-INF/MANIFEST.MF input-file(s)).
NOTE: You must use the jar utility. Other jar creation tools might re-introduce the issue.
5. Re-sign the JAR file.
[1] https://docs.oracle.com/javase/8/docs/technotes/guides/versioning/spec/versioning2.html#wp91706
Certificate Changes
One new root certificate has been added:
ISRG Root X1
alias: letsencryptisrgx1
DN: CN=ISRG Root X1, O=Internet Security Research Group, C=US
New Features
security-libs/java.security
Disable SHA-1 TLS Server Certificates
Any TLS server certificate chain containing a SHA-1 certificate (end-entity or intermediate CA) and anchored by a root CA certificate included by default in Oracle’s JDK is now blocked by default. TLS Server certificate chains that are anchored by enterprise or private CAs are not affected. Only X.509 certificate chains that are validated by the PKIX
implementation of the CertPathValidator
and CertPathBuilder
APIs and the SunX509
and PKIX
implementations of the TrustManagerFactory
API are subject to the restrictions. Third-party implementations of these APIs are directly responsible for enforcing their own restrictions.
To implement this restriction and provide more flexibility for configuring your own restrictions, additional features have been added to the jdk.certpath.disabledAlgorithms
and jdk.jar.disabledAlgorithms
Security Properties in the java.security file, as follows:
-
jdk.certpath.disabledAlgorithms
:Three new constraints have been added to this Security Property:
A new constraint named
jdkCA
, that when set, restricts the algorithm if it is used in a certificate chain that is anchored by a trust anchor that is pre-installed in the JDK cacerts keystore. This condition does not apply to certificate chains that are anchored by other certificates, including those that are subsequently added to the cacerts keystore. Also, note that the restriction does not apply to trust anchor certificates, since they are directly trusted.A new constraint named
denyAfter
, that when set, restricts the algorithm if it is used in a certificate chain after the specified date. The restriction does not apply to trust anchor certificates, since they are directly trusted. Also, code signing certificate chains as used in signed JARs are treated specially as follows:-
if the certificate chain is used with a signed JAR that is not timestamped, it will be restricted after the specified date
-
if the certificate chain is used with a signed JAR that is timestamped, it will not be restricted if it is timestamped before the specified date. If the JAR is timestamped after the specified date, it will be restricted.
A new constraint named
usage
, that when set, restricts the algorithm if it is used in a certificate chain for the specified use(s). Three usages are initially supported:TLSServer
for TLS/SSL server certificate chains,TLSClient
for TLS/SSL client certificate chains, andSignedJAR
for certificate chains used with signed JARs. -
Multiple constraints can be combined to constrain an algorithm when delimited by ‘&’. For example, to disable SHA-1 TLS Server certificate chains that are anchored by pre-installed root CAs, the constraint is “SHA1 jdkCA & usage TLSServer”.
-
jdk.jar.disabledAlgorithms
:A new constraint has been added named
denyAfter
, that when set, restricts the algorithm if it is used in a signed JAR after the specified date, as follows:-
if the JAR is not timestamped, it will be restricted (treated as unsigned) after the specified date
-
if the JAR is timestamped, it will not be restricted if it is timestamped before the specified date. If the JAR is timestamped after the specified date, it will be restricted.
For example, to restrict SHA1 in JAR files signed after January 1st 2018, add the following to the property: “SHA1 denyAfter 2018-01-01”. The syntax is the same as the certpath property, however certificate checking will not be performed by this property.
-
Changes
core-svc/java.lang.management
com.sun.management.HotSpotDiagnostic::dumpHeap API is modified to throw IllegalArgumentException if the supplied file name does not end with “.hprof” suffix. Existing applications which do not provide a file name ending with the “.hprof” extension will fail with IllegalArgumentException. In that case, applications can either choose to handle the exception or restore old behavior by setting system property ‘jdk.management.heapdump.allowAnyFileSuffix‘ to true.
security-libs/javax.net.ssl
Custom HostnameVerifier enables SNI extension
Earlier releases of JDK 8 Updates didn’t always send the Server Name Indication (SNI) extension in the TLS ClientHello phase if a custom hostname verifier was used. This verifier is set via the setHostnameVerifier(HostnameVerifier v) method in HttpsURLConnection. The fix ensures the Server Name is now sent in the ClientHello body.
xml/jax-ws
The wsimport tool has been changed to disallow DTDs in Web Service descriptions, specifically:
- DOCTYPE declaration is disallowed in documents
- External general entities are not included by default
- External parameter entities are not included by default
- External DTDs are completely ignored
To restore the previous behavior:
- Set the System property com.sun.xml.internal.ws.disableXmlSecurity to true
- Use the wsimport tool command line option –disableXmlSecurity
NOTE: JDK 7 and JDK 6 support for this option in wsimport will be provided via a Patch release post July CPU
Bug Fixes
# | JBS | component | subcomponent | Description |
---|---|---|---|---|
1 | JDK-8179014 |
client‑libs | java.awt | JFileChooser with Windows look and feel crashes on win 10 |
2 | JDK-8174729 |
core‑libs | java.lang:reflect | Race Condition in java.lang.reflect.WeakCache |
3 | JDK-8165231 |
core‑libs | java.nio | java.nio.Bits.unaligned() doesn’t return true on ppc |
4 | JDK-8180582 |
core‑libs | java.rmi | After updating to Java8u131, the bind to rmiregistry is rejected by registryFilter even though registryFilter is set |
5 | JDK-8139870 |
core‑svc | java.lang.management | sun.management.LazyCompositeData.isTypeMatched() fail for composite types with items of ArrayType |
6 | JDK-8174164 |
hotspot | compiler | SafePointNode::_replaced_nodes breaks with irreducible loops |
7 | JDK-8165342 |
javafx | scenegraph | NPE when JavaFX loads default stylesheet or font families if CCL is null |
8 | JDK-8179321 |
javafx | web | WebEngine.getDocument().getDocumentURI() no longer returns null for loading a String of HTML |
9 | JDK-8175251 |
security‑libs | java.security | Failed to load RSA private key from pkcs12 |
10 | JDK-8176536 |
security‑libs | java.security | Improved algorithm constraints checking |
12 | 1 JDK-8144566 |
security‑libs | javax.net.ssl | Custom HostnameVerifier disables SNI extension |
Oracle Java SE Executive Summary
This Critical Patch Update contains 32 new security fixes for Oracle Java SE. 28 of these vulnerabilities may be remotely exploitable without authentication, i.e., may be exploited over a network without requiring user credentials.
If you would like assistance managing and deploying Java for PCs, please contact H Tech Solutions using the URL below.