累積的なセキュリティ更新プログラム 974455 をインストールした後、Internet Explorer で VBScript スクリプト エラー メッセージ "型が一致しません" が表示される

はじめに
Internet Explorer 用の累積的なセキュリティ更新プログラム 974455 (MS09-054) では、特定されたセキュリティ上の脆弱性に対応するために、さまざまなメソッドに追加の "型" の安全性チェックが導入されました。特定の状況では、これらの新しい型の安全性チェックにより、VBScript を使用している Web ページまたは VBScript と JavaScript を組み合わせて使用している Web ページでスクリプト エラー "型の不一致" が発生することがあります。

MS09-054 の関連情報を参照するには、以下のサポート技術情報番号をクリックしてください。
974455[MS09-054] Internet Explorer 用の累積的なセキュリティ更新プログラム
現象
クライアント側スクリプト言語として VBScript を使用している Web ページ、および showModalDialog() または showModelessDialog() メソッドを使用している Web ページでは、スクリプト エラー "型が一致しません" が発生することがあります。マイクロソフトでは、スクリプト エラー "型が一致しません" が発生することがある次の 3 つの事例を特定しています。
  • showModalDialog()
    最初の事例は、VBScript で showModalDialog() メソッドに Array() 値をパラメーターとして渡すことに関係しています。showModalDialog() メソッドは、1 つの必須の引数 (sURL) と 2 つの省略可能な引数 (vArguments と sFeatures) をサポートします。vArguments パラメーターは、ドキュメントの表示に使用する引数を指定する VARIANT 型パラメーターです。開発者が省略可能な vArguments パラメーターに Array() を直接渡すと、スクリプト エラー "型の不一致" が発生します。

    showModalDialog メソッドの詳細については、次のマイクロソフト MSDN Web サイトを参照してください。
  • showModelessDialog()
    2 番目の事例は、VBScript で showModelessDialog() メソッドに Array() 値をパラメーターとして渡すことに関係しています。showModelessDialog() メソッドは、1 つの必須の引数 (sURL) と 2 つの省略可能な引数 (vArguments と sFeatures) をサポートします。vArguments パラメーターは、ドキュメントの表示に使用する引数を指定する VARIANT 型パラメーターです。開発者が省略可能な vArguments パラメーターに Array() を直接渡すと、スクリプト エラー "型の不一致" が発生します。

    showModelessDialog メソッドの詳細については、次のマイクロソフト MSDN Web サイトを参照してください。
  • returnValue
    3 番目の事例は、モーダル ダイアログ ウィンドウの returnValue プロパティを明示的に設定することに関係しています。returnValue プロパティは既定値を持たない読み取り/書き込みプロパティです。MSDN の文書によると、returnValue プロパティは showModalDialog() メソッドを使って作成されたウィンドウのみに適用されます。開発者がモーダル ダイアログ ウィンドウの returnValue プロパティを VBScript の Array() 値に明示的に設定すると、スクリプト エラー "型が一致しません" が発生します。

    return Value プロパティの詳細については、次のマイクロソフト MSDN Web サイトを参照してください。
現在、クライアント側スクリプト言語として JavaScript を使用している Web ページでは、累積的なセキュリティ更新プログラム 974455 から生じるスクリプト エラー "型が一致しません" は確認されていません。showModalDialog() メソッド、showModelessDialog() メソッド、または VBScript 内の returnValue プロパティを使用している Web ページのみが該当する可能性があります。Web ページに VBScript と JavaScript の両方を組み合わせが含まれる場合は、Web ページの VBScript 内で前述のメソッドまたはプロパティを使用したり、Web ページで VBArray オブジェクトを使用したりする場合が該当する可能性があります。VBArray オブジェクトの使用は一般的ではありません。VBArray が関係する事例はこのサポート技術情報の資料では扱っていません。
原因
Internet Explorer 用の累積的なセキュリティ更新プログラム (MS09-054) は、Internet Explorer で特定されたセキュリティ上の脆弱性に対応するためにリリースされています。累積的なセキュリティ更新プログラムの一部として、Internet Explorer では、危険なデータ型への VARIANT 型パラメーターの意図しないキャストに対する新しいチェックを導入しました。この追加の安全性チェックは、特定の種類の攻撃からユーザーを守るために、ユーザー設定可能な変数の一部として渡される VARIANT 型パラメーターに追加のセキュリティ上の制約を適用します。これらの追加のチェックは、VARIANT データ型を使用する正当な閲覧シナリオに影響を及ぼすことがあります。
解決方法
この問題を解決するには、累積的なセキュリティ更新プログラム 974455 をインストールした後、更新プログラム 976749 をインストールします。この問題の関連情報を参照するには、以下のサポート技術情報番号をクリックしてください。
976749セキュリティ更新プログラム 974455 (MS09-054) を適用した後に発生する問題を解決する Internet Explorer 用の更新プログラム

