Net::HTTPS 漏洞

报告称 net/https 库存在一个漏洞。

详细信息请参考原始公告:<URL:http://www.isecpartners.com/advisories/2007-006-rubyssl.txt>

影响

此漏洞存在于 http.rb 文件中的 connect 方法中,该方法在 SSL 连接协商完成后未能调用 post_connection_check。由于服务器证书的 CN 没有根据请求的 DNS 名称进行验证,攻击者可以在 SSL 连接中冒充目标服务器。从而消除了 SSL 的完整性和机密性优势。

受影响的版本

1.8 系列
  • 1.8.4 及所有早期版本
  • 1.8.5-p113 及所有早期版本
  • 1.8.6-p110 及所有早期版本
开发版本 (1.9 系列)
2006-09-23 之前的所有版本

解决方案

1.8 系列

请升级到 1.8.6-p111 或 1.8.5-p114。

然后您应该使用 Net::HTTP#enable_post_connection_check= 来启用 post_connection_check。

http = Net::HTTP.new(host, 443)
http.use_ssl = true
http.enable_post_connection_check = true
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
store = OpenSSL::X509::Store.new
store.set_default_paths
http.cert_store = store
http.start {
  response = http.get("/")
}

请注意,您的软件包管理软件可能已经提供了修复此漏洞的软件包。

开发版本 (1.9 系列)
请将您的 Ruby 更新到 2006-09-23 之后的版本。在 Ruby 1.9 上,Net::HTTP#enable_post_connection_check 的默认值为 true。

变更

  • 2007-10-04 16:30 +09:00 在“解决方案”中添加了 enable_post_connection_check 的描述。