Daniel Schröter
2002-Jul-04 19:16 UTC
With bounds checking patch for gcc-3.1 problems if using AES
Hello developers, some informations before I come to the problem: At work we're using Open-SSH 3.4p1 under Solaris 8. I compiled the Open-SSH by myself with gcc-3.1. In the gcc is the bounds checking patch included (http://web.inter.nl.net/hcc/Haj.Ten.Brugge/bounds-checking-gcc-3.1-1.01.patch.bz2). With this patch I compiled: - prngd 0.9.25 - zlib 1.1.4 - Open-SSL 0.9.6d Everything works fine.... :-) ....if I doesn't use AES :-( Here a list: aes128-cbc --> Connection closed by 127.0.0.1 3des-cbc --> Okay blowfish-cbc --> Okay cast128-cbc --> Okay arcfour --> Okay aes192-cbc --> Connection closed by 127.0.0.1 aes256-cbc --> Connection closed by 127.0.0.1 If I doesn't use a gcc with the bounds checking patch the problem doesn't occur. If I set: $ export GCC_BOUNDS_OPTS="-no-message -no-statistics -never-fatal" and switch off Bounds Checking it works also with AES. The problem is on both sites (client and server). I give you some debuging output. I switched off on the client site the bounds checking and use 3des-cbc for encrytion: [client-site] $ export GCC_BOUNDS_OPTS="-no-message -no-statistics -never-fatal" [client-site] $ ssh -vvv -c 3des-cbc localhost OpenSSH_3.4p1, SSH protocols 1.5/2.0, OpenSSL 0x0090604f debug1: Reading configuration data /opt/BBKEssh/etc/ssh_config debug3: Seeding PRNG from /opt/BBKEssh/libexec/ssh-rand-helper debug1: Rhosts Authentication disabled, originating port will not be trusted. debug1: ssh_connect: needpriv 0 debug1: Connecting to localhost [::1] port 22. ssh: connect to address ::1 port 22: Network is unreachable debug1: Connecting to localhost [127.0.0.1] port 22. debug1: Connection established. debug1: identity file /home/test/.ssh/identity type -1 debug1: identity file /home/test/.ssh/id_rsa type -1 debug1: identity file /home/test/.ssh/id_dsa type 2 debug1: Remote protocol version 1.99, remote software version OpenSSH_3.4p1 debug1: match: OpenSSH_3.4p1 pat OpenSSH* Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_3.4p1 debug3: RNG is ready, skipping seeding debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1 debug2: kex_parse_kexinit: ssh-rsa,ssh-dss debug2: kex_parse_kexinit: 3des-cbc debug2: kex_parse_kexinit: 3des-cbc debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160 at openssh.com,hmac-sha1-96,hmac-md5-96 debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160 at openssh.com,hmac-sha1-96,hmac-md5-96 debug2: kex_parse_kexinit: none debug2: kex_parse_kexinit: none debug2: kex_parse_kexinit: debug2: kex_parse_kexinit: debug2: kex_parse_kexinit: first_kex_follows 0 debug2: kex_parse_kexinit: reserved 0 debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1 debug2: kex_parse_kexinit: ssh-rsa,ssh-dss debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc at lysator.liu.se debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc at lysator.liu.se debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160 at openssh.com,hmac-sha1-96,hmac-md5-96 debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160 at openssh.com,hmac-sha1-96,hmac-md5-96 debug2: kex_parse_kexinit: none,zlib debug2: kex_parse_kexinit: none,zlib debug2: kex_parse_kexinit: debug2: kex_parse_kexinit: debug2: kex_parse_kexinit: first_kex_follows 0 debug2: kex_parse_kexinit: reserved 0 debug2: mac_init: found hmac-md5 debug1: kex: server->client 3des-cbc hmac-md5 none debug2: mac_init: found hmac-md5 debug1: kex: client->server 3des-cbc hmac-md5 none debug1: SSH2_MSG_KEX_DH_GEX_REQUEST sent debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP debug1: dh_gen_key: priv key bits set: 190/384 debug1: bits set: 2006/4095 debug1: SSH2_MSG_KEX_DH_GEX_INIT sent debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY debug3: check_host_in_hostfile: filename /home/test/.ssh/known_hosts debug3: check_host_in_hostfile: match line 5 debug1: Host 'localhost' is known and matches the RSA host key. debug1: Found key in /home/test/.ssh/known_hosts:5 debug1: bits set: 2088/4095 debug1: ssh_rsa_verify: signature correct debug1: kex_derive_keys debug1: newkeys: mode 1 debug1: SSH2_MSG_NEWKEYS sent debug1: waiting for SSH2_MSG_NEWKEYS debug1: newkeys: mode 0 debug1: SSH2_MSG_NEWKEYS received debug1: done: ssh_kex2. debug1: send SSH2_MSG_SERVICE_REQUEST debug1: service_accept: ssh-userauth debug1: got SSH2_MSG_SERVICE_ACCEPT debug1: authentications that can continue: publickey,password,keyboard-interactive debug3: start over, passed a different list publickey,password,keyboard-interactive debug3: preferred publickey,keyboard-interactive,password debug3: authmethod_lookup publickey debug3: remaining preferred: keyboard-interactive,password debug3: authmethod_is_enabled publickey debug1: next auth method to try is publickey debug1: try privkey: /home/test/.ssh/identity debug3: no such identity: /home/test/.ssh/identity debug1: try privkey: /home/test/.ssh/id_rsa debug3: no such identity: /home/test/.ssh/id_rsa debug1: try pubkey: /home/test/.ssh/id_dsa debug3: send_pubkey_test debug2: we sent a publickey packet, wait for reply debug1: input_userauth_pk_ok: pkalg ssh-dss blen 433 lastkey 1bad20 hint 2 debug2: input_userauth_pk_ok: fp 20:18:ad:14:34:f4:db:be:04:f3:b0:dd:19:80:26:1b debug3: sign_and_send_pubkey debug3: no such identity: /home/test/.ssh/id_dsa debug2: we did not send a packet, disable method debug3: authmethod_lookup keyboard-interactive debug3: remaining preferred: password debug3: authmethod_is_enabled keyboard-interactive debug1: next auth method to try is keyboard-interactive debug2: userauth_kbdint debug2: we sent a keyboard-interactive packet, wait for reply debug1: authentications that can continue: publickey,password,keyboard-interactive debug3: userauth_kbdint: disable: no info_req_seen debug2: we did not send a packet, disable method debug3: authmethod_lookup password debug3: remaining preferred: debug3: authmethod_is_enabled password debug1: next auth method to try is password ^C [server-site] # export GCC_BOUNDS_OPTS="-no-message -no-statistics" [server-site]# /opt/BBKEssh/sbin/sshd -f /opt/BBKEssh/etc/sshd_config -ddd debug3: Seeding PRNG from /opt/BBKEssh/libexec/ssh-rand-helper debug1: sshd version OpenSSH_3.4p1 debug1: private host key: #0 type 0 RSA1 debug3: Not a RSA1 key file /opt/BBKEssh/etc/ssh_host_rsa_key. debug1: read PEM private key done: type RSA debug1: private host key: #1 type 1 RSA debug3: Not a RSA1 key file /opt/BBKEssh/etc/ssh_host_dsa_key. debug1: read PEM private key done: type DSA debug1: private host key: #2 type 2 DSA debug1: Bind to port 22 on ::. Server listening on :: port 22. debug1: Bind to port 22 on 0.0.0.0. Server listening on 0.0.0.0 port 22. Generating 768 bit RSA key. RSA key generation complete. debug1: Server will not fork when running in debugging mode. Connection from 127.0.0.1 port 33098 debug1: Client protocol version 2.0; client software version OpenSSH_3.4p1 debug1: match: OpenSSH_3.4p1 pat OpenSSH* Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-1.99-OpenSSH_3.4p1 debug3: privsep user:group 101:100 debug1: list_hostkey_types: ssh-rsa,ssh-dss debug1: SSH2_MSG_KEXINIT sent debug2: Network child is on pid 3586 debug3: preauth child monitor started debug3: mm_request_receive entering debug1: SSH2_MSG_KEXINIT received debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1 debug2: kex_parse_kexinit: ssh-rsa,ssh-dss debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc at lysator.liu.se debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc at lysator.liu.se debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160 at openssh.com,hmac-sha1-96,hmac-md5-96 debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160 at openssh.com,hmac-sha1-96,hmac-md5-96 debug2: kex_parse_kexinit: none,zlib debug2: kex_parse_kexinit: none,zlib debug2: kex_parse_kexinit: debug2: kex_parse_kexinit: debug2: kex_parse_kexinit: first_kex_follows 0 debug2: kex_parse_kexinit: reserved 0 debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1 debug2: kex_parse_kexinit: ssh-rsa,ssh-dss debug2: kex_parse_kexinit: 3des-cbc debug2: kex_parse_kexinit: 3des-cbc debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160 at openssh.com,hmac-sha1-96,hmac-md5-96 debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160 at openssh.com,hmac-sha1-96,hmac-md5-96 debug2: kex_parse_kexinit: none debug2: kex_parse_kexinit: none debug2: kex_parse_kexinit: debug2: kex_parse_kexinit: debug2: kex_parse_kexinit: first_kex_follows 0 debug2: kex_parse_kexinit: reserved 0 debug2: mac_init: found hmac-md5 debug1: kex: client->server 3des-cbc hmac-md5 none debug2: mac_init: found hmac-md5 debug1: kex: server->client 3des-cbc hmac-md5 none debug1: SSH2_MSG_KEX_DH_GEX_REQUEST received debug3: mm_request_send entering: type 0 debug3: mm_choose_dh: waiting for MONITOR_ANS_MODULI debug3: mm_request_receive_expect entering: type 1 debug3: mm_request_receive entering debug3: monitor_read: checking request 0 debug3: mm_answer_moduli: got parameters: 1024 4096 8192 debug3: mm_request_send entering: type 1 debug3: mm_choose_dh: remaining 0 debug1: SSH2_MSG_KEX_DH_GEX_GROUP sent debug2: monitor_read: 0 used once, disabling now debug3: mm_request_receive entering debug1: dh_gen_key: priv key bits set: 201/384 debug1: bits set: 2088/4095 debug1: expecting SSH2_MSG_KEX_DH_GEX_INIT debug1: bits set: 2006/4095 debug3: mm_key_sign entering debug3: mm_request_send entering: type 4 debug3: monitor_read: checking request 4 debug3: mm_answer_sign debug3: mm_answer_sign: signature 1ea800(143) debug3: mm_request_send entering: type 5 debug2: monitor_read: 4 used once, disabling now debug3: mm_request_receive entering debug3: mm_key_sign: waiting for MONITOR_ANS_SIGN debug3: mm_request_receive_expect entering: type 5 debug3: mm_request_receive entering debug1: SSH2_MSG_KEX_DH_GEX_REPLY sent debug1: kex_derive_keys debug1: newkeys: mode 1 debug1: SSH2_MSG_NEWKEYS sent debug1: waiting for SSH2_MSG_NEWKEYS debug1: newkeys: mode 0 debug1: SSH2_MSG_NEWKEYS received debug1: KEX done debug1: userauth-request for user test service ssh-connection method none debug1: attempt 0 failures 0 debug3: mm_getpwnamallow entering debug3: mm_request_send entering: type 6 debug3: monitor_read: checking request 6 debug3: mm_answer_pwnamallow debug3: allowed_user: today 11871 sp_expire -1 sp_lstchg 11864 sp_max -1 debug3: mm_answer_pwnamallow: sending MONITOR_ANS_PWNAM: 1 debug3: mm_request_send entering: type 7 debug2: monitor_read: 6 used once, disabling now debug3: mm_request_receive entering debug3: mm_getpwnamallow: waiting for MONITOR_ANS_PWNAM debug3: mm_request_receive_expect entering: type 7 debug3: mm_request_receive entering debug2: input_userauth_request: setting up authctxt for test debug3: mm_inform_authserv entering debug3: mm_request_send entering: type 3 debug3: monitor_read: checking request 3 debug3: mm_answer_authserv: service=ssh-connection, styledebug2: monitor_read: 3 used once, disabling now debug3: mm_request_receive entering debug2: input_userauth_request: try method none debug3: mm_auth_password entering debug3: mm_request_send entering: type 10 debug3: monitor_read: checking request 10 debug3: mm_answer_authpassword: sending result 0 debug3: mm_request_send entering: type 11 Failed none for test from 127.0.0.1 port 33098 ssh2 debug3: mm_request_receive entering debug3: mm_auth_password: waiting for MONITOR_ANS_AUTHPASSWORD debug3: mm_request_receive_expect entering: type 11 debug3: mm_request_receive entering debug3: mm_auth_password: user not authenticated Failed none for test from 127.0.0.1 port 33098 ssh2 debug1: userauth-request for user test service ssh-connection method publickey debug1: attempt 1 failures 1 debug2: input_userauth_request: try method publickey debug1: test whether pkalg/pkblob are acceptable debug3: mm_key_allowed entering debug3: mm_request_send entering: type 20 debug3: monitor_read: checking request 20 debug3: mm_answer_keyallowed entering debug3: mm_answer_keyallowed: key_from_blob: 1da260 debug1: temporarily_use_uid: 100/1 (e=0) debug1: trying public key file /home/test/.ssh/authorized_keys debug3: secure_filename: checking '/home/test/.ssh' debug3: secure_filename: checking '/home/test' debug3: secure_filename: terminating check at '/home/test' debug1: matching key found: file /home/test/.ssh/authorized_keys, line 1 Found matching DSA key: 20:18:ad:14:34:f4:db:be:04:f3:b0:dd:19:80:26:1b debug1: restore_uid debug3: mm_answer_keyallowed: key 1da260 is allowed debug3: mm_request_send entering: type 21 debug3: mm_request_receive entering debug3: mm_key_allowed: waiting for MONITOR_ANS_KEYALLOWED debug3: mm_request_receive_expect entering: type 21 debug3: mm_request_receive entering debug2: userauth_pubkey: authenticated 0 pkalg ssh-dss Postponed publickey for test from 127.0.0.1 port 33098 ssh2 debug1: userauth-request for user test service ssh-connection method keyboard-interactive debug1: attempt 2 failures 1 debug2: input_userauth_request: try method keyboard-interactive debug1: keyboard-interactive devs debug1: auth2_challenge: user=test devsdebug1: kbdint_alloc: devices '' debug2: auth2_challenge_start: devices Failed keyboard-interactive for test from 127.0.0.1 port 33098 ssh2 --------------------- Now with aes-128: [client-site] $ export GCC_BOUNDS_OPTS="-no-message -no-statistics -never-fatal" [client-site] $ ssh -vvv -c aes128-cbc localhost OpenSSH_3.4p1, SSH protocols 1.5/2.0, OpenSSL 0x0090604f debug1: Reading configuration data /opt/BBKEssh/etc/ssh_config debug3: Seeding PRNG from /opt/BBKEssh/libexec/ssh-rand-helper debug1: Rhosts Authentication disabled, originating port will not be trusted. debug1: ssh_connect: needpriv 0 debug1: Connecting to localhost [::1] port 22. ssh: connect to address ::1 port 22: Network is unreachable debug1: Connecting to localhost [127.0.0.1] port 22. debug1: Connection established. debug1: identity file /home/test/.ssh/identity type -1 debug1: identity file /home/test/.ssh/id_rsa type -1 debug1: identity file /home/test/.ssh/id_dsa type 2 debug1: Remote protocol version 1.99, remote software version OpenSSH_3.4p1 debug1: match: OpenSSH_3.4p1 pat OpenSSH* Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_3.4p1 debug3: RNG is ready, skipping seeding debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1 debug2: kex_parse_kexinit: ssh-rsa,ssh-dss debug2: kex_parse_kexinit: aes128-cbc debug2: kex_parse_kexinit: aes128-cbc debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160 at openssh.com,hmac-sha1-96,hmac-md5-96 debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160 at openssh.com,hmac-sha1-96,hmac-md5-96 debug2: kex_parse_kexinit: none debug2: kex_parse_kexinit: none debug2: kex_parse_kexinit: debug2: kex_parse_kexinit: debug2: kex_parse_kexinit: first_kex_follows 0 debug2: kex_parse_kexinit: reserved 0 debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1 debug2: kex_parse_kexinit: ssh-rsa,ssh-dss debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc at lysator.liu.se debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc at lysator.liu.se debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160 at openssh.com,hmac-sha1-96,hmac-md5-96 debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160 at openssh.com,hmac-sha1-96,hmac-md5-96 debug2: kex_parse_kexinit: none,zlib debug2: kex_parse_kexinit: none,zlib debug2: kex_parse_kexinit: debug2: kex_parse_kexinit: debug2: kex_parse_kexinit: first_kex_follows 0 debug2: kex_parse_kexinit: reserved 0 debug2: mac_init: found hmac-md5 debug1: kex: server->client aes128-cbc hmac-md5 none debug2: mac_init: found hmac-md5 debug1: kex: client->server aes128-cbc hmac-md5 none debug1: SSH2_MSG_KEX_DH_GEX_REQUEST sent debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP debug1: dh_gen_key: priv key bits set: 135/256 debug1: bits set: 1582/3191 debug1: SSH2_MSG_KEX_DH_GEX_INIT sent debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY Connection closed by 127.0.0.1 debug1: Calling cleanup 0x6a5a8(0x0) [server-site] # export GCC_BOUNDS_OPTS="-no-message -no-statistics" [server-site]# /opt/BBKEssh/sbin/sshd -f /opt/BBKEssh/etc/sshd_config -ddd debug3: Seeding PRNG from /opt/BBKEssh/libexec/ssh-rand-helper debug1: sshd version OpenSSH_3.4p1 debug1: private host key: #0 type 0 RSA1 debug3: Not a RSA1 key file /opt/BBKEssh/etc/ssh_host_rsa_key. debug1: read PEM private key done: type RSA debug1: private host key: #1 type 1 RSA debug3: Not a RSA1 key file /opt/BBKEssh/etc/ssh_host_dsa_key. debug1: read PEM private key done: type DSA debug1: private host key: #2 type 2 DSA debug1: Bind to port 22 on ::. Server listening on :: port 22. debug1: Bind to port 22 on 0.0.0.0. Server listening on 0.0.0.0 port 22. Generating 768 bit RSA key. RSA key generation complete. debug1: Server will not fork when running in debugging mode. Connection from 127.0.0.1 port 33100 debug1: Client protocol version 2.0; client software version OpenSSH_3.4p1 debug1: match: OpenSSH_3.4p1 pat OpenSSH* Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-1.99-OpenSSH_3.4p1 debug3: privsep user:group 101:100 debug1: list_hostkey_types: ssh-rsa,ssh-dss debug1: SSH2_MSG_KEXINIT sent debug2: Network child is on pid 3623 debug3: preauth child monitor started debug3: mm_request_receive entering debug1: SSH2_MSG_KEXINIT received debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1 debug2: kex_parse_kexinit: ssh-rsa,ssh-dss debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc at lysator.liu.se debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc at lysator.liu.se debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160 at openssh.com,hmac-sha1-96,hmac-md5-96 debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160 at openssh.com,hmac-sha1-96,hmac-md5-96 debug2: kex_parse_kexinit: none,zlib debug2: kex_parse_kexinit: none,zlib debug2: kex_parse_kexinit: debug2: kex_parse_kexinit: debug2: kex_parse_kexinit: first_kex_follows 0 debug2: kex_parse_kexinit: reserved 0 debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1 debug2: kex_parse_kexinit: ssh-rsa,ssh-dss debug2: kex_parse_kexinit: aes128-cbc debug2: kex_parse_kexinit: aes128-cbc debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160 at openssh.com,hmac-sha1-96,hmac-md5-96 debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160 at openssh.com,hmac-sha1-96,hmac-md5-96 debug2: kex_parse_kexinit: none debug2: kex_parse_kexinit: none debug2: kex_parse_kexinit: debug2: kex_parse_kexinit: debug2: kex_parse_kexinit: first_kex_follows 0 debug2: kex_parse_kexinit: reserved 0 debug2: mac_init: found hmac-md5 debug1: kex: client->server aes128-cbc hmac-md5 none debug2: mac_init: found hmac-md5 debug1: kex: server->client aes128-cbc hmac-md5 none debug1: SSH2_MSG_KEX_DH_GEX_REQUEST received debug3: mm_request_send entering: type 0 debug3: mm_choose_dh: waiting for MONITOR_ANS_MODULI debug3: mm_request_receive_expect entering: type 1 debug3: mm_request_receive entering debug3: monitor_read: checking request 0 debug3: mm_answer_moduli: got parameters: 1024 2048 8192 debug3: mm_request_send entering: type 1 debug3: mm_choose_dh: remaining 0 debug1: SSH2_MSG_KEX_DH_GEX_GROUP sent debug2: monitor_read: 0 used once, disabling now debug3: mm_request_receive entering debug1: dh_gen_key: priv key bits set: 135/256 debug1: bits set: 1564/3191 debug1: expecting SSH2_MSG_KEX_DH_GEX_INIT debug1: bits set: 1582/3191 debug3: mm_key_sign entering debug3: mm_request_send entering: type 4 debug3: monitor_read: checking request 4 debug3: mm_answer_sign debug3: mm_answer_sign: signature 1ea800(143) debug3: mm_request_send entering: type 5 debug2: monitor_read: 4 used once, disabling now debug3: mm_request_receive entering debug3: mm_key_sign: waiting for MONITOR_ANS_SIGN debug3: mm_request_receive_expect entering: type 5 debug3: mm_request_receive entering debug1: SSH2_MSG_KEX_DH_GEX_REPLY sent debug1: kex_derive_keys debug1: newkeys: mode 1 <unknown>:0:Bounds error: in memcpy with 0x1a5a38 and 0x1a5a30 for 16, source and destination objects overlap. <unknown>:0: Pointer value: 0x1a5a38 <unknown>:0: Object `send_context': <unknown>:0: Address in memory: 0x1a5a20 .. 0x1a6a9f <unknown>:0: Size: 4224 bytes <unknown>:0: Element size: 1 bytes <unknown>:0: Number of elements: 4224 <unknown>:0: Created at: packet.c, line 87 <unknown>:0: Storage class: static debug1: Calling cleanup 0x82b04(0x0) ------------------- If I use aes to connect to an "normal" Open-SSH server I get the same error (only on client site). One more output with bounds checking and connection to a Mandrake 8.2 System with Open-SSH 3.1p1: [client-site] $ export GCC_BOUNDS_OPTS="-no-message -no-statistics" [client-site] $ ssh -vvv -c aes128-cbc 172.23.66.44 OpenSSH_3.4p1, SSH protocols 1.5/2.0, OpenSSL 0x0090604f debug1: Reading configuration data /opt/BBKEssh/etc/ssh_config debug3: Seeding PRNG from /opt/BBKEssh/libexec/ssh-rand-helper debug1: Rhosts Authentication disabled, originating port will not be trusted. debug1: ssh_connect: needpriv 0 debug1: Connecting to 172.23.66.44 [172.23.66.44] port 22. debug1: Connection established. debug1: identity file /home/test/.ssh/identity type -1 debug1: identity file /home/test/.ssh/id_rsa type -1 debug1: identity file /home/test/.ssh/id_dsa type 2 debug1: Remote protocol version 1.99, remote software version OpenSSH_3.1p1 debug1: match: OpenSSH_3.1p1 pat OpenSSH_2.*,OpenSSH_3.0*,OpenSSH_3.1* Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_3.4p1 debug3: RNG is ready, skipping seeding debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1 debug2: kex_parse_kexinit: ssh-rsa,ssh-dss debug2: kex_parse_kexinit: aes128-cbc debug2: kex_parse_kexinit: aes128-cbc debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160 at openssh.com,hmac-sha1-96,hmac-md5-96 debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160 at openssh.com,hmac-sha1-96,hmac-md5-96 debug2: kex_parse_kexinit: none debug2: kex_parse_kexinit: none debug2: kex_parse_kexinit: debug2: kex_parse_kexinit: debug2: kex_parse_kexinit: first_kex_follows 0 debug2: kex_parse_kexinit: reserved 0 debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1 debug2: kex_parse_kexinit: ssh-rsa,ssh-dss debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160 at openssh.com,hmac-sha1-96,hmac-md5-96 debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160 at openssh.com,hmac-sha1-96,hmac-md5-96 debug2: kex_parse_kexinit: none,zlib debug2: kex_parse_kexinit: none,zlib debug2: kex_parse_kexinit: debug2: kex_parse_kexinit: debug2: kex_parse_kexinit: first_kex_follows 0 debug2: kex_parse_kexinit: reserved 0 debug2: mac_init: found hmac-md5 debug1: kex: server->client aes128-cbc hmac-md5 none debug2: mac_init: found hmac-md5 debug1: kex: client->server aes128-cbc hmac-md5 none debug1: SSH2_MSG_KEX_DH_GEX_REQUEST sent debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP debug1: dh_gen_key: priv key bits set: 132/256 debug1: bits set: 1589/3191 debug1: SSH2_MSG_KEX_DH_GEX_INIT sent debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY debug3: check_host_in_hostfile: filename /home/test/.ssh/known_hosts debug3: check_host_in_hostfile: match line 4 debug1: Host '172.23.66.44' is known and matches the RSA host key. debug1: Found key in /home/test/.ssh/known_hosts:4 debug1: bits set: 1597/3191 debug1: ssh_rsa_verify: signature correct debug1: kex_derive_keys debug1: newkeys: mode 1 <unknown>:0:Bounds error: in memcpy with 0x18b978 and 0x18b970 for 16, source and destination objects overlap. <unknown>:0: Pointer value: 0x18b978 <unknown>:0: Object `send_context': <unknown>:0: Address in memory: 0x18b960 .. 0x18c9df <unknown>:0: Size: 4224 bytes <unknown>:0: Element size: 1 bytes <unknown>:0: Number of elements: 4224 <unknown>:0: Created at: packet.c, line 87 <unknown>:0: Storage class: static Okay the problem is in the line 87 in the packet.c file. But it is still "Created at". So I tried to debug it. I installed GDB/DDD and read documentations..... I recompiled openssh with debuging information and without optimization (the problem still exists): $ export CC=/buba/gcc/bin/gcc CFLAGS="-g -fbounds-checking -I/buba/zlib/include" SYSLIBS="-lsocket -lnsl" LDFLAGS="-fbounds-checking" $ ./configure --prefix=/opt/BBKEssh --with-zlib=/buba/zlib/lib --without-rsh --disable-suid-ssh --with-prngd-socket=/var/spool/prngd/pool --without-pam --with-ssl-dir=/opt/BBKEssh I debuged it to line monitor.c:480. If I say "next" to line: mm_request_send(socket, MONITOR_ANS_SIGN, m); The function doesn't end :-( If I use "continue" on an earlier breakpoint I get the same bounds checking error. Can somebody help me? Is there a bug in the bounds checking patch or in Open-SSH? I'm no C- and GDB-expert. I'm very happy to come to this point. Just mail if you need additional information or I should try out something. Thanks in advance! Bye Daniel ps: I'm not subscribed. Please CC me.
Gert Doering
2002-Jul-09 17:31 UTC
With bounds checking patch for gcc-3.1 problems if using AES
Hi, On Tue, Jul 09, 2002 at 07:07:48PM +0000, Daniel Schr?ter wrote:> The line 105 in file openssl-0.9.6d/crypto/evp/evp_enc.c is (maybe) the > problem.: > > memcpy(ctx->iv, ctx->oiv, EVP_CIPHER_CTX_iv_length(ctx)); > > So I take an update to > ftp://ftp.openssl.org/snapshot/openssl-SNAP-20020707.tar.gz > and it works fine. Also the Beta2 from openssl-0.9.7 works fine.Thanks for pointing that out. It might explain the problems I have with ssh -2 on FreeBSD 2.2.x - everything core dumps as soon as it hits a DSA or RSA2 key. Possibly the memcpy in 2.2 works "the other way round" as compared to 3.x and 4.x, and thus it bombs there. I will try that approach as soon as 0.9.7 is officially released... gert -- USENET is *not* the non-clickable part of WWW! //www.muc.de/~gert/ Gert Doering - Munich, Germany gert at greenie.muc.de fax: +49-89-35655025 gert.doering at physik.tu-muenchen.de
Carson Gaspar
2002-Jul-09 17:54 UTC
With bounds checking patch for gcc-3.1 problems if using AES
--On Tuesday, July 09, 2002 7:31 PM +0200 Gert Doering <gert at greenie.muc.de> wrote:> Thanks for pointing that out. It might explain the problems I have > with ssh -2 on FreeBSD 2.2.x - everything core dumps as soon as it > hits a DSA or RSA2 key. Possibly the memcpy in 2.2 works "the other way > round" as compared to 3.x and 4.x, and thus it bombs there.Try doing a s/memcpy/memmove/ on the appropriate source line. memove() is guaranteed to do overlapping copies correctly. memcpy() is not. bcopy() usually works - the BSD ones do, but at least some sysv versions do not. UNIX98 bcopy() does handle overlapping ranges. -- Carson
Daniel Schröter
2002-Jul-09 19:07 UTC
With bounds checking patch for gcc-3.1 problems if using AES
Hello developers, Daniel Schr?ter wrote: > debug1: SSH2_MSG_KEX_DH_GEX_REPLY sent > debug1: kex_derive_keys > debug1: newkeys: mode 1 > <unknown>:0:Bounds error: in memcpy with 0x1a5a38 and 0x1a5a30 for 16, > source and destination objects overlap. > <unknown>:0: Pointer value: 0x1a5a38 > <unknown>:0: Object `send_context': > <unknown>:0: Address in memory: 0x1a5a20 .. 0x1a6a9f > <unknown>:0: Size: 4224 bytes > <unknown>:0: Element size: 1 bytes > <unknown>:0: Number of elements: 4224 > <unknown>:0: Created at: packet.c, line 87 > <unknown>:0: Storage class: static > debug1: Calling cleanup 0x82b04(0x0) like I said, I'm not the coding-expert, but I have some additional informations and a solution. I compiled OpenSSL with the CFLAG "-g" and now I get the file and linenumber where the problem occured: debug1: SSH2_MSG_KEX_DH_GEX_REPLY sent debug1: kex_derive_keys debug1: newkeys: mode 1 evp_enc.c:105:Bounds error: in memcpy with 0x2bfc40 and 0x2bfc38 for 16, source and destination objects overlap. evp_enc.c:105: Pointer value: 0x2bfc40 evp_enc.c:105: Object `send_context': evp_enc.c:105: Address in memory: 0x2bfc28 .. 0x2c0ca7 evp_enc.c:105: Size: 4224 bytes evp_enc.c:105: Element size: 1 bytes evp_enc.c:105: Number of elements: 4224 evp_enc.c:105: Created at: packet.c, line 87 evp_enc.c:105: Storage class: static debug1: Calling cleanup 0x91178(0x0) The line 105 in file openssl-0.9.6d/crypto/evp/evp_enc.c is (maybe) the problem.: memcpy(ctx->iv, ctx->oiv, EVP_CIPHER_CTX_iv_length(ctx)); So I take an update to ftp://ftp.openssl.org/snapshot/openssl-SNAP-20020707.tar.gz and it works fine. Also the Beta2 from openssl-0.9.7 works fine. Sorry for the wrong mailingliste I have taken and that the bug is already fixed. Bye -- ======================================================== PGP keyID: 9EA3FF2C $ gpg --keyserver wwwkeys.de.pgp.net --recv-key 9EA3FF2C =========================================================
Markus Friedl
2002-Jul-12 10:43 UTC
With bounds checking patch for gcc-3.1 problems if using AES
did anyone check this? On Wed, Jul 10, 2002 at 05:35:35PM +0200, Markus Friedl wrote:> can you try something like this: > > folly% cvs diff -u cipher.c > Index: cipher.c > ==================================================================> RCS file: /cvs/src/usr.bin/ssh/cipher.c,v > retrieving revision 1.60 > diff -u -r1.60 cipher.c > --- cipher.c 23 Jun 2002 03:26:52 -0000 1.60 > +++ cipher.c 10 Jul 2002 15:36:29 -0000 > @@ -525,7 +525,7 @@ > rijndal_cbc.cleanup = ssh_rijndael_cleanup; > rijndal_cbc.do_cipher = ssh_rijndael_cbc; > rijndal_cbc.flags = EVP_CIPH_CBC_MODE | EVP_CIPH_VARIABLE_LENGTH | > - EVP_CIPH_ALWAYS_CALL_INIT; > + EVP_CIPH_ALWAYS_CALL_INIT | EVP_CIPH_CUSTOM_IV; > return (&rijndal_cbc); > } > #endif > [1] > > _______________________________________________ > openssh-unix-dev at mindrot.org mailing list > http://www.mindrot.org/mailman/listinfo/openssh-unix-dev
Possibly Parallel Threads
- ssh output
- [Bug 376] New: HostbasedAuthentication, followed snailbook but not working! :-(
- [Bug 382] New: Privilege Separation breaks HostbasedAuthentication
- [Bug 383] New: PublicKeyAuthentication failure when rlogin set to false
- pam_mkhomedir and priv separation