Web ファームに展開されている Microsoft ASP.NET Web サイトにサービスを提供するサーバーにセキュリティ更新プログラム MS10-070 を適用すると、Web ファーム内の一部のサーバーまたはアプリケーションで、次の現象の 1 つ以上が発生することがあります。
- データの復号化に失敗した
- WebResource ハンドラーまたは ScriptResource ハンドラーの例外
- フォーム認証を使用したときの認証エラー
- "無効なビュー状態" 例外
- フォーム認証 Cookie などのデータを復号化しようとしたときに "データを検証できません" 例外
障害は、ASP.NET アプリケーションにアクセスするときにアプリケーションの例外として現れることがあり、次のような情報がアプリケーション ログに記録されることもあります。
メッセージ 1:
System.Web.HttpException: データを検証できません。 at System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean fEncrypt, Byte[] buf, Byte[] modifier, Int32 start, Int32 length, IVType ivType, Boolean useValidationSymAlgo, Boolean signData)
メッセージ 2:
イベントの種類: 警告
イベント ソース: ASP.NET 2.0.50727.0
イベント カテゴリ: Web イベント
イベント ID: 1309
日付: 日付
時刻: 時刻
ユーザー: N/A
説明:
イベント コード: 3005
イベント メッセージ: 未処理の例外が発生しました。
例外情報:
例外の種類: HttpException
例外メッセージ: データを検証できません。
現象
セキュリティ情報 MS10-070 で対処するセキュリティ更新プログラムは、ASP.NET の暗号化の既定の動作を変更します。 セキュリティ更新プログラムのインストール後の新しい既定の動作では、暗号化のみが要求された場合でも、暗号化に加えて検証も実行されます。 この既定の動作により、この更新プログラムが適用されるサーバー上の暗号化ペイロードが変更されます。 ペイロードには、ビュー ステート Cookie とフォーム認証 Cookie が含まれる場合があります。 Web ファームにセキュリティ更新プログラムが適用されたサーバーが一部しかない場合、Web ファーム内の異なるサーバー間で同じペイロードの暗号化および復号化の方法に違いがあり、この動作の違いによって例外が発生します。 この現象は、セキュリティ更新プログラムを適用する前にシステムに保持されていたフォーム認証 Cookie が、セキュリティ更新プログラムの適用後に消費される場合にも発生する可能性があります。
また、暗号化および復号化の方法は、Microsoft .NET Framework 2.0 の Service Pack バージョンごとに異なります。 したがって、セキュリティ更新プログラムがインストールされている Web ファーム環境で .NET Framework の Service Pack レベルが異なる場合、異なる暗号化ペイロードと同様の復号化エラーが発生します。
原因
ASP.NET コンテンツを提供しているすべてのサーバーで、次の条件が当てはまることを確認します。
- Web ファーム内の ASP.NET Web サイトを提供するすべてのサーバーにセキュリティ更新プログラムをインストールする必要があります。 一部のサーバーにセキュリティ更新プログラムがインストールされていない場合は、これらのサーバーに更新プログラムを適用する必要があります。
- MS10-070 セキュリティ更新プログラムがすべてのシステムに適用されている場合、Web ファームで .NET Framework 2.0 の何らかのバージョンを実行しているすべてのコンピューターが同じサービス パック レベルである必要があります。 サーバーの Service Pack のレベルに違いがある場合は、すべてのサーバーを最新の Service Pack に更新し、すべてのセキュリティ更新プログラムを再適用する必要があります。 したがって、Web ファーム内の一部のサーバーが .NET Framework 2.0 SP1 を実行していて、他のサーバーが .NET Framework 2.0 SP2 を実行している場合は、Web ファームのすべてのサーバーにセキュリティ更新プログラムを適用する前に、すべての .NET Framework 2.0 SP1 サーバーを .NET Framework 2.0 SP2 にアップグレードする必要があります。
- 更新プログラムが適用される前に生成されたフォーム認証 Cookie などの暗号化されたデータがアプリケーションで使用されていないことを確認します。 以前に暗号化されたデータは、セキュリティ更新プログラムの適用後に更新する必要があります。
.NET Framework のバージョンを検出する方法、およびサーバーにセキュリティ更新プログラムをインストールする方法の詳細については、「関連情報」を参照してください。
解決策
ASP.NET ビュー ステートの詳細については、次の記事を参照してください。
ASP.NET ビュー状態の概要 ASP.NET フォーム認証の詳細については、次の記事を参照してください。
ASP.NET フォーム認証の概要 ASP.NET フォーム認証チケットおよび Cookie の詳細については、以下のサポート技術情報番号をクリックしてください。
910443 フォーム認証チケットと Cookie について Web リソース ハンドラの関連情報を参照するには、以下の「サポート技術情報」 (Microsoft サポート技術情報 ASP.NET をクリックしてください。
910442 ASP.NET 2.0 での Web リソースの操作