ASP.NETで新しく発見されたセキュリティの脆弱性についてネットで読んだところです。詳細はこちら。
問題は、ASP.NETがAES暗号化アルゴリズムを実装して、ユーザーセッション中に情報を保存するためにこれらのアプリケーションが生成するCookieの整合性を保護する方法にあります。
これは少し曖昧ですが、ここにはもっと恐ろしい部分があります:
攻撃の最初の段階では数千の要求がかかりますが、成功して攻撃者が秘密鍵を取得すると、それは完全に隠蔽されます。必要な暗号化の知識は非常に基本的です。
全体として、私はこれが本当にそれほど深刻であるかどうかを知るのに十分なセキュリティ/暗号の主題に精通していません。
したがって、すべてのASP.NET開発者が、ASP.NET Webサイトを数秒で所有できるこの手法を恐れる必要があります。でしょうか。
この問題は平均的なASP.NET開発者にどのように影響しますか?影響はありますか?実際には、この脆弱性の影響は何ですか?そして最後に、この脆弱性を防ぐいくつかの回避策はありますか?
ご回答ありがとうございます!
編集:私が得た応答を要約しましょう
したがって、これは基本的に「パディングオラクル」タイプの攻撃です。@Sriは、このタイプの攻撃が何を意味するのかについての素晴らしい説明を提供しました。問題についての衝撃的なビデオはここにあります!
この脆弱性の深刻度について:はい、確かに深刻です。これにより、攻撃者はアプリケーションのマシンキーを知ることができます。したがって、彼はいくつかの非常に望ましくないことを行うことができます。
- アプリのマシンキーを所持している場合、攻撃者は認証Cookieを復号化できます。
- それよりもさらに悪いことに、彼は任意のユーザーの名前で認証Cookieを生成できます。したがって、彼はサイト上の誰としても登場することができます。アプリケーションは、あなた自身またはあなたの名前で認証Cookieを生成したハッカーを区別できません。
- また、これにより、セッションCookieを復号化(および生成)することもできますが、これは前のものほど危険ではありません。
- それほど深刻ではありません:彼はページの暗号化されたViewStateを復号化できます。(ViewStateを使用して信頼できるデータを保存する場合は、とにかくこれを行うべきではありません!)
- かなり予想外:マシンキーの知識を使用すると、攻撃者がダウンロードできるものも正常にダウンロードできないことを、Webアプリケーションから任意のファイルを!(Web.Configなどを含む)
これは、問題を解決せずに Webアプリケーションの一般的なセキュリティの向上に役立つ、私が得た一連の優れた実践例です。
- 保護された構成で機密データを暗号化できます
- HTTPのみのCookieを使用する
- DoS攻撃を防ぐ
さて、この問題に焦点を当てましょう。
- スコット・ガスリーは彼のブログにそれについてのエントリーを公開しました
- 脆弱性に関するScottGuのFAQブログ投稿
- 脆弱性に関するScottGuの更新
- マイクロソフトはそれについてのセキュリティ勧告を持っています
- 脆弱性を理解する
- 脆弱性に関する追加情報
ソリューション
- customErrorsを有効にして、すべてのエラーがリダイレクトされる単一のエラーページを作成します。はい、404ですら。(ScottGuは、この攻撃には404と500を区別することが不可欠であると述べています。)また、ランダムな遅延を発生させるコードをに入れ
Application_Error
たり、Error.aspx
入れたりします。(乱数を生成し、Thread.Sleepを使用してその間スリープします。)これにより、攻撃者はサーバーで何が起こったかを正確に判断できなくなります。 - 3DESに戻すことを推奨する人もいます。理論的には、AESを使用しない場合、AES実装のセキュリティの弱点に遭遇することはありません。結局のところ、これはまったくお勧めできません。
他のいくつかの考え
私の質問に答えてくれたみんなに感謝します。この問題だけでなく、Webセキュリティ全般について多くのことを学びました。@Mikaelの回答を承認済みとしてマークしましたが、他の回答も非常に役に立ちます。