SEGV in Dropbear v2016.74 when connect with HostKeyAlgorithms=ssh-dss or HostKeyAlgorithms=ssh-dss

Konstantin Lazarev cnlazarev at gmail.com
Wed Jan 18 08:53:57 AWST 2017


Hello,

I see consistent SEGV when running Dropbear v2016.74 in uClinux 2.6.33 on
ARMv7m-cortex-m4 processor
Faults happen only if client specifying HostKeyAlgorithms option.
Please see verbose output from client and dropbear:

[root at 172.17.152.20: ]# dropbear -V
Dropbear v2016.74

---------------------------------------- from client
---------------------------------------------------------------------------
$ssh -v -o HostKeyAlgorithms=ssh-dss root at 172.17.152.20
OpenSSH_7.2p2 Ubuntu-4ubuntu2.1, OpenSSL 1.0.2g  1 Mar 2016
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 172.17.152.20 [172.17.152.20] port 22.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file /home//.ssh/id_rsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home//.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home//.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home//.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home//.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home//.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home//.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home//.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1
debug1: Remote protocol version 2.0, remote software version
dropbear_2016.74
debug1: no match: dropbear_2016.74
debug1: Authenticating to 172.17.152.20:22 as 'root'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256 at libssh.org
debug1: kex: host key algorithm: ssh-dss
debug1: kex: server->client cipher: aes128-ctr MAC: hmac-sha2-256
compression: none
debug1: kex: client->server cipher: aes128-ctr MAC: hmac-sha2-256
compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
Connection closed by 172.17.152.20 port 22

