Есть ли более простой способ выяснить параметры, указанные во время сборки openssl, например, был ли определен OPENSSL_NO_SRTP в то время? Я могу получить лишь ограниченную информацию из:
версия openssl -a
команда. Однако, если у меня есть только двоичные файлы, есть ли способ выяснить такие параметры, как эти? Причина этого вопроса заключается в том, что существует уязвимость «CVE-2014-3513», которая появляется, если openssl не скомпилирован с этой опцией.
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 не записывает параметры времени компиляции.
Вы можете получить большую часть (всю?) Информацию о конфигурации установленного openssl
через version
команда. В частности,
openssl version -f
Перечислит все флаги компилятора, которые были указаны во время сборки.
Спасибо @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
Похожие вопросы
Новые вопросы
openssl
OpenSSL - это программный инструментарий с открытым исходным кодом, который реализует протокол SSL / TLS, а также общую криптографическую библиотеку.