2007-06-20

危険なセキュリティソフトウェア

 http://blogs.technet.com/markrussinovich/archive/2007/06/19/1256677.aspx  たとえば、あるコンピュータにインストールされているWindowsに、二つのアカウントが設定されているとする。お互いに、相手から読み書きができないようなパーミッションを付けたファイルを持っている。ところで、一方のアカウントは、かなり頻繁に、あるソフトウェアを実行していると分かっている。もし、もう一方のアカウントから、そのソフトウェア(.exeファイル)を差し替えられれば、自分にとって秘密のファイルの読み書きができてしまう。  まあ、Windowsというのは、たいていの場合、ユーザが管理者であり、それほど問題にはならない。いくらVistaでマルチユーザーを歌おうとも、個人的には、これはそれほど問題にはならないかと思う。問題なのは、このようにセキュリティがずさんなことだ。  というのも、何もこれはファイルに限った話ではないからだ。他のカーネルオブジェクトが危険なのだ。たとえばミューテックスオブジェクトだ。あるセキュリティソフトウェアが、名前付きミューテックスオブジェクトを使ってスレッド、あるいはプロセス間の同期を取っていたとする。このセキュリティソフトウェアを無効にしたい、悪意あるプログラムは、単にそのミューテックスを開いて、自分で所有してしまえばいい。セキュリティソフトウェアは、いつまでたっても解放されないミューテックスオブジェクトを永遠に待ち続けることになるだろう。たったそれだけのことで、セキュリティソフトウェアを無効にできてしまうかもしれない。  また、セキュリティソフトウェアはその性質上、Local Systemで動作することもある。あるセキュリティソフトウェアは、Local Systemで動作させているプロセスと、他のプロセス(恐らくはユーザへのUIなどか)と共有メモリを使って通信している。何と皮肉なことに、この共有メモリのセキュリティが設定されていないのだ。つまりどのプロセスからでも、この共有メモリにアクセスすることができるのだ。マルウェアは、この共有メモリをいじってやれば、Local Systemで動作しているプロセスに何らかのメッセージを送ることができる。ひょっとしたら、自分の望み通りの動作をさせることができるかもしれない。これをセキュリティホールと言わずして何という。皮肉にも、セキュリティソフトウェアと名乗るプログラムに、これが非常に多いらしい。もちろん、他のプログラムも、それほど違いはなく、かなりいい加減なのだが。  Mark氏は、これは9x時代には、シングルユーザであることが当たり前だったから、このようになっているのだと推測している。時代は変わったから、そろそろプログラマも頭を切り替えなければいけないようだ。

No comments:

Post a Comment

You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.