2011年5月2日月曜日

urllib/urllib2 のセキュリティ脆弱性の修正

原文はこちら: urllib Security Vulnerability Fixed

Guido van Rossum は、Python の URL ライブラリのセキュリティ脆弱性である CVE-2011-1521 の 修正を最近行いました 。セキュリティ関連の問題は稀にしか起こりませんが、問題が発覚したときは、その問題の報告、対応、修正といった背後にあるプロセスをコミュニティで行ってもらう良い機会です。

問題を報告する


もし CPython 内部にあるセキュリティの問題を発見した場合、私たちが最初にお願いすることは、その問題の詳細を秘密にしておいてもらうことです。発見した問題は確かにセキュリティの脆弱性だと判断されてから、簡潔且つ詳細なレポートを作成することで、あなたの情報をコア開発者へ伝えることが重要になります。

優れたレポートは、システムの関連部分がその問題によってどのように影響を受けるかを分かりやすく説明してくれます。その問題がプラットフォーム依存、またはある依存関係のために発生するなら、その情報も同様に役に立ちます。影響のあるバージョンも分かると有益で、その脆弱性は全てのリリースバージョンで同じテストが行われます。最後に、その問題を表すテストケースを持っているなら、バグレポートに含めるようにしてください。作成されたレポートは security@python.org グループへ送られます。

Google セキュリティチームの Niels Heinen は、最近 優れたレポートを投稿しました 。彼は、標準ライブラリの urlliburllib2 モジュールの HTTP 302 リダイレクト処理に問題があると発見しました。彼が発見したのは、サーバにあるデータやシステム情報を漏洩させる可能性がある不適切なスキームでリクエストをリダイレクトできるというものでした。Neils の初期のレポートによると、こういったリダイレクト処理の問題を明らかにする2つのシナリオを説明しています。

1つ目は urllib/urllib2file:// URL スキームのためにハンドラを提供するので、 file:///etc/passwd に対するリダイレクトはパスワードファイルを漏洩させてしまいます。さらに Neils は、 file:///dev/zero のようなシステムデバイスへのリダイレクトも、サービス拒否攻撃を引き起こすリソース消費につながることを説明しました。

レポートに対応する


セキュリティレポートの機密性のために security@python.org のメーリングリストは、レポートを分析して対応できる信頼のある開発者のみの小さなグループで構成されています。このメーリングリストへのメールを暗号化したいなら、 セキュリティニュース ページの OpenPGP の詳細について参照してください。

このメーリングリストのグループが実際にセキュリティ上の脆弱性があると判断したら、修正パッチが添付された公開バグレポートが作成されることになります。今回は Guido van Rossum が、その問題があることを 課題 #11662 で公表し、初期のパッチで対応しました。

問題を修正する


Guido の修正パッチは http://, https://, ftp:// の URL スキームへのリダイレクトを制限しません。FTP のリダイレクトは、許容範囲内と考えられ、実際にダウンロードミラーシステムで、地理的に近い FTP サーバーへのリクエストをリダイレクトするときなど、一般的に利用されています。

Python 2.x では、 FancyURLopenerredirect_internal メソッドが不適切なスキームでリダイレクト処理をリクエストしようとしたときに IOError を発生させます。 HTTPRedirectHandlerhttp_error_302 も同じように動作して HTTPError を発生させます。Python 3 の urllib.request は同じ修正が行われました。その修正パッチには、有効なスキームと無効なスキーム両方のリダイレクト処理を行う2つのテストが含まれています。

この修正を受け取るユーザに関して、Python 2.5 の最後のセキュリティリリースが間もなく行われます。メンテナンスブランチ 2.6, 2.7, 3.1, 3.2 の次のパッチリリースは予定されていませんが、全てのブランチにこの脆弱性に対する修正が行われています。

0 件のコメント:

コメントを投稿