重要: セキュリティ更新プログラム 974455 をインストールしていない場合、更新プログラム 976749 をインストールする必要はありません。セキュリティ更新プログラム 974455 をインストールしないで更新プログラム 976749 をインストールした場合、Internet Explorer が正常に動作しないことがあります。この場合は、更新プログラム 976749 をアンインストールします。次に、セキュリティ更新プログラム 974455 をインストールし、更新プログラム 976749 を再インストールします。
回避策
この資料で説明されている現象が発生する場合は、累積的なセキュリティ更新プログラム 974455 および更新プログラム 976749 を引き続き適用することをお勧めします。この累積的なセキュリティ更新プログラムを削除すると、システムが危険にさらされます。

「現象」で説明している最初および 2 番目の事例については、セキュリティ更新プログラム 974455 をインストールしない場合、回避策を実装できます。この問題を回避するには、VBScript 変数内で Array() 変数を明示的に宣言します。スクリプト エラー "型が一致しません" を発生させることなく、Array を showModalDialog() または the showModelessDialog() メソッドに渡すことができます。

たとえば、以下の VBScript ではスクリプト エラー "型が一致しません" が発生します。
// "型が一致しません" エラーが発生する例vReturn = window.showModalDialog("http://www.contoso.com", Array(1,2,3,4,5,6,7))
以下の VBScript では、スクリプト エラー "型が一致しません" を発生することなく配列を showModialDialog() または showModelessDialog() メソッドに渡すことができます。
// "型が一致しません" エラーが発生しない例Dim myArraymyArray=Array(1,2,3,4,5,6,7)vReturn = window.showModalDialog("http://www.contoso.com", myArray)
上記の 3 番目の事例については、セキュリティ更新プログラム 974455 をインストールしない場合、回避策を実装できます。1 次元の Array() 値を returnValue プロパティに渡す事例での問題を回避するには、Join および Split VBScript 関数を使用します。これにより、Array() 値を returnValue プロパティに渡すことができます。

たとえば、以下の VBScript ではスクリプト エラー "型が一致しません" が発生します。
// "型が一致しません" エラーが発生する例Dim arrayItemsarrayItems(0) = 1arrayItems(1) = 2arrayItems(2) = 3Window.returnvalue = arrayItems
Join および Split VBScript 関数を使用すると、スクリプト エラー "型が一致しません" を発生させることなく、returnValue プロパティを設定できます。
// "型が一致しません" エラーが発生しない例Dim arrayItemsarrayItems(0) = 1arrayItems(1) = 2arrayItems(2) = 3Dim arrString = Join(arrayItems, ";")Window.returnvalue = arrStringDim strTemp = window.showModalDialog(……)Dim arrayItems = Split(strTemp, ";")
オブジェクトが格納されている多次元の Array() 値または Array() 値を returnValue プロパティに渡す上記の 3 番目の事例については、セキュリティ更新プログラム 974455 をインストールしない場合、回避策を実装できます。この事例の問題を回避するには、JavaScript 関数を使用して returnValue プロパティを設定します。この JavaScript 関数は、VBScript サブルーチンおよび関数で使用できます。JavaScript 関数で設定した returnValue プロパティは VBScript で使用できます。

たとえば、以下の VBScript ではスクリプト エラー "型が一致しません" が発生します。
// "型が一致しません" エラーが発生する例<script LANGUAGE=vbscript>Option ExplicitSub Window_OnLoadDim abc(1,2,3)Window.ReturnValue = abcEnd Sub</script>
JavaScript 関数を既存の VBScript と使用すると、スクリプト エラー "型が一致しません" を発生させることなく、returnValue プロパティを設定できます。
// "型が一致しません" エラーが発生しない例<script Language=JavaScript>function setReturnValue(){var returnValueArray= new Array();returnValueArray[0] = 1;returnValueArray[1] = 2;returnValueArray[2] = 3;window.returnValue = returnValueArray;}</script><script LANGUAGE=vbscript??Option ExplicitSub Window_OnLoadsetReturnValue()msgbox window.returnValueEnd Sub</script>
状況
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
プロパティ

文書番号:976949 - 最終更新日: 12/01/2009 02:34:38 - リビジョン: 3.1

Windows Internet Explorer 8, Windows Internet Explorer 7, Microsoft Internet Explorer 6.0, Microsoft Internet Explorer 6.0 SP1, Microsoft Internet Explorer 5.01 Service Pack 4

  • kbcode kbtshoot kbbug kbexpertiseinter kbsecurity kbsecvulnerability kbsurveynew KB976949
フィードバック