Web ファームに展開されている Microsoft ASP.NET Web サイトにサービスを提供するサーバーにセキュリティ更新プログラム MS10-070 を適用すると、Web ファーム内の一部のサーバーまたはアプリケーションで次の 1 つ以上の現象が発生する可能性があります。
- データの暗号化を解除できない
- WebResource ハンドラーまたは ScriptResource ハンドラーの例外
- フォーム認証を使用するときの認証エラー
- "無効な Viewstate" 例外
- フォーム認証 Cookie などのデータの暗号化を解除しようとすると、"データを検証できません" 例外
このエラーは、ASP.NET アプリケーションにアクセスするときにアプリケーション例外として発生する可能性があり、次のような情報もアプリケーション ログに記録される可能性があります。
メッセージ 1:
System.Web.HttpException : データを検証できません。 at System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean fEncrypt, Byte[] buf, Byte[] 修飾子, 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 が含まれる場合があります。 Web ファームにセキュリティ更新プログラムが適用されている一部のサーバーしかない場合、Web ファーム内の異なるサーバー間で同じペイロードに対する暗号化と復号化の方法に違いがあり、この動作の違いにより例外が発生します。 この動作は、セキュリティ更新プログラムを適用する前にシステムに保持されるフォーム認証 Cookie が、セキュリティ更新プログラムの適用後に使用される場合にも発生する可能性があります。
また、暗号化と暗号化解除の方法は、Microsoft .NET Framework 2.0 の Service Pack バージョンによって異なります。 そのため、セキュリティ更新プログラムがインストールされている Web ファーム環境で、.NET Frameworkのサービス パック レベルが異なると、異なる暗号化されたペイロードと同様の復号化エラーが発生します。
原因
ASP.NET コンテンツを提供しているすべてのサーバーで、次の条件が満たされていることを確認します。
- Web ファーム内の ASP.NET Web サイトを提供するすべてのサーバーは、セキュリティ更新プログラムをインストールする必要があります。 一部のサーバーにセキュリティ更新プログラムがインストールされていない場合は、これらのサーバーに更新プログラムを適用する必要があります。
- MS10-070 セキュリティ更新プログラムがすべてのシステムに適用されている場合、Web ファームで一部のバージョンの .NET Framework 2.0 を実行しているすべてのコンピューターは、同じ Service Pack レベルである必要があります。 サーバー上の 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 フォーム認証の概要 フォーム認証チケットと Cookie の ASP.NET の詳細については、次の記事番号をクリックして、Microsoft サポート技術情報の記事を参照してください。
910443 フォーム認証チケットと Cookie について Web リソース ハンドラー ASP.NET の詳細については、次の記事番号をクリックして、Microsoft サポート技術情報の記事を表示してください。
910442 ASP.NET 2.0 での Web リソースの操作