RFR: 8350830: Values converted incorrectly when reading TLS session tickets

Nibedita Jena duke at openjdk.org
Wed Apr 9 03:36:00 UTC 2025


Session resumption without server side state was added under [JDK-8211018](https://bugs.openjdk.org/browse/JDK-8211018).
While it is TLSv1.2 session resumption, the client hello message is being parsed in SSLSessionImpl for each extensions.

Customer has reported handshake failure and is reproducible locally with exception NegativeArraySizeExceptions when there is ServerNameIndication with size > 127.
According to RFC 3546, the host_name limit allowed is 255.
With a sample testcase when the host_name length is > 127, exception is thrown:
javax.net.ssl|DEBUG|71|Thread-1|2025-04-06 17:13:07.278 UTC|ClientHello.java:825|Negotiated protocol version: TLSv1.2
javax.net.ssl|WARNING|71|Thread-1|2025-04-06 17:13:07.281 UTC|SSLSocketImpl.java:1672|handling exception (
"throwable" : {
  java.lang.NegativeArraySizeException: -1
        at java.base/sun.security.ssl.SSLSessionImpl.<init>(SSLSessionImpl.java:399)
        at java.base/sun.security.ssl.SessionTicketExtension$T12CHSessionTicketConsumer.consume(SessionTicketExtension.java:468)

e.g.
int l = buf.get();
b = new byte[l];  <-------------------- NegativeArraySizeException thrown here when > 127

For TLSv1.3, its not an issue until length > 255.

According to RFC 5077, PSK identity length allowed is <0..2^16-1> and so its value conversion being taken care of under this change.
Master secret is allowed for 48 bytes - master_secret[48], shouldnt be an issue.

-------------

Commit messages:
 - 8350830: Values converted incorrectly when reading TLS session tickets

Changes: https://git.openjdk.org/jdk/pull/24535/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=24535&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8350830
  Stats: 398 lines in 3 files changed: 395 ins; 0 del; 3 mod
  Patch: https://git.openjdk.org/jdk/pull/24535.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/24535/head:pull/24535

PR: https://git.openjdk.org/jdk/pull/24535


More information about the security-dev mailing list