由 Shugo Maeda 发布于 2007 年 10 月 4 日
报告称 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。
- <URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p111.tar.gz>
- <URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-p114.tar.gz>
然后您应该使用 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 的描述。