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にアップグレードしてください。

チェックを有効にするためには、以下のように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 preview2 リリース

Ruby 4.0.0-preview2 が公開されました。Ruby 4.0では、Unicodeバージョンの17.0.0へのアップデートなど様々な改善が行われています。

Posted by naruse on 17 Nov 2025

もっと読む...