---------------------------------------- from dropbear
---------------------------------------------------------------------------
[root at 172.17.152.20: ]# dropbear -v -F
TRACE  (2934) 0.000000: enter buf_get_rsa_priv_key
TRACE  (2934) 0.000702: enter buf_get_rsa_pub_key
TRACE  (2934) 0.003142: leave buf_get_rsa_pub_key: success
TRACE  (2934) 0.006667: leave buf_get_rsa_priv_key
TRACE  (2934) 0.007364: leave loadhostkey
TRACE  (2934) 0.008475: enter buf_get_dss_pub_key
TRACE  (2934) 0.029568: leave buf_get_dss_pub_key: success
TRACE  (2934) 0.030491: leave loadhostkey
TRACE  (2934) 0.031491: enter buf_get_ecdsa_priv_key
TRACE  (2934) 0.032079: enter buf_get_ecc_raw_pubkey
TRACE  (2934) 0.037565: leave buf_get_ecdsa_pub_key
TRACE  (2934) 0.038492: leave loadhostkey
TRACE  (2934) 0.049830: Disabling key type 2
TRACE  (2934) 0.050450: Disabling key type 3
TRACE  (2934) 0.110221: listensockets: 1 to try
TRACE  (2934) 0.111137: listening on ':22'
TRACE  (2934) 0.111844: enter dropbear_listen
TRACE  (2934) 0.112368: dropbear_listen: all interfaces
TRACE  (2934) 0.113916: bind(22) failed
TRACE  (2934) 0.114629: leave dropbear_listen: success, 1 socks bound
TRACE  (2934) 0.115578: set_listen_fast_open failed for socket 3: Protocol
not available
[2934] Jan 01 00:16:07 Not backgrounding
[2934] Jan 01 00:16:12 Child connection from 172.17.163.3:42180
TRACE  (2934) 5.057261: enter session_init
TRACE  (2934) 5.058028: setnonblocking: 5
TRACE  (2934) 5.058726: leave setnonblocking
TRACE  (2934) 5.059736: setnonblocking: 5
TRACE  (2934) 5.060404: leave setnonblocking
TRACE  (2934) 5.060983: update_channel_prio
TRACE  (2934) 5.061525: update_channel_prio: not any
TRACE  (2934) 5.062037: Dropbear priority transitioning 10 -> 11
TRACE  (2934) 5.062814: setnonblocking: 3
TRACE  (2934) 5.063414: leave setnonblocking
TRACE  (2934) 5.063894: setnonblocking: 6
TRACE  (2934) 5.064461: leave setnonblocking
TRACE  (2934) 5.065835: leave session_init
TRACE  (2934) 5.066793: kexinitialise()
TRACE  (2934) 5.067877: DATAALLOWED=0
TRACE  (2934) 5.068411: -> KEXINIT
TRACE  (2934) 5.069399: enter set_connect_fds
TRACE  (2934) 5.070012: maybe_empty_reply_queue - no data allowed
TRACE  (2934) 5.070558: enter handle_connect_fds
TRACE  (2934) 5.071036: leave handle_connect_fds - end iter
TRACE  (2934) 5.071895: empty queue dequeing
TRACE  (2934) 5.073045: enter set_connect_fds
TRACE  (2934) 5.073657: enter ident_readln
TRACE  (2934) 5.077698: leave ident_readln: return 40
TRACE  (2934) 5.078328: remoteident: SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1
TRACE  (2934) 5.079270: maybe_empty_reply_queue - no data allowed
TRACE  (2934) 5.079801: enter handle_connect_fds
TRACE  (2934) 5.080287: leave handle_connect_fds - end iter
TRACE  (2934) 5.080824: enter set_connect_fds
TRACE  (2934) 5.081611: process_packet: packet type = 20,  len 1048
TRACE  (2934) 5.082330: got expected packet 20 during kexinit
TRACE  (2934) 5.082944: <- KEXINIT
TRACE  (2934) 5.083440: enter recv_msg_kexinit
TRACE  (2934) 5.084130: buf_match_algo: curve25519-sha256 at libssh.org
,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,ext-info-c
TRACE  (2934) 5.084896: kexguess2 1
TRACE  (2934) 5.085457: kex algo curve25519-sha256 at libssh.org
TRACE  (2934) 5.086025: buf_match_algo: ssh-dss
TRACE  (2934) 5.086588: hostkey algo ssh-dss
TRACE  (2934) 5.087174: buf_match_algo: chacha20-poly1305 at openssh.com
,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm at openssh.com,
aes256-gcm at openssh.com,aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc
TRACE  (2934) 5.087844: enc c2s is  aes128-ctr
TRACE  (2934) 5.088424: buf_match_algo: chacha20-poly1305 at openssh.com
,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm at openssh.com,
aes256-gcm at openssh.com,aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc
TRACE  (2934) 5.089247: enc s2c is  aes128-ctr
TRACE  (2934) 5.089838: buf_match_algo: umac-64-etm at openssh.com,
umac-128-etm at openssh.com,hmac-sha2-256-etm at openssh.com,
hmac-sha2-512-etm at openssh.com,hmac-sha1-etm at openssh.com,umac-64 at openssh.com,
umac-128 at openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
TRACE  (2934) 5.090572: hash c2s is  hmac-sha2-256
TRACE  (2934) 5.091158: buf_match_algo: umac-64-etm at openssh.com,
umac-128-etm at openssh.com,hmac-sha2-256-etm at openssh.com,
hmac-sha2-512-etm at openssh.com,hmac-sha1-etm at openssh.com,umac-64 at openssh.com,
umac-128 at openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
TRACE  (2934) 5.091877: hash s2c is  hmac-sha2-256
TRACE  (2934) 5.092456: buf_match_algo: none,zlib at openssh.com,zlib
TRACE  (2934) 5.093025: hash c2s is  none
TRACE  (2934) 5.093598: buf_match_algo: none,zlib at openssh.com,zlib
TRACE  (2934) 5.094179: hash s2c is  none
TRACE  (2934) 5.094836: leave recv_msg_kexinit
TRACE  (2934) 5.095394: maybe_empty_reply_queue - no data allowed
TRACE  (2934) 5.095885: enter handle_connect_fds
TRACE  (2934) 5.096379: leave handle_connect_fds - end iter
TRACE  (2934) 5.096902: enter set_connect_fds
TRACE  (2934) 5.097611: process_packet: packet type = 30,  len 42
TRACE  (2934) 5.098344: got expected packet 30 during kexinit
TRACE  (2934) 5.099060: enter recv_msg_kexdh_init
TRACE  (2934) 5.099589: enter send_msg_kexdh_reply
TRACE  (2934) 5.234566: enter buf_put_dss_sign
TRACE  (2934) 5.336603: leave buf_put_dss_sign
TRACE  (2934) 5.337367: leave send_msg_kexdh_reply
TRACE  (2934) 5.337903: enter send_msg_newkeys
TRACE  (2934) 5.338527: enter gen_new_keys
Aiee, segfault! You should probably report this as a bug to the developer
[root at 172.17.152.20: ]#


