セキュリティを形にする日本のエンジニア - こぼれ話 -
こんにちは。石山です。
今回は、@ITさんに掲載されているFFR yaraiの連載「セキュリティを形にする日本のエンジニア」の第3回で掲載したZDPエンジンのこぼれ話についてお話したいと思います。@ITさんで掲載されている連載については以下で読めますので、まだ読んでいない方はこちらも参照してみてください。
○ 名前の由来
まずZDPの名前の由来ですが、FFRの配布しているyaraiのパンフレットには"Zero-day vulnerability Detection and Prevention Engine"と書いてあります。つまり、0-Day脆弱性を検知、遮断するエンジンということです。しかし、石山が当初ZDPと名前を付けた時は、"Zero Day Prevention"という意味でつけていました。開発者的には正式には違いますと言ったところなのですが、新しい名称のほうがそれらしいということで特に気にしていません。この話は、今初めて公表しているので、おそらくFFR社員も知らないことだと思います。
○ コンセプトコードでWindowsにログオンできなくなる
ZDPエンジンでは、スタックのバックトレースを検査してShellcodeの実行を検出しているのですが、このコンセプトコード自体は開発前から存在していました。ZDPエンジンの開発時にまずはこのコンセプトコードの動作を見てみようということで、石山の作業マシンにインストールして実行してみたのですが、再起動を行った際にWindowsのログオン画面で誤検出が発生してしまいました。コンセプトコードでは、攻撃を検出した場合にメッセージボックスを表示しているのですが、メッセージボックスを消しても再度メッセージボックスが表示されるという事態になってしまいました。そのため、ログオン画面でユーザ名とパスワードを入力することができず、Windowsにログオンできなくなりました。
とりあえず、セーフモードで起動させてコンセプトコードのモジュールを削除しようと思ったのですが、ここでもログオン画面でメッセージボックスが表示されセーフモードでもログオンできない状態になってしまいました。
結局、CDからLinuxを起動させてコンセプトコードのモジュールを削除することでログオンできるようになったのですが、Windowsを構成しているモジュールでも誤検出することがあるということがわかり、今後の開発で誤検出について敏感になって開発することになりました。
○ 特殊環境で動作しているが故の不具合
ZDPエンジンは、API呼び出し時にスタックトレースを調査し、Exploitの実行を検出するという動作になっています。このため、ZDPエンジンの動作する環境は普通のアプリケーションに比べると特殊な環境で動作するアプリケーションとなっています。そのため、通常のアプリケーションでは発生しないような不具合がいくつかありました。
たとえば、CreateFileでファイル書き込みを監視する場合、ZDPエンジンではAPI HOOKを使用して監視を行っているため、監視ロジック内でログ出力のためCreateFileを実行してしまうと、監視ロジック内のCreateFile呼び出しでさらに監視ロジックが動作していしまい結果的に再帰呼び出しになってしまいます。そのため、ZDPエンジンの監視ロジック内では呼び出すAPIについての注意も必要でした。
こういった普段のプログラミングでは起こらないような不具合を乗り越えてZDPエンジンが開発されました。そのため、やはり開発者としてはZDPエンジンに対する思い入れは強いものがあります。ZDPエンジンが今後も長く使用されていくようなソフトウェアになっていくことを願っています。
---
このブログ中における株式会社フォティーンフォティ技術研究所(以下FFR)の社員による発言やコメントは、FFRの正式な見解またはコメントではありません。このブログは、FFRおよびココログの倫理規定に即して運営されており、倫理規定に反する内容のトラックバックは、事前のお知らせなしに削除させていただく場合があります。予めご了承ください。
| 固定リンク
| トラックバック (0)
|
