net/httpsライブラリにおける「中間者によるなりすまし攻撃」に対する脆弱性について
Posted by Shugo Maeda on 4 Oct 2007
Rubyに標準で添付されているnet/httpsライブラリ(net/https.rb)において、このライブラリを使用してhttpsプロトコルを発行した場合、中間者によるなりすまし攻撃(man-in-the-middle attack)を検出できないという問題が発見されました。
この脆弱性については、<URL:http://www.isecpartners.com/advisories/2007-006-rubyssl.txt>として公開されています。
影響
net/http.rbでは、SSL接続の際に、証明書のCNがリクエスト先のDNS名に対して検証されません。これにより、攻撃者がリクエスト先のサーバになりすますことが可能になります。
脆弱性の存在するバージョン
- 1.8系
- 1.8.4以前の全てのバージョン、1.8.5-p113以前のバージョン、1.8.6-p110以前のバージョン
- 開発版(1.9系)
- 2007-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=を使用する必要があります。
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("/") }また、Rubyのパッケージを配布している各ベンダから、それぞれ、この脆弱性を修正した版のパッケージが提供されている場合もあります。詳細については各ベンダにお問い合わせください。
- 開発版(1.9系)
- 2007-09-23以降のバージョンに更新してください。 Ruby 1.9では、Net::HTTP#enable_post_connection_checkはデフォルトでtrueになっています。
変更履歴
- 2007-10-04 16:30 +09:00 「影響」の「DNS応答を詐称」という表現が不適切でしたので修正しました。
- 2007-10-04 16:30 +09:00 「各バージョンでの対応方法」にenable_post_connection_checkに関する説明を追記しました。
最近のニュース
Ruby 4.0.0 リリース
Ruby 4.0.0 が公開されました。 Ruby 4.0 には “Ruby Box”、”ZJIT” ほか多数の改善が含まれています。
Posted by naruse on 25 Dec 2025
サイトのアイデンティティの再設計
サイトの包括的なデザインのアップデートを発表できることを嬉しく思います。今回の更新ではTaeko Akatsukaさんにデザインを担当していただきました。
Posted by Hiroshi SHIBATA on 22 Dec 2025
Ruby 4.0.0 preview3 リリース
Ruby 4.0.0-preview3 が公開されました。
Posted by naruse on 18 Dec 2025
Ruby 4.0.0 preview2 リリース
Ruby 4.0.0-preview2 が公開されました。Ruby 4.0では、Unicodeバージョンの17.0.0へのアップデートなど様々な改善が行われています。
Posted by naruse on 17 Nov 2025