連載
» 2009年06月12日 10時00分 公開

セキュリティ、そろそろ本音で語らないか(7):プログラマをやって思うこと (1/3)

これまでは“コンサルタント”としての本音を語ってきた本連載ですが、実は筆者は筋金入りの“プログラマ”。第7回はプログラマ視点でのセキュリティを語ります(編集部)

[三輪信雄(S&Jコンサルティング株式会社),@IT]

私、現役プログラマです

 私は学生のころからコーディングを行っていて、アルバイトで売上管理プログラムなどを作っていました。当時は容易に入手できる開発環境などもロクになくて、選択肢はBASICか機械語くらいでした。

 その後もいろいろな言語でプログラムを書いてきました。タイヤの設計に使う3次元CADのマクロ、NeXT(これ自腹でローン組んで買いました)のアプリケーション、MacintoshでのThinkCなんかも経験しつつ、Windows 3.1とUNIX間のTCP/IP通信プログラムなど、いまから思えばプログラムは趣味の1つなのかもしれません。2008年には、Second LifeのLinden Scriptで書いた動くペットなんかも作っていました。

 最近、一念発起してパソコンのセキュリティ検査や監視を行うプログラムとASPサーバのプログラムを書き始めました。実際にPC AuditorというASPサービスとして販売も始めています。導入企業も増え始め、忙しくしています。

【関連記事】

PC1台当たり250円の情報漏えい対策、S&Jコンサルティング
http://www.atmarkit.co.jp/news/200904/01/sandj.html


 もともと「社員の自宅の私物PCを検査したい」というお客様の要望から始まったのですが、企業と違って私物PCがターゲットなので、Windows 98からWindows Vistaまでカバーしなくてはいけません。

 ここ最近Windowsでプログラムを書いておらず、軽い気持ちで始めたのですが、Windows 98/Meと、Windows 2000以降のいわゆる「NT系カーネル」はまったく違うものでした。私の使っている開発環境も「開発したアプリケーションはWindows 98をサポートしていません」とキッパリ書かれていますし、.NETでは.NET Frameworkのインストールが前提条件です。これではとてもじゃないですが、私物PCを「検査させていただく」条件としては適していません。

 仕方なく、Windows 98のサポートのために古い開発環境を用意して、できるだけ互換性のあるAPIを使って開発をしました。しかしながら、最新のVistaまでカバーとなると、どうしても互換性の確保は難しく、多くの機能はWindows 2000以上となってしまいました。

 テストはVMware上で各OSを用意して行っています。Windows 98やWindows 2000があまりに快適に動作するので、あらためて最新の重いOSってなんなんだろう、と思ってしまいます。Windows 98は動作が不安定なので、いまさら現役では使うのは根性が要りますが、Windows 2000はテストをしていても十分に安定していますし、快適そのものです。

 実際、開発環境はWindows 2000上に構築しています。Windows XPもインストールして使っていますが、Windows 2000の快適さにはかないませんし、重いOSをわざわざ使う理由がありません。

開発者から見た「UAC」という壁

 Windows 2000でもWindows XPでもちゃんと動作するアプリケーションを書いたところで、ハマったのがWindows Vistaです。ユーザーアカウント制御(以下、UAC)が有効になっていると、特にサービスプログラムはWindows 2000、Windows XPとは違う動きをしてしまいます。結局、Windows Vistaに対応するようにプログラムを改修しなくてはいけません。

 ほかの開発会社はどうしているのか、と調べてみると、「UACを無効にして実行してください」とうたっているものが少なくありません。UACはそもそもセキュリティ強化の機能なので、これを無効にしてください、というのはあまりいい対応ではないと思います。

 しかしこのUACですが、本当にセキュリティが向上しているのでしょうか。例えば、アプリケーションをダウンロードしてきて実行しようとすると、「認識できないプログラムがこのコンピュータへのアクセスを要求しています」「発行元が分かっている場合や以前使用したことのある場合を除き、このプログラムは実行しないでください。」と聞いてくるのです。ユーザーは意識的にこのプログラムを起動しているわけで、普通は「許可」することでしょう。

 確かに意図せず実行されたプログラムであれば、怪しいから実行しない、ということもあると思われますが、何回もこの画面を見ているユーザーは「許可」を選択することが習慣になります。

 ユーザーに確認をしつこく求めるようなUI(ユーザーインターフェイス)は、むしろセキュリティをうとましく思わせる原因にもなります。そもそもOSなんだから、自分の配下で動く怪しい動作をするプログラムくらい見分けてほしいものです。

 また、ログインすると自動起動するプログラムで管理者権限の必要なアプリケーションは改修を余儀なくされています。このような仕様の変更はプログラマに負担をかけてしまいます。

 私の開発しているPC Auditorでも、Vistaに対応するための修正を行いました。実行権限だけでなく、ユーザープログラムが書き込めるディレクトリやレジストリにも制限やVista独自の仕様があり、それに適合した作りにしなくてはなりません。

 私の記憶が間違っていなければ、Windows NTが出たときに多くの脆弱性が発見されて、その次に出たWindows 2000では「セキュリティの問題は大きく改善された」とアナウンスされていたような気がします。さらに、Windows XPでも同じように「セキュリティの問題は大きく改善された」といわれていて、それに懲りたのか、Vistaではユーザーに「許可」をさせることで「セキュリティを向上させたことにした」のでしょう。

 しかし、デフォルトで有効にされているUACをそのまま使って、パソコンにそれほど詳しくない一般ユーザーがどれだけ不安になったことでしょう。UACの確認で、急にグレーな画面に切り替わるのは、慣れていてもドキっとします。

 Googleで検索すると、UACの無効化について無数のサイトが紹介しています。つまり、ユーザーに確認を求めることでセキュリティを向上させる試みは失敗に終わったと思います。これ以上しつこくなったら、本当にWindows離れが進んでしまうことでしょう。

Index

プログラマをやって思うこと

Page1
私、現役プログラマです
UACという壁

Page2
開発環境にだってバグはある
困ったときのネット頼み――ただし、コピペは危険

Page3
“メモリを正しく使う”という考え方が明日のセキュアを作る


インデックス

「セキュリティ、そろそろ本音で語らないか」連載目次

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

編集部からのお知らせ

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。