ソフトウェア技術

セキュリティを形にする日本のエンジニア - こぼれ話 -

こんにちは。石山です。

今回は、@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)
|

FFRのソフトウェア開発

はじめまして、FFRのソフトウェア開発を担当する石山智祥です。

このカテゴリーでは、セキュリティ業界でのソフトウェア技術、開発手法からFFRのソフトウェアエンジニアが普段思っていることなどを取り上げていきたいと思います。

さて、はじめに石山のプロフィールを簡単に紹介したいと思います。石山は、独立系のソフトウェア開発会社にておもに組み込み関係の開発業務を行っていました。組み込みの世界では、コンピュータウィルスや脆弱性といったキーワードを耳にする機会はほとんどありませんでした。当然、業務内でもセキュアコーディングといった視点からはあまり考えていなかったと思います。

そんななか、石山がセキュリティに対して興味を持ったのは、Windows Update のアドバイザリや、ニュース等で目にする「悪意のあるコードが実行される」という記述からです。アプリケーションに実装されていないコードがどうやって実行されるのかという技術的なところに興味を持ち始め、個人的に調べていきました。そして、セキュリティ技術について、個人的に学習をしていく中で、セキュリティ業界で働いてみたいと思い、FFRに入社しました。

FFRに入社して感じたことは、セキュリティ技術といって何か特別なことをしているわけではないということでした。というのも、脆弱性を攻撃して「悪意のあるコードを実行」することについても、特別なことをしているのではなく、コンピュータの動作原理を理解し、応用しているだけだったからです。この辺りについては、コンピュータサイエンスの基礎をしっかり理解している人であれば、理解するのはそれほど難しいことではないと感じました。

最近のソフトウェア業界では、クラウドや仮想化等により、CPUに近い部分については隠ぺいされていく傾向にあると思います。逆にセキュリティ業界のソフトウェア技術は、CPUに近い低レイヤの部分に踏み込んで行く傾向にあると思っています。石山がそうだったのですが、低レイヤの技術に興味のある方にはセキュリティ業界は魅力的な業界ではないかと思います。

---
このブログ中における株式会社フォティーンフォティ技術研究所(以下FFR)の社員による発言やコメントは、FFRの正式な見解またはコメントではありません。このブログは、FFRおよびココログの倫理規定に即して運営されており、倫理規定に反する内容のトラックバックは、事前のお知らせなしに削除させていただく場合があります。予めご了承ください。

| | トラックバック (0)
|