You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Note the {unassigned, unassigned} signature algorithms.
Expected behavior
That the {unassigned,unassigned} are omitted from the signature algorithms, per the comment in ssl_handshake:decode_extensions:
%% Ignore unknown signature algorithms
Which does drop a unassigned but not{unassigned,unassigned}, with can also be returned by ssl_cipher:signature_scheme/1
Affected versions
At least 27.1, 26,2, and 24.3.
The crash is not happening on maint/master for the given algorithms.
Though with some editing of the payload the problematic construct can easily be triggered:
@mworrell Yes the second clause will never happen, I will clean it up on the OTP-27 track as we have some refactoring activities planed anyway. Thanks for noticing.
Describe the bug
Crash in TLS1.3 handshake caused by trying to encode an
unassigned
signature algorithm during client_hello handshakeTo Reproduce
Given this HelloBin binary in
tls_handshake_1_3:truncate_client_hello/1
:Which is decoded with:
And with Version
{3,4}
(TLS 1.3):If we then call:
Then the following is returned:
Note the
{unassigned, unassigned}
signature algorithms.Expected behavior
That the
{unassigned,unassigned}
are omitted from the signature algorithms, per the comment inssl_handshake:decode_extensions
:Which does drop a
unassigned
but not{unassigned,unassigned}
, with can also be returned byssl_cipher:signature_scheme/1
Affected versions
At least 27.1, 26,2, and 24.3.
The crash is not happening on maint/master for the given algorithms.
Though with some editing of the payload the problematic construct can easily be triggered:
https://github.com/erlang/otp/blob/master/lib/ssl/src/ssl_handshake.erl#L2929
https://github.com/erlang/otp/blob/master/lib/ssl/src/ssl_handshake.erl#L2949
And the spot where
{unassigned, unassigned}
can be returned:https://github.com/erlang/otp/blob/master/lib/ssl/src/ssl_cipher.erl#L639
The text was updated successfully, but these errors were encountered: