Uh oh!
There was an error while loading. Please reload this page.
Enforce RFC 8446 ticket lifetime limit for TLS 1.3 client - #31174
Conversation
Generated a new error code in |
mattcaswell
commented
May 14, 2026
No. Just insert the new error code into your C file, and then run "make update". |
5fe4f5a to
889cdc3Compare
@mattcaswell Ok I saw there is a |
mattcaswell
commented
May 14, 2026
Like I said. Just add the new reason code to your C file and run "make update". The "make update" will call mkerr.pl and do everything that is required to correctly add the error code. |
889cdc3 to
42318fcCompareabtom87
commented
May 14, 2026
@mattcaswell Should the NEWS/CHANGES.md be updated as well? Or is that done later? |
mattcaswell
commented
May 15, 2026
Probably this doesn't warrant a NEWS entry. But feel free to update CHANGES.md as part of this PR. |
1d69d49 to
bb30147Comparemattcaswell
commented
May 18, 2026
Ping @openssl/committers for second review |
bb30147 to
b9c815cCompareabtom87
commented
Jun 16, 2026
mattcaswell
left a comment
There was a problem hiding this comment.
Still looking for a second committer review
npajkovsky
left a comment
There was a problem hiding this comment.
I have my reservation for entry in CHANGES.md.
esyr
left a comment
There was a problem hiding this comment.
I don't think that dropping connections on session tickets with bogus lifetimes helps anything security-wise, honestly.
| *Timo Keller* | ||
| * Add client-side validation to reject session ticket lifetime hints exceeding | ||
| 604800 seconds (7 days) in TLS 1.3 connections, as required by RFC 8446 |
There was a problem hiding this comment.
Nit: you can use a link syntax for RFC 8446 by enclosing it in square brackets: [RFC 8446]. The URL itself should be added as part of [1].
[1] #31509
| 604800 seconds (7 days) in TLS 1.3 connections, as required by RFC 8446 | ||
| Section 4.6.1 ("Clients MUST NOT cache tickets for longer than 7 days."). | ||
| When a client has to process a new session ticket `tls_process_new_session_ticket` with a `ticket_lifetime_hint` |
| if (SSL_CONNECTION_IS_TLS13(s)) { | ||
| PACKET extpkt; | ||
| /* Fulfilling RFC8446:4.6.1 requirement: Clients MUST NOT cache |
There was a problem hiding this comment.
First line of a multi-line comment should be empty (it's not Linux's net/, after all).
| * tickets for longer than 7 days. | ||
| */ | ||
| if (ticket_lifetime_hint > 604800) { | ||
| SSLfatal(s, SSL_AD_ILLEGAL_PARAMETER, SSL_R_INVALID_TICKET_LIFETIME); |
There was a problem hiding this comment.
I am not convinced that a bogus ticket lifetime should be treated as a fatal protocol violation; at best, either the ticket with bogus life time can be discarded/ignored, or the lifetime can simply be capped at 7 days, as the RFC suggests ("Clients MUST NOT cache tickets for longer than 7 days, regardless of the ticket_lifetime, and MAY delete tickets earlier based on local policy"). Also, "A server MAY treat a ticket as valid for a shorter period of time than what is stated in the ticket_lifetime" gives servers some room for sending bogus lifetimes.
There was a problem hiding this comment.
I agree this is not going to be helpful or useful. Ticket lifetime should simply be capped.
esyr
commented
Jun 17, 2026
Proposing to backport it, as it improves protocol compliance and is not expected to have any significant negative impact. |
openssl-machine
commented
Jun 18, 2026
This pull request is ready to merge |
Add client-side validation to check if session ticket lifetime hints exceeds 7 days in TLS1.3 connections and caps it to the maximum value of 7 days(604800 seconds). Modified `CHANGES.md` with the description of updated change. Resolves: #30808 Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.foundation> MergeDate: Thu Jun 18 12:25:33 2026 (Merged from #31174)
Add client-side validation to check if session ticket lifetime hints exceeds 7 days in TLS1.3 connections and caps it to the maximum value of 7 days(604800 seconds). Modified `CHANGES.md` with the description of updated change. Resolves: #30808 Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.foundation> MergeDate: Thu Jun 18 12:25:33 2026 (Merged from #31174) (cherry picked from commit 5a85e41)
Add client-side validation to check if session ticket lifetime hints exceeds 7 days in TLS1.3 connections and caps it to the maximum value of 7 days(604800 seconds). Modified `CHANGES.md` with the description of updated change. Resolves: #30808 Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.foundation> MergeDate: Thu Jun 18 12:25:33 2026 (Merged from #31174) (cherry picked from commit 5a85e41)
Add client-side validation to check if session ticket lifetime hints exceeds 7 days in TLS1.3 connections and caps it to the maximum value of 7 days(604800 seconds). Modified `CHANGES.md` with the description of updated change. Resolves: #30808 Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.foundation> MergeDate: Thu Jun 18 12:25:33 2026 (Merged from #31174) (cherry picked from commit 5a85e41)
t8m
commented
Jun 18, 2026
Merged to all the active branches. Thank you. |
Add client-side validation to check if session ticket lifetime hints exceeds 7 days in TLS1.3 connections and caps it to the maximum value of 7 days(604800 seconds). Modified `CHANGES.md` with the description of updated change. Resolves: #30808 Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.foundation> MergeDate: Thu Jun 18 12:25:33 2026 (Merged from #31174) (cherry picked from commit 5a85e41)
Add client-side validation to check if session ticket lifetime hints exceeds 7 days in TLS1.3 connections and caps it to the maximum value of 7 days(604800 seconds). Modified `CHANGES.md` with the description of updated change. Resolves: #30808 Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.foundation> MergeDate: Thu Jun 18 12:25:33 2026 (Merged from #31174) (cherry picked from commit 5a85e41)
Add client-side validation to check if session ticket lifetime hints exceeds 7 days in TLS1.3 connections and caps it to the maximum value of 7 days(604800 seconds). Modified `CHANGES.md` with the description of updated change. Resolves: openssl#30808 Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.foundation> MergeDate: Thu Jun 18 12:25:33 2026 (Merged from openssl#31174)
Add client-side validation to check if session ticket lifetime hints exceeds 7 days in TLS1.3 connections and caps it to the maximum value of 7 days(604800 seconds). Modified `CHANGES.md` with the description of updated change. Resolves: openssl#30808 Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.foundation> MergeDate: Thu Jun 18 12:25:33 2026 (Merged from openssl#31174) (cherry picked from commit 5a85e41)
Add client-side validation to check if session ticket lifetime hints exceeds 7 days in TLS1.3 connections and caps it to the maximum value of 7 days(604800 seconds). Modified `CHANGES.md` with the description of updated change. Resolves: openssl#30808 Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.foundation> MergeDate: Thu Jun 18 12:25:33 2026 (Merged from openssl#31174)
4.0.2 CHANGES.md includes the following: * CVE-2026-14456, CVE-2026-14457, CVE-2026-18798, CVE-2026-54874, CVE-2026-54876, CVE-2026-63072, CVE-2026-63073, CVE-2026-63074, CVE-2026-63075, CVE-2026-63076, CVE-2026-75803 * #31174 "Enforce RFC 8446 ticket lifetime limit for TLS 1.3 client" (already present) * #31572 "[4.0, 3.6, 3.5, 3.4] Add icx compiler version support in perl asm scripts" * #31749 "Add documentation for OPENSSL_armcap" * #31764 "x509: fix OCSP BasicResponse leak during verification" (included as CVE-2026-54876) * #32052 "QUIC server: limit the number of pending connections" (included as CVE-2026-14456) * #32300 "[4.0] Reject explicitly supplied invalid tags and generate tags for empty AEAD messages" (included as CVE-2026-75803) * #32427 "Backport #32256 openssl 4.0 to 3.0" 4.0.2 NEWS.md includes the following: * CVE-2026-14456, CVE-2026-14457, CVE-2026-18798, CVE-2026-54874, CVE-2026-54876, CVE-2026-63072, CVE-2026-63073, CVE-2026-63074, CVE-2026-63075, CVE-2026-63076, CVE-2026-75803 * #31764 "x509: fix OCSP BasicResponse leak during verification" (included as CVE-2026-54876) * #32052 "QUIC server: limit the number of pending connections" (included as CVE-2026-14456) * #32300 "[4.0] Reject explicitly supplied invalid tags and generate tags for empty AEAD messages" (included as CVE-2026-75803) * #32427 "Backport #32256 openssl 4.0 to 3.0" Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org> 14456 Reviewed-by: Milan Broz <mbroz@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.foundation> Reviewed-by: Bob Beck <beck@openssl.org> Merge-date: Tue Aug 25 11:33:50 2026
3.6.4 CHANGES.md includes the following: * CVE-2026-14456, CVE-2026-14457, CVE-2026-18798, CVE-2026-54874, CVE-2026-54876, CVE-2026-63072, CVE-2026-63073, CVE-2026-63074, CVE-2026-63075, CVE-2026-63076, CVE-2026-75803 * #31174 "Enforce RFC 8446 ticket lifetime limit for TLS 1.3 client" (already present) * #31572 "[4.0, 3.6, 3.5, 3.4] Add icx compiler version support in perl asm scripts" * #31749 "Add documentation for OPENSSL_armcap" * #31764 "x509: fix OCSP BasicResponse leak during verification" (included as CVE-2026-54876) * #32052 "QUIC server: limit the number of pending connections" (included as CVE-2026-14456) * #32259 "[3.6] Reject explicitly supplied invalid tags and generate tags for empty AEAD messages" (included as CVE-2026-75803) * #32427 "Backport #32256 openssl 4.0 to 3.0" 3.6.4 NEWS.md includes the following: * CVE-2026-14456, CVE-2026-14457, CVE-2026-18798, CVE-2026-54874, CVE-2026-54876, CVE-2026-63072, CVE-2026-63073, CVE-2026-63074, CVE-2026-63075, CVE-2026-63076, CVE-2026-75803 * #31764 "x509: fix OCSP BasicResponse leak during verification" (included as CVE-2026-54876) * #32052 "QUIC server: limit the number of pending connections" (included as CVE-2026-14456) * #32259 "[3.6] Reject explicitly supplied invalid tags and generate tags for empty AEAD messages" (included as CVE-2026-75803) * #32427 "Backport #32256 openssl 4.0 to 3.0" Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org> Reviewed-by: Milan Broz <mbroz@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.foundation> Reviewed-by: Bob Beck <beck@openssl.org> Merge-date: Tue Aug 25 11:35:50 2026
3.5.8 CHANGES.md includes the following: * CVE-2026-14456, CVE-2026-14457, CVE-2026-18798, CVE-2026-54874, CVE-2026-63072, CVE-2026-63073, CVE-2026-63074, CVE-2026-63075, CVE-2026-63076, CVE-2026-75803 * #31174 "Enforce RFC 8446 ticket lifetime limit for TLS 1.3 client" (already present) * #31572 "[4.0, 3.6, 3.5, 3.4] Add icx compiler version support in perl asm scripts" * #31749 "Add documentation for OPENSSL_armcap" * #32052 "QUIC server: limit the number of pending connections" (included as CVE-2026-14456) * #32416 "[3.5,3.4] Reject explicitly supplied invalid tags and generate tags for empty AEAD messages" (included as CVE-2026-75803) * #32427 "Backport #32256 openssl 4.0 to 3.0" 3.5.8 NEWS.md includes the following: * CVE-2026-14456, CVE-2026-14457, CVE-2026-18798, CVE-2026-54874, CVE-2026-63072, CVE-2026-63073, CVE-2026-63074, CVE-2026-63075, CVE-2026-63076, CVE-2026-75803 * #32052 "QUIC server: limit the number of pending connections" (included as CVE-2026-14456) * #32416 "[3.5,3.4] Reject explicitly supplied invalid tags and generate tags for empty AEAD messages" (included as CVE-2026-75803) * #32427 "Backport #32256 openssl 4.0 to 3.0" Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org> Reviewed-by: Milan Broz <mbroz@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.foundation> Reviewed-by: Bob Beck <beck@openssl.org> Merge-date: Tue Aug 25 11:36:56 2026
3.4.7 CHANGES.md includes the following: * CVE-2026-14457, CVE-2026-54874, CVE-2026-63072, CVE-2026-63073, CVE-2026-63074, CVE-2026-63075, CVE-2026-63076, CVE-2026-75803 * #31174 "Enforce RFC 8446 ticket lifetime limit for TLS 1.3 client" (already present) * #31572 "[4.0, 3.6, 3.5, 3.4] Add icx compiler version support in perl asm scripts" * #32416 "[3.5,3.4] Reject explicitly supplied invalid tags and generate tags for empty AEAD messages" (included as CVE-2026-75803) * #32427 "Backport #32256 openssl 4.0 to 3.0" 3.4.7 NEWS.md includes the following: * CVE-2026-14457, CVE-2026-54874, CVE-2026-63072, CVE-2026-63073, CVE-2026-63074, CVE-2026-63075, CVE-2026-63076, CVE-2026-75803 * #32416 "[3.5,3.4] Reject explicitly supplied invalid tags and generate tags for empty AEAD messages" (included as CVE-2026-75803) * #32427 "Backport #32256 openssl 4.0 to 3.0" Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org> Reviewed-by: Milan Broz <mbroz@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.foundation> Reviewed-by: Bob Beck <beck@openssl.org> Merge-date: Tue Aug 25 11:37:42 2026
3.0.22 CHANGES.md includes the following: * CVE-2026-54874, CVE-2026-63072, CVE-2026-63074, CVE-2026-63076, CVE-2026-75803 * #31174 "Enforce RFC 8446 ticket lifetime limit for TLS 1.3 client" (already present) * #31578 "Backport PR #30313 into 3.0 branch." * #32417 "[3.0] Reject explicitly supplied invalid tags and generate tags for empty AEAD messages" (included as CVE-2026-75803) * #32427 "Backport #32256 openssl 4.0 to 3.0" 3.0.22 NEWS.md includes the following: * CVE-2026-54874, CVE-2026-63072, CVE-2026-63074, CVE-2026-63076, CVE-2026-75803 * #32417 "[3.0] Reject explicitly supplied invalid tags and generate tags for empty AEAD messages" (included as CVE-2026-75803) * #32427 "Backport #32256 openssl 4.0 to 3.0" Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org> Reviewed-by: Milan Broz <mbroz@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.foundation> Reviewed-by: Bob Beck <beck@openssl.org> Merge-date: Tue Aug 25 11:38:33 2026
4.0.2 CHANGES.md includes the following: * CVE-2026-14456, CVE-2026-14457, CVE-2026-18798, CVE-2026-54874, CVE-2026-54876, CVE-2026-63072, CVE-2026-63073, CVE-2026-63074, CVE-2026-63075, CVE-2026-63076, CVE-2026-75803 * openssl#31174 "Enforce RFC 8446 ticket lifetime limit for TLS 1.3 client" (already present) * openssl#31572 "[4.0, 3.6, 3.5, 3.4] Add icx compiler version support in perl asm scripts" * openssl#31749 "Add documentation for OPENSSL_armcap" * openssl#31764 "x509: fix OCSP BasicResponse leak during verification" (included as CVE-2026-54876) * openssl#32052 "QUIC server: limit the number of pending connections" (included as CVE-2026-14456) * openssl#32300 "[4.0] Reject explicitly supplied invalid tags and generate tags for empty AEAD messages" (included as CVE-2026-75803) * openssl#32427 "Backport openssl#32256 openssl 4.0 to 3.0" 4.0.2 NEWS.md includes the following: * CVE-2026-14456, CVE-2026-14457, CVE-2026-18798, CVE-2026-54874, CVE-2026-54876, CVE-2026-63072, CVE-2026-63073, CVE-2026-63074, CVE-2026-63075, CVE-2026-63076, CVE-2026-75803 * openssl#31764 "x509: fix OCSP BasicResponse leak during verification" (included as CVE-2026-54876) * openssl#32052 "QUIC server: limit the number of pending connections" (included as CVE-2026-14456) * openssl#32300 "[4.0] Reject explicitly supplied invalid tags and generate tags for empty AEAD messages" (included as CVE-2026-75803) * openssl#32427 "Backport openssl#32256 openssl 4.0 to 3.0" Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
4.0.2 CHANGES.md includes the following: * CVE-2026-14456, CVE-2026-14457, CVE-2026-18798, CVE-2026-54874, CVE-2026-54876, CVE-2026-63072, CVE-2026-63073, CVE-2026-63074, CVE-2026-63075, CVE-2026-63076, CVE-2026-75803 * openssl#31174 "Enforce RFC 8446 ticket lifetime limit for TLS 1.3 client" (already present) * openssl#31572 "[4.0, 3.6, 3.5, 3.4] Add icx compiler version support in perl asm scripts" * openssl#31749 "Add documentation for OPENSSL_armcap" * openssl#31764 "x509: fix OCSP BasicResponse leak during verification" (included as CVE-2026-54876) * openssl#32052 "QUIC server: limit the number of pending connections" (included as CVE-2026-14456) * openssl#32300 "[4.0] Reject explicitly supplied invalid tags and generate tags for empty AEAD messages" (included as CVE-2026-75803) * openssl#32427 "Backport openssl#32256 openssl 4.0 to 3.0" 4.0.2 NEWS.md includes the following: * CVE-2026-14456, CVE-2026-14457, CVE-2026-18798, CVE-2026-54874, CVE-2026-54876, CVE-2026-63072, CVE-2026-63073, CVE-2026-63074, CVE-2026-63075, CVE-2026-63076, CVE-2026-75803 * openssl#31764 "x509: fix OCSP BasicResponse leak during verification" (included as CVE-2026-54876) * openssl#32052 "QUIC server: limit the number of pending connections" (included as CVE-2026-14456) * openssl#32300 "[4.0] Reject explicitly supplied invalid tags and generate tags for empty AEAD messages" (included as CVE-2026-75803) * openssl#32427 "Backport openssl#32256 openssl 4.0 to 3.0" Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
4.0.2 CHANGES.md includes the following: * CVE-2026-14456, CVE-2026-14457, CVE-2026-18798, CVE-2026-54874, CVE-2026-54876, CVE-2026-63072, CVE-2026-63073, CVE-2026-63074, CVE-2026-63075, CVE-2026-63076, CVE-2026-75803 * #31174 "Enforce RFC 8446 ticket lifetime limit for TLS 1.3 client" (already present) * #31572 "[4.0, 3.6, 3.5, 3.4] Add icx compiler version support in perl asm scripts" * #31749 "Add documentation for OPENSSL_armcap" * #31764 "x509: fix OCSP BasicResponse leak during verification" (included as CVE-2026-54876) * #32052 "QUIC server: limit the number of pending connections" (included as CVE-2026-14456) * #32300 "[4.0] Reject explicitly supplied invalid tags and generate tags for empty AEAD messages" (included as CVE-2026-75803) * #32427 "Backport #32256 openssl 4.0 to 3.0" 4.0.2 NEWS.md includes the following: * CVE-2026-14456, CVE-2026-14457, CVE-2026-18798, CVE-2026-54874, CVE-2026-54876, CVE-2026-63072, CVE-2026-63073, CVE-2026-63074, CVE-2026-63075, CVE-2026-63076, CVE-2026-75803 * #31764 "x509: fix OCSP BasicResponse leak during verification" (included as CVE-2026-54876) * #32052 "QUIC server: limit the number of pending connections" (included as CVE-2026-14456) * #32300 "[4.0] Reject explicitly supplied invalid tags and generate tags for empty AEAD messages" (included as CVE-2026-75803) * #32427 "Backport #32256 openssl 4.0 to 3.0" Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.foundation> Reviewed-by: Andrew Dinh <andrewd@openssl.org> Merge-date: Fri Aug 28 11:16:09 2026 Merged-from: #32484
3.0.22 CHANGES.md includes the following: * CVE-2026-54874, CVE-2026-63072, CVE-2026-63074, CVE-2026-63076, CVE-2026-75803 * openssl#31174 "Enforce RFC 8446 ticket lifetime limit for TLS 1.3 client" (already present) * openssl#31578 "Backport PR openssl#30313 into 3.0 branch." * openssl#32417 "[3.0] Reject explicitly supplied invalid tags and generate tags for empty AEAD messages" (included as CVE-2026-75803) * openssl#32427 "Backport openssl#32256 openssl 4.0 to 3.0" 3.0.22 NEWS.md includes the following: * CVE-2026-54874, CVE-2026-63072, CVE-2026-63074, CVE-2026-63076, CVE-2026-75803 * openssl#32417 "[3.0] Reject explicitly supplied invalid tags and generate tags for empty AEAD messages" (included as CVE-2026-75803) * openssl#32427 "Backport openssl#32256 openssl 4.0 to 3.0" Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org> Reviewed-by: Milan Broz <mbroz@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.foundation> Reviewed-by: Bob Beck <beck@openssl.org> Merge-date: Tue Aug 25 11:38:33 2026 (cherry picked from commit 2f6e1a9)
3.0.22 CHANGES.md includes the following: * CVE-2026-54874, CVE-2026-63072, CVE-2026-63074, CVE-2026-63076, CVE-2026-75803 * openssl#31174 "Enforce RFC 8446 ticket lifetime limit for TLS 1.3 client" (already present) * openssl#31578 "Backport PR openssl#30313 into 3.0 branch." * openssl#32417 "[3.0] Reject explicitly supplied invalid tags and generate tags for empty AEAD messages" (included as CVE-2026-75803) * openssl#32427 "Backport openssl#32256 openssl 4.0 to 3.0" 3.0.22 NEWS.md includes the following: * CVE-2026-54874, CVE-2026-63072, CVE-2026-63074, CVE-2026-63076, CVE-2026-75803 * openssl#32417 "[3.0] Reject explicitly supplied invalid tags and generate tags for empty AEAD messages" (included as CVE-2026-75803) * openssl#32427 "Backport openssl#32256 openssl 4.0 to 3.0" Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org> Reviewed-by: Milan Broz <mbroz@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.foundation> Reviewed-by: Bob Beck <beck@openssl.org> Merge-date: Tue Aug 25 11:38:33 2026 (cherry picked from commit 2f6e1a9)
Add validation to reject session ticket lifetime hints exceeding 604800 seconds (7 days) in TLS 1.3 connections, as required by RFC 8446 Section 4.6.1.
TLS 1.3 client validates the lifetime value received from the server.
Fixes#30808
Checklist