如果你错过了它 - TLS Heartbeat Extension实施中的OpenSSL漏洞已经发生了变化。有关详细信息,请参阅http://heartbleed.com/。
可能的缓解步骤之一是使用-DOPENSSL_NO_HEARTBEATS
选项重新编译OpenSSL以禁用易受攻击的扩展。
为什么系统管理员必须重新编译库以禁用扩展?为什么没有配置选项?本来可以更容易地进行短期补救。
我最好的猜测,这是一个高性能的库,作为一个库本质上没有像服务那样的配置文件。通过Apache mod_ssl和Nginx HttpSslModule文档进行搜索,我没有看到任何可以通过配置禁用Heartbeat功能的内容。这不是一个选择吗?
- 编辑 -
为了澄清,受影响的每个人都需要撤销和替换受影响的SSL证书。这里的主要问题是该漏洞允许任何人从易受攻击的服务器中提取64 KB的应用程序内存。这可以通过配置选项轻松解决。必须撤销和替换SSL证书是此漏洞的第二个后果,其中包括哪些类型的数据(用户名,密码,会话信息......)可能已从应用程序内存泄漏。
-EDIT2 -
澄清 - 通过配置,我不是指编译OpenSSL时的配置。我的意思是在Web服务器中进行配置。例如,使用apache mod_ssl,我可以配置一系列影响SSL的选项,例如Cipher Suites available。
答案 0 :(得分:2)
我不知道程序员做出这个决定时的心态,但是是 - 一个库不会被用于一个明确定义的场景或两个,它会被使用但是有人编码了main()称之为
如果你真的想要禁用一个选项,那么编译它似乎是我最好和最安全的选择。
答案 1 :(得分:1)
编译标志与配置选项 - TLS心跳
这很简单......详细介绍了Configuration Options at Compilation and Installation下的OpenSSL wiki:在配置时,只需添加-DOPENSSL_NO_HEARTBEATS
。
所以你似乎找到了配置选项。配置选项被写入<openssl install>/include/openssl/opensslconf.h
,因此它也会流向编译时。
只留下运行时间(见下文)。
为什么系统管理员必须重新编译库才能禁用扩展名?
你不应该这样做。您的发行版应该为您提供。但他们可能会在他们的构建中提供它。
有时您可能需要从“个人档案”中找到它,例如PPA on Ubuntu。
(Ubuntu有时会做一些愚蠢的事情,例如禁用TLS 1.1 and 1.2 in OpenSSL和禁用TLS 1.1 and 1.2 in OpenJDK。2015年,它们仍未启用。
为什么没有配置选项?
有,并且已经发表。你好像找到了它。
还有一个运行时选项:
openssl-1.0.2a$ grep -R -A 1 -i heartbeat *
...
include/openssl/tls1.h:# define SSL_set_tlsext_heartbeat_no_requests(ssl, arg) \
include/openssl/tls1.h: SSL_ctrl((ssl),SSL_CTRL_SET_TLS_EXT_HEARTBEAT_NO_REQUESTS,arg,NULL)
...
和
include/openssl/ssl.h:# define SSL_heartbeat(ssl) \
include/openssl/ssl.h: SSL_ctrl((ssl),SSL_CTRL_TLS_EXT_SEND_HEARTBEAT,0,NULL)
本来可以更容易地进行短期补救。
我的屁股是TLS_FALLBACK_SCSV
。您无法在配置时,编译时或运行时禁用它。它更加不安全的浏览器垃圾泄漏到其他用户代理和软件......
答案 2 :(得分:0)
如果你开始编译openssl,我建议编译一个更安全的&#34; openssl的版本,满足您的需求。不仅禁用心跳(-DOPENSSL_NO_HEARTBEATS),还禁用openssl中所有不必要的选项。