---------------------------------------- from client
---------------------------------------------------------------------------
$ ssh -v -o HostKeyAlgorithms=ssh-rsa root at 172.17.152.20
OpenSSH_7.2p2 Ubuntu-4ubuntu2.1, OpenSSL 1.0.2g  1 Mar 2016
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 172.17.152.20 [172.17.152.20] port 22.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file /home//.ssh/id_rsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home//.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home//.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home//.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home//.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home//.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home//.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home//.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1
debug1: Remote protocol version 2.0, remote software version
dropbear_2016.74
debug1: no match: dropbear_2016.74
debug1: Authenticating to 172.17.152.20:22 as 'root'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256 at libssh.org
debug1: kex: host key algorithm: ssh-rsa
debug1: kex: server->client cipher: aes128-ctr MAC: hmac-sha2-256
compression: none
debug1: kex: client->server cipher: aes128-ctr MAC: hmac-sha2-256
compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
Connection closed by 172.17.152.20 port 22

---------------------------------------- from dropbear
---------------------------------------------------------------------------
[root at 172.17.152.20: ]# dropbear -v -F
TRACE  (3066) 0.000000: enter buf_get_rsa_priv_key
TRACE  (3066) 0.000692: enter buf_get_rsa_pub_key
TRACE  (3066) 0.003467: leave buf_get_rsa_pub_key: success
TRACE  (3066) 0.007054: leave buf_get_rsa_priv_key
TRACE  (3066) 0.007749: leave loadhostkey
TRACE  (3066) 0.008958: enter buf_get_dss_pub_key
TRACE  (3066) 0.011581: leave buf_get_dss_pub_key: success
TRACE  (3066) 0.012362: leave loadhostkey
TRACE  (3066) 0.013428: enter buf_get_ecdsa_priv_key
TRACE  (3066) 0.014002: enter buf_get_ecc_raw_pubkey
TRACE  (3066) 0.019249: leave buf_get_ecdsa_pub_key
TRACE  (3066) 0.020103: leave loadhostkey
TRACE  (3066) 0.020569: Disabling key type 2
TRACE  (3066) 0.021071: Disabling key type 3
TRACE  (3066) 0.059965: listensockets: 1 to try
TRACE  (3066) 0.061012: listening on ':22'
TRACE  (3066) 0.061761: enter dropbear_listen
TRACE  (3066) 0.062337: dropbear_listen: all interfaces
TRACE  (3066) 0.064058: bind(22) failed
TRACE  (3066) 0.064837: leave dropbear_listen: success, 1 socks bound
TRACE  (3066) 0.065962: set_listen_fast_open failed for socket 3: Protocol
not available
[3066] Jan 01 00:18:21 Not backgrounding
[3066] Jan 01 00:18:23 Child connection from 172.17.163.3:42554
TRACE  (3066) 2.443367: enter session_init
TRACE  (3066) 2.444121: setnonblocking: 5
TRACE  (3066) 2.444770: leave setnonblocking
TRACE  (3066) 2.445351: setnonblocking: 5
TRACE  (3066) 2.445970: leave setnonblocking
TRACE  (3066) 2.446569: update_channel_prio
TRACE  (3066) 2.447120: update_channel_prio: not any
TRACE  (3066) 2.447636: Dropbear priority transitioning 10 -> 11
TRACE  (3066) 2.448406: setnonblocking: 3
TRACE  (3066) 2.449024: leave setnonblocking
TRACE  (3066) 2.449518: setnonblocking: 6
TRACE  (3066) 2.450104: leave setnonblocking
TRACE  (3066) 2.451526: leave session_init
TRACE  (3066) 2.452468: kexinitialise()
TRACE  (3066) 2.453758: DATAALLOWED=0
TRACE  (3066) 2.454296: -> KEXINIT
TRACE  (3066) 2.454825: enter set_connect_fds
TRACE  (3066) 2.455418: maybe_empty_reply_queue - no data allowed
TRACE  (3066) 2.455931: enter handle_connect_fds
TRACE  (3066) 2.456436: leave handle_connect_fds - end iter
TRACE  (3066) 2.457321: empty queue dequeing
TRACE  (3066) 2.458488: enter set_connect_fds
TRACE  (3066) 2.459096: enter ident_readln
TRACE  (3066) 2.463414: leave ident_readln: return 40
TRACE  (3066) 2.464057: remoteident: SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1
TRACE  (3066) 2.464651: maybe_empty_reply_queue - no data allowed
TRACE  (3066) 2.465149: enter handle_connect_fds
TRACE  (3066) 2.465624: leave handle_connect_fds - end iter
TRACE  (3066) 2.466161: enter set_connect_fds
TRACE  (3066) 2.466961: process_packet: packet type = 20,  len 1048
TRACE  (3066) 2.467688: got expected packet 20 during kexinit
TRACE  (3066) 2.468301: <- KEXINIT
TRACE  (3066) 2.468759: enter recv_msg_kexinit
TRACE  (3066) 2.469425: buf_match_algo: curve25519-sha256 at libssh.org
,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,ext-info-c
TRACE  (3066) 2.470150: kexguess2 1
TRACE  (3066) 2.470744: kex algo curve25519-sha256 at libssh.org
TRACE  (3066) 2.471337: buf_match_algo: ssh-rsa
TRACE  (3066) 2.471917: hostkey algo ssh-rsa
TRACE  (3066) 2.472489: buf_match_algo: chacha20-poly1305 at openssh.com
,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm at openssh.com,
aes256-gcm at openssh.com,aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc
TRACE  (3066) 2.473777: enc c2s is  aes128-ctr
TRACE  (3066) 2.474389: buf_match_algo: chacha20-poly1305 at openssh.com
,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm at openssh.com,
aes256-gcm at openssh.com,aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc
TRACE  (3066) 2.475073: enc s2c is  aes128-ctr
TRACE  (3066) 2.475668: buf_match_algo: umac-64-etm at openssh.com,
umac-128-etm at openssh.com,hmac-sha2-256-etm at openssh.com,
hmac-sha2-512-etm at openssh.com,hmac-sha1-etm at openssh.com,umac-64 at openssh.com,
umac-128 at openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
TRACE  (3066) 2.476384: hash c2s is  hmac-sha2-256
TRACE  (3066) 2.476967: buf_match_algo: umac-64-etm at openssh.com,
umac-128-etm at openssh.com,hmac-sha2-256-etm at openssh.com,
hmac-sha2-512-etm at openssh.com,hmac-sha1-etm at openssh.com,umac-64 at openssh.com,
umac-128 at openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
TRACE  (3066) 2.477690: hash s2c is  hmac-sha2-256
TRACE  (3066) 2.478301: buf_match_algo: none,zlib at openssh.com,zlib
TRACE  (3066) 2.478884: hash c2s is  none
TRACE  (3066) 2.479439: buf_match_algo: none,zlib at openssh.com,zlib
TRACE  (3066) 2.480033: hash s2c is  none
TRACE  (3066) 2.480702: leave recv_msg_kexinit
TRACE  (3066) 2.481229: maybe_empty_reply_queue - no data allowed
TRACE  (3066) 2.481743: enter handle_connect_fds
TRACE  (3066) 2.482215: leave handle_connect_fds - end iter
TRACE  (3066) 2.482777: enter set_connect_fds
TRACE  (3066) 2.483639: process_packet: packet type = 30,  len 42
TRACE  (3066) 2.484336: got expected packet 30 during kexinit
TRACE  (3066) 2.484948: enter recv_msg_kexdh_init
TRACE  (3066) 2.485459: enter send_msg_kexdh_reply
TRACE  (3066) 2.486015: enter buf_put_rsa_pub_key
TRACE  (3066) 2.492135: leave buf_put_rsa_pub_key
TRACE  (3066) 2.596695: enter buf_put_rsa_pub_key
TRACE  (3066) 2.602879: leave buf_put_rsa_pub_key
TRACE  (3066) 2.606368: enter buf_put_rsa_sign
Aiee, segfault! You should probably report this as a bug to the developer


Please advise how to fix the problem in Dropbear.

Please let me know if additional information is needed.

Thank you,
Konstantin Lazarev.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ucc.gu.uwa.edu.au/pipermail/dropbear/attachments/20170117/1d399f2a/attachment-0001.htm 


More information about the Dropbear mailing list