日本語
英語

文書番号: 976749 - 最終更新日: 2009年10月23日 - リビジョン: 2.1

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

すべて展開する | すべて折りたたむ

はじめに

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

MS09-054 の関連情報を参照するには、以下のサポート技術情報番号をクリックしてください。
974455  (http://support.microsoft.com/kb/974455/ ) [MS09-054] Internet Explorer 用の累積的なセキュリティ更新プログラム

現象

クライアント側スクリプト言語として VBScript を使用している Web ページ、および showModalDialog() または showModelessDialog() API を使用している Web ページでは、スクリプト エラー "型が一致しません" が発生することがあります。マイクロソフトでは、スクリプト エラー "型が一致しません" が発生することがある次の 3 つの事例を特定しています。
  • showModalDialog()
    最初の事例は、VBScript で showModalDialog() API に Array() 値をパラメーターとして渡すことに関係しています。showModalDialog() API は、1 つの必須の引数 (sURL) と 2 つの省略可能な引数 (vArguments と sFeatures) をサポートします。vArguments パラメーターは、ドキュメントの表示に使用する引数を指定する VARIANT 型パラメーターです。開発者が省略可能な vArguments パラメーターに Array() を直接渡すと、スクリプト エラー "型が一致しません" が発生します。

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

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

    showModalDialog API の詳細については、次のマイクロソフト MSDN Web サイトを参照してください。
    http://msdn.microsoft.com/ja-jp/library/ms534371(VS.85).aspx (http://msdn.microsoft.com/ja-jp/library/ms534371(VS.85).aspx)
現在、クライアント側スクリプト言語として JavaScript を使用している Web ページでは、累積的なセキュリティ更新プログラム 974455 から生じるスクリプト エラー "型が一致しません" は確認されていません。showModalDialog() API、showModelessDialog() API、または VBScript 内の returnValue プロパティを使用している Web ページのみが該当する可能性があります。Web ページに VBScript と JavaScript の両方を組み合わせが含まれる場合は、Web ページの VBScript 内で前述の API またはプロパティを使用したり、Web ページで VBArray オブジェクトを使用したりする場合が該当する可能性があります。VBArray オブジェクトの使用は一般的ではありません。VBArray が関係する事例はこのサポート技術情報の資料では扱っていません。

原因

Internet Explorer 用の累積的なセキュリティ更新プログラム (MS09-054 (http://www.microsoft.com/japan/technet/security/bulletin/MS09-054.mspx) ) は、Internet Explorer で特定されたセキュリティ上の脆弱性に対応するためにリリースされています。累積的なセキュリティ更新プログラムの一部として、Internet Explorer では、危険なデータ型への VARIANT 型パラメーターの意図しないキャストに対する新しいチェックを導入しました。この追加の安全性チェックは、特定の種類の攻撃からユーザーを守るために、ユーザー設定可能な変数の一部として渡される VARIANT 型パラメーターに追加のセキュリティ上の制約を適用します。これらの追加のチェックは、VARIANT データ型を使用する正当な閲覧シナリオに影響を及ぼすことがあります。

回避策

累積的なセキュリティ更新プログラム 974455 を引き続き実装することをお勧めします。この累積的なセキュリティ更新プログラムを削除すると、システムが危険にさらされます。

「現象」で説明している最初および 2 番目の事例については、エンジニアリング修正プログラムがリリースされるまで回避策を実装できます。この問題を回避するには、VBScript 変数内で Array() 変数を明示的に宣言します。スクリプト エラー "型が一致しません" を発生させることなく、Array を showModalDialog() または the showModelessDialog() API に渡すことができます。

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

たとえば、以下の VBScript ではスクリプト エラー "型が一致しません" が発生します。

// "型が一致しません" エラーが発生する例
Dim arrayItems
arrayItems(0) = 1
arrayItems(1) = 2
arrayItems(2) = 3
Window.returnvalue = arrayItems
Join および Split VBScript 関数を使用すると、開発者はスクリプト エラー "型が一致しません" を発生させることなく、returnValue プロパティを設定できます。


// "型が一致しません" エラーが発生しない例
Dim arrayItems
arrayItems(0) = 1
arrayItems(1) = 2
arrayItems(2) = 3

Dim arrString = Join(arrayItems, ";")
Window.returnvalue = arrString
Dim strTemp = window.showModalDialog(……)
Dim arrayItems = Split(strTemp, “;”) 

多次元の Array() 値または Array() 値とオブジェクトを returnValue プロパティに渡す上記の 3 番目の事例の場合は、エンジニアリング修正プログラムがリリースされるまで回避策を実装できます。この事例の問題を回避するには、JavaScript 関数を使用して returnValue プロパティを設定します。この JavaScript 関数は、VBScript サブルーチンおよび関数で使用できます。JavaScript 関数で設定した returnValue プロパティは VBScript で使用できます。

たとえば、以下の VBScript ではスクリプト エラー "型が一致しません" が発生します。
// "型が一致しません" エラーが発生する例
<script LANGUAGE=vbscript>
Option Explicit
Sub Window_OnLoad
Dim abc(1,2,3)
Window.ReturnValue = abc 
End 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 Explicit

Sub Window_OnLoad
setReturnValue()
msgbox window.returnValue
End Sub
</script>

状況

マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。

マイクロソフトでは、この問題について現在調査中です。詳細については、わかりしだいこの資料に掲載する予定です。

この資料は以下の製品について記述したものです。
  • Windows Internet Explorer 8 を以下の環境でお使いの場合
    • Windows Server 2008 Datacenter without Hyper-V
    • Windows Server 2008 Enterprise without Hyper-V
    • Windows Server 2008 for Itanium-Based Systems
    • Windows Server 2008 Standard without Hyper-V
    • Windows Server 2008 Datacenter
    • Windows Server 2008 Enterprise
    • Windows Server 2008 Standard
    • Windows Web Server 2008
    • Windows Server 2008 R2 Datacenter
    • Windows Server 2008 R2 Datacenter without Hyper-V
    • Windows Server 2008 R2 Enterprise
    • Windows Server 2008 R2 Enterprise without Hyper-V
    • Windows Server 2008 R2 Standard
    • Windows Server 2008 R2 Standard without Hyper-V
    • Windows Web Server 2008 R2
    • Windows 7 Enterprise
    • Windows 7 Home Basic
    • Windows 7 Home Premium
    • Windows 7 Professional
    • Windows 7 Ultimate
    • Windows Vista Business
    • Windows Vista Enterprise
    • Windows Vista Home Basic
    • Windows Vista Home Premium
    • Windows Vista Ultimate
    • Windows Vista Enterprise 64-bit edition
    • Windows Vista Home Basic 64-bit edition
    • Windows Vista Home Premium 64-bit edition
    • Windows Vista Ultimate 64-bit edition
    • Windows Vista Business 64-bit edition
    • Microsoft Windows XP Professional
    • Microsoft Windows XP Home Edition
    • Microsoft Windows XP Professional x64 Edition
    • Microsoft Windows Server 2003, Datacenter x64 Edition
    • Microsoft Windows Server 2003, Enterprise x64 Edition
    • Microsoft Windows Server 2003, Standard x64 Edition
    • Microsoft Windows Server 2003, Web Edition
    • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
    • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
    • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
    • Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems
    • Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems
  • Windows Internet Explorer 7 を以下の環境でお使いの場合
    • Windows Server 2008 Datacenter without Hyper-V
    • Windows Server 2008 Enterprise without Hyper-V
    • Windows Server 2008 for Itanium-Based Systems
    • Windows Server 2008 Standard without Hyper-V
    • Windows Server 2008 Datacenter
    • Windows Server 2008 Enterprise
    • Windows Server 2008 Standard
    • Windows Web Server 2008
    • Windows Server 2008 R2 Datacenter
    • Windows Server 2008 R2 Datacenter without Hyper-V
    • Windows Server 2008 R2 Enterprise
    • Windows Server 2008 R2 Enterprise without Hyper-V
    • Windows Server 2008 R2 Standard
    • Windows Server 2008 R2 Standard without Hyper-V
    • Windows Web Server 2008 R2
    • Windows 7 Enterprise
    • Windows 7 Home Basic
    • Windows 7 Home Premium
    • Windows 7 Professional
    • Windows 7 Ultimate
    • Windows Vista Business
    • Windows Vista Enterprise
    • Windows Vista Home Basic
    • Windows Vista Home Premium
    • Windows Vista Ultimate
    • Windows Vista Enterprise 64-bit edition
    • Windows Vista Home Basic 64-bit edition
    • Windows Vista Home Premium 64-bit edition
    • Windows Vista Ultimate 64-bit edition
    • Windows Vista Business 64-bit edition
    • Microsoft Windows XP Professional
    • Microsoft Windows XP Home Edition
    • Microsoft Windows XP Professional x64 Edition
    • Microsoft Windows Server 2003, Datacenter x64 Edition
    • Microsoft Windows Server 2003, Enterprise x64 Edition
    • Microsoft Windows Server 2003, Standard x64 Edition
    • Microsoft Windows Server 2003, Web Edition
    • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
    • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
    • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
    • Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems
    • Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems
  • Microsoft Internet Explorer 6.0 を以下の環境でお使いの場合
    • Microsoft Windows XP Professional
    • Microsoft Windows XP Home Edition
    • Microsoft Windows XP Professional x64 Edition
    • Microsoft Windows Server 2003, Datacenter x64 Edition
    • Microsoft Windows Server 2003, Enterprise x64 Edition
    • Microsoft Windows Server 2003, Standard x64 Edition
    • Microsoft Windows Server 2003, Web Edition
    • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
    • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
    • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
    • Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems
    • Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems
  • Microsoft Internet Explorer 6.0 SP1 を以下の環境でお使いの場合
    • Microsoft Windows 2000 Advanced Server
    • Microsoft Windows 2000 Datacenter Server
    • Microsoft Windows 2000 Professional
    • Microsoft Windows 2000 Server
  • Microsoft Internet Explorer 5.01 Service Pack 4 を以下の環境でお使いの場合
    • Microsoft Windows 2000 Advanced Server
    • Microsoft Windows 2000 Datacenter Server
    • Microsoft Windows 2000 Professional
    • Microsoft Windows 2000 Server
キーワード: 
kbcode kbtshoot kbbug kbexpertiseinter kbsecurity kbsecvulnerability kbsurveynew KB976749
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"
 

サポート技術情報の翻訳