セキュリティについて考え直している。今まで外→内のセキュリティを厳重に考えていたが、内→外のセキュリティを引き上げるべき、ということだ。
内から外に自分から情報を出しちゃうようなケースにソフト的に対応したいよね、という話。
過去に、Chromeブラウザのプラグインで自分の想定しない動き(URL垂れ流し)をしていた、ということがあった。
詳しくは、bit.lyのbotが、自分のアドレスを公開していないプライベートなサーバにアクセスしてきている、ということだった。その件については解決できた。当然といえば当然で、恥ずかしい間違いだ。ソーシャルブックマークの数を測定するプラグインを入れていた。URLを投げて、ブックマークの数を調べてくれていた。その中に自身のプライベートなサーバのアドレスが入っていた。中にはbit.lyに知らせてリンクを作るものもあった、ということだ。
twitterにも書いたが、4年前ごろからGeasemonkeyのプラグインで、AmazonのアソシエイトIDを書き換えるようなものも出ている。どのような動きをしているのか、よく精査しなければなるまい。しかし、できるだろうか。Geasemonkeyのアップデートは、作者と直接的だ。信頼できる仲介者が存在するというものではない。
加えて、他人が管理しているサーバであるがアカウント乗っ取り被害を間近で見る機会があった。Gumblarではなかったような気がするが、可能性としてGumblarも調べた。Gumblarの場合、FTPパスワードを抜き取るといわれている。抜き取られたパスワードは内から外へ出て行く。そのパスワードを用いてサーバにログインされることがある。これはFTP以外を使っていても長い目で見れば同様に脅威だろう。
また暴露型プログラムの脅威もすごい。プログラムを実行すると登録フォームが出てきて、自ら本名と住所を書いてしまい、スクリーンショットと一緒に公開されてしまう、というプログラムが某所で話題になっている。しかも今回のケースでは簡単なC#で作られたものらしい。怪しいプログラムは実行するな、という良い見本だが、USBウィルスのように感染するようなものであった場合、どうだろうか。もしくは、Web上でフリーソフトを装いながら、その実はスクリーンショット自動公開ソフトであったら、どうだろうか。セキュリティポリシーが低い組織ではフリーソフトも用いるだろうが、脅威だ。
以上の事例を踏まえて、不勉強だったことを恥じ、今まで軽視していた内→外のセキュリティポリシーを考え直している。
考え直しているが、難しい。プログラムごとにネットワーク許可の設定を行うようなファイアウォールを設定してもよいのだが、許可をする前では、何を送ろうとしているのかがわからない。仮にスクリーンショットを送ろうとしているプログラムを拒否する場合、スクリーンショットを送ろうとしているのか、Webから情報を引き出そうとしているのかの見分けがつかない。
また、ブラウザプラグインの場合、ブラウザそのものを許可してしまっているので、プラグインごとの許可が出せない。また何を改ざんされているのかが分からない。ソースを読むしかない。
このことから、何かしら新しいものを利用する場合は、検疫をするためのクリーンな環境、重要・プライベートな情報が存在しない環境を作り、試してみてから決める、ということをしなければならない。ここまでの段階になってくると、もうセキュリティベンダーがアプリケーション・プラグイン・スクリプトを調べて安全マークをつけていかざるを得なくなってくる。となるとセキュリティベンダーがアプリケーションを配布した方が良い。もしくはセキュリティソフトがアプリケーションのフットプリントを全て持っていて、安全段階を示した上で動作させるという流れが正しいだろう。
そうなってくると、AppleがiPhoneのアプリケーションで実行している、検閲したアプリケーションしか公開させない、という方針も分かるような気がしてくる。
そのうち、Proxy型のファイアウォールが出て、プログラムからサーバの代わりに通信を受け、確認してから送信するようなセキュリティの形が出てくるのかもしれない。そうしたときにバイナリでは都合が悪いので、必ず、見て分かる形で送信するように、バイナリデータのオープン化が求められる。通信許可者が目で見て確認できる形でなければ許可しない。従って全て見える形になる。そういう向きになるべきなのだろうか。
と考えたところで、面倒になったので、とりあえずプログラムごとに通信許可ポリシーを決められるファイアウォールのフリーソフトはないものか、探してみようと思ったところだ。