Re: SSH tunnel key exchange methods

From: Dave Page <dpage(at)pgadmin(dot)org>
To: Akshay Joshi <akshay(dot)joshi(at)enterprisedb(dot)com>
Cc: Sven <svoop_6cedifwf9e(at)delirium(dot)ch>, pgAdmin Support <pgadmin-support(at)postgresql(dot)org>, pgadmin-hackers <pgadmin-hackers(at)postgresql(dot)org>
Subject: Re: SSH tunnel key exchange methods
Date: 2015-12-02 09:50:41
Message-ID: CA+OCxozDWJFWRNQ-d8FY7AeVUoodbnYOzBPpjvAuBkyswJW0Vg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgadmin-hackers pgadmin-support

Hi

On Wed, Dec 2, 2015 at 9:19 AM, Akshay Joshi <akshay(dot)joshi(at)enterprisedb(dot)com>
wrote:

> Hi Dave
>
> I have updated the *libssh2* library with the latest available code on
> their git repository. The new code used "diffie-hellman-group-exchange-sha256" algorithm for
> key exchange and they also fixed some memory leak. I have verified it by
> putting the breakpoint in the libssh2 code, so when we called "
> libssh2_session_init()" it will automatically call "static int diffie_
> hellman_sha256(...)" function, but I don't know exactly how to identify
> the key exchange method (sha1 or sha256) used by the latest libssh2 library.
>
> I have tested the pgadmin3 after updating the libssh2 library on CentOS
> 6.5 (64 bit) and it works fine. I have also modified the code to add
> human readable error message returned by the library. Attached is the
> patch file. Can you please review it and if it looks good can you please
> commit the code.
>

I'm seeing the following build error on OS X 10.7:

depbase=`echo libssh2/agent.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
ccache gcc -Qunused-arguments -DHAVE_CONFIG_H -I. -I..
-I../pgadmin/include/libssh2 -I../pgadmin/include
-I../pgadmin/include/libssh2 -I/usr/local/pgsql-9.5/include
-I/usr/local/pgsql-9.5/include/server -I/usr/local/pgsql-9.5/include
-DPG_SSL -DHAVE_CONNINFO_PARSE
-I/usr/local/lib/wx/include/mac-unicode-release-static-2.8
-I/usr/local/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES
-D__WXMAC__ -DEMBED_XRC -arch i386 -I/usr/include/libxml2
-I/opt/local/include/libxml2 -DHAVE_OPENSSL_CRYPTO -O2 -MT libssh2/agent.o
-MD -MP -MF $depbase.Tpo -c -o libssh2/agent.o libssh2/agent.c &&\
mv -f $depbase.Tpo $depbase.Po
In file included from ../pgadmin/include/libssh2/libssh2_priv.h:136,
from libssh2/agent.c:41:
../pgadmin/include/libssh2/crypto.h:53: error: expected ‘)’ before ‘*’ token
../pgadmin/include/libssh2/crypto.h:69: error: expected ‘)’ before ‘*’ token
../pgadmin/include/libssh2/crypto.h:73: error: expected ‘)’ before ‘*’ token
../pgadmin/include/libssh2/crypto.h:78: error: expected declaration
specifiers or ‘...’ before ‘libssh2_rsa_ctx’
../pgadmin/include/libssh2/crypto.h:83: error: expected ‘)’ before ‘*’ token
../pgadmin/include/libssh2/crypto.h:115: error: expected ‘)’ before ‘*’
token
../pgadmin/include/libssh2/crypto.h:120: error: expected ‘)’ before ‘*’
token
In file included from libssh2/agent.c:41:
../pgadmin/include/libssh2/libssh2_priv.h:240: error:
‘SHA256_DIGEST_LENGTH’ undeclared here (not in a function)
../pgadmin/include/libssh2/libssh2_priv.h:245: error: expected
specifier-qualifier-list before ‘_libssh2_bn_ctx’
../pgadmin/include/libssh2/libssh2_priv.h:267: error: expected
specifier-qualifier-list before ‘_libssh2_bn’
../pgadmin/include/libssh2/libssh2_priv.h:604: error: ‘SHA_DIGEST_LENGTH’
undeclared here (not in a function)
../pgadmin/include/libssh2/libssh2_priv.h:899: error: expected
specifier-qualifier-list before ‘_libssh2_cipher_type’
libssh2/agent.c: In function ‘agent_connect_unix’:
libssh2/agent.c:150: warning: assignment makes pointer from integer without
a cast
make[3]: *** [libssh2/agent.o] Error 1
make[2]: *** [all] Error 2
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

>
> Sven, how you have identified the key exchange algorithm used by libssh2,
> is there any way to identify using fingerprint or key??
>
> On Mon, Nov 30, 2015 at 6:38 PM, Dave Page <dpage(at)pgadmin(dot)org> wrote:
>
>> Ok, thanks Akshay.
>>
>> --
>> Dave Page
>> Blog: http://pgsnake.blogspot.com
>> Twitter: @pgsnake
>>
>> EnterpriseDB UK:http://www.enterprisedb.com
>> The Enterprise PostgreSQL Company
>>
>> On 30 Nov 2015, at 12:57, Akshay Joshi <akshay(dot)joshi(at)enterprisedb(dot)com>
>> wrote:
>>
>> Hi Dave
>>
>> On Mon, Nov 30, 2015 at 10:41 AM, Akshay Joshi <akshay(dot)joshi(at)enterprisedb
>> .com> wrote:
>>
>>> Hi Dave
>>>
>>> On Fri, Nov 27, 2015 at 3:01 PM, Dave Page <dpage(at)pgadmin(dot)org> wrote:
>>>
>>>> On Fri, Nov 27, 2015 at 9:23 AM, Sven <svoop_6cedifwf9e(at)delirium(dot)ch>
>>>> wrote:
>>>> >> The key exchange methods offered when opening an SSH tunnel are all
>>>> >> SHA1 and therefore too weak:
>>>> >>
>>>> >> [sshd] fatal: Unable to negotiate with xxx.xxx.xxx.xxx: no matching
>>>> >> key exchange method found. Their offer:
>>>> >> diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,
>>>> >> diffie-hellman-group1-sha1 [preauth]
>>>> >
>>>> > Any news on this? If there's no easy way to add safer kexes, I suggest
>>>> > you disable the SSH feature altogether. SHA1 is dead and IMO nobody
>>>> > should trust a connection established with SHA1 kexes in order to talk
>>>> > to databases.
>>>>
>>>> Akshay, you know that code best of all. How do we enable safer kexes?
>>>>
>>>
>>> Today I'll look into it on priority and update accordingly.
>>>
>>
>> I have found that "diffie-hellman-group-exchange-sha256" support
>> has been added to the libssh2 code on September 24, it's not released yet.
>> Please check https://github.com/libssh2/libssh2/pull/48 . Today I have
>> tried to update the libssh2, but facing some compilation issues which needs
>> to be fixed. I am working on it and then check do we need to change our
>> logic or libssh2 will automatically used "diffie-hellman
>> -group-exchange-sha256".
>>
>>
>>>
>>>> --
>>>> Dave Page
>>>> Blog: http://pgsnake.blogspot.com
>>>> Twitter: @pgsnake
>>>>
>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>> The Enterprise PostgreSQL Company
>>>>
>>>
>>>
>>>
>>> --
>>> *Akshay Joshi*
>>> *Principal Software Engineer *
>>>
>>>
>>>
>>> *Phone: +91 20-3058-9517 <%2B91%2020-3058-9517>Mobile: +91 976-788-8246*
>>>
>>
>>
>>
>> --
>> *Akshay Joshi*
>> *Principal Software Engineer *
>>
>>
>>
>> *Phone: +91 20-3058-9517 <%2B91%2020-3058-9517>Mobile: +91 976-788-8246*
>>
>>
>
>
> --
> *Akshay Joshi*
> *Principal Software Engineer *
>
>
>
> *Phone: +91 20-3058-9517 <%2B91%2020-3058-9517>Mobile: +91 976-788-8246*
>

--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

In response to

Responses

Browse pgadmin-hackers by date

  From Date Subject
Next Message Akshay Joshi 2015-12-02 09:57:55 Re: SSH tunnel key exchange methods
Previous Message Akshay Joshi 2015-12-02 09:19:10 Re: [pgadmin-support] SSH tunnel key exchange methods

Browse pgadmin-support by date

  From Date Subject
Next Message Akshay Joshi 2015-12-02 09:57:55 Re: SSH tunnel key exchange methods
Previous Message Akshay Joshi 2015-12-02 09:19:10 Re: [pgadmin-support] SSH tunnel key exchange methods