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 攻撃を防ぐ
さて、この問題に焦点を当てましょう。
- Scott Guthrie は彼のブログでそれについてのエントリを公開しました
- 脆弱性に関する ScottGu の FAQ ブログ投稿
- 脆弱性に関する ScottGu の最新情報
- Microsoft はそれに関するセキュリティ アドバイザリを持っています。
- 脆弱性を理解する
- 脆弱性に関する追加情報
ソリューション
- customErrors を有効にして、すべてのエラーがリダイレクトされる単一のエラー ページを作成します。はい、404 も。(ScottGu は、この攻撃には 404 と 500 を区別することが不可欠であると述べています。) また、ランダムな遅延を発生させるコードを
Application_Error
orに入れます。Error.aspx
(乱数を生成し、Thread.Sleep を使用してその時間だけスリープします。) これにより、攻撃者はサーバーで何が起こったのか正確に判断できなくなります。 - 一部の人々は、3DES に戻すことを勧めました。理論的には、AES を使用しない場合、AES 実装のセキュリティ上の弱点に遭遇することはありません。結局のところ、これはまったくお勧めできません。
その他の考え
- 回避策が十分であると誰もが考えているわけではないようです。
私の質問に答えてくれたみんなに感謝します。この問題だけでなく、Web セキュリティ全般について多くのことを学びました。@Mikael の回答を承認済みとしてマークしましたが、他の回答も非常に役立ちます。