Есть ли более простой способ выяснить параметры, указанные во время сборки openssl, например, был ли определен OPENSSL_NO_SRTP в то время? Я могу получить лишь ограниченную информацию из:
версия openssl -a
команда. Однако, если у меня есть только двоичные файлы, есть ли способ выяснить такие параметры, как эти? Причина этого вопроса заключается в том, что существует уязвимость «CVE-2014-3513», которая появляется, если openssl не скомпилирован с этой опцией.

5
Khanna111 16 Окт 2014 в 23:02

3 ответа

Лучший ответ

Если OpenSLL был скомпилирован с OPENSSL_NO_SRTP , тогда ssleay32.dll не содержит функций, связанных с поддержкой SRTP: SSL_CTX_set_tlsext_use_srtp, SSL_get_selected_srtp_profile, SSL_set_tlsext_use_srtp, SSL_get_srtp_profiles. К счастью, все они содержат «srtp» в своих именах, поэтому вы можете проверить, содержит ли DLL эти функции, используя dumpbin . Например:

dumpbin.exe /EXPORTS ssleay32.dll | findstr /R /C:"srtp"

В моем случае он находит эти функции, поэтому мой OpenSSL был скомпилирован без OPENSSL_NO_SRTP :

dumpbin.exe /EXPORTS ssleay32.dll | findstr /R /C:"srtp" 358 57 00026CD0 SSL_CTX_set_tlsext_use_srtp 357 AA 00026D00 SSL_get_selected_srtp_profile 360 B4 00026D10 SSL_get_srtp_profiles 354 E8 00026D40 SSL_set_tlsext_use_srtp

Надеюсь, это поможет решить вашу проблему.

P.S. К сожалению, насколько мне известно, OpenSSL не записывает параметры времени компиляции.

0
sirgeorge 16 Окт 2014 в 22:05

Вы можете получить большую часть (всю?) Информацию о конфигурации установленного openssl через version команда. В частности,

openssl version -f

Перечислит все флаги компилятора, которые были указаны во время сборки.

11
Old Pro 4 Дек 2017 в 18:43

Спасибо @sirgeorge за ответ. Я забыл указать Linux в качестве платформы, поэтому эквивалентная проверка в Linux:

 $ objdump -f libssl.so -x | grep -i SRTP
    0000000000000000 l    df *ABS*  0000000000000000              d1_srtp.c
    00000000002609e0 l     O .data  0000000000000030              srtp_known_profiles
    000000000003d100 g     F .text  0000000000000012              SSL_set_tlsext_use_srtp
    000000000003cb40 g     F .text  0000000000000149              ssl_parse_serverhello_use_srtp_ext
    000000000003d120 g     F .text  0000000000000012              SSL_CTX_set_tlsext_use_srtp
    000000000003ca90 g     F .text  00000000000000ab              ssl_add_serverhello_use_srtp_ext
    000000000003ca50 g     F .text  0000000000000029              SSL_get_srtp_profiles
    000000000003ca80 g     F .text  0000000000000008              SSL_get_selected_srtp_profile
    000000000003cc90 g     F .text  0000000000000128              ssl_add_clienthello_use_srtp_ext
    000000000003cdc0 g     F .text  0000000000000210              ssl_parse_clienthello_use_srtp_ext
0
Khanna111 17 Окт 2014 в 18:17