ホワイトリストと出力

先週末、まっちゃ445というセキュリティ勉強会にお呼び頂きました。未修正のPHP4/5の脆弱性やパネルディスカッションのパネラーとして話をさせて頂きました。関係者の皆様、いろいろ参考になりました。ありがとうございました。

この勉強会の主題の一つがWeb Application Firewall(WAF)でした。パネルディスカッションのテーマもWAFでした。進行役にはサイバー大学の園田さん、パネラーにはサーボーズラボの竹迫さん、HASHコンサルティングの徳丸さん、そして私の4人でパネルディスカッションを行いました。

3人ともWAFの効用や限界に意見の相違はなかったのですが、私と徳丸さんにはシステム開発に於けるブラックリストとホワイトリストの使い方には意見の相違があったと思います。うまく議論をまとめられなかったのでブログに書きます。

追記:ホワイトリストの基本中の基本は”デフォルトで全て拒否する”であることに注意してください。全て拒否した上で、許可するモノ、を指定しないとホワイトリストになりません。
“ホワイトリストと出力” の続きを読む

IPAがワンクリック詐欺に注意喚起

【注意喚起】ワンクリック不正請求に関する相談急増!
http://www.ipa.go.jp/security/topics/alert20080909.html

これによるとワンクリック詐欺が増えているらしい。少なくとも相談件数は増えている。

ワンクリック詐欺の相談件数

IPAの資料によるとユーザがアプリケーションを実行してしまう事が原因と解説されています。

相談の主な内容は、動画を見ようとして、[再生]ボタンなどをクリックした結果、請求書を表示するウィンドウ(図2)がデスクトップ画面に貼り付いて、画面から削除しても繰り返し表示されてしまうというものです。
 この現象は、動画を見るつもりでクリックをし続けた結果、請求書を繰り返し表示するウイルスプログラムを取り込んでしまったことにより起こっています。
 取り込む際には、Windows の警告画面が出ていたはずですが、被害者は、皆、その警告を無視してクリックをし続けて自らウイルスを取り込んでしまっています。

アプリケーションまで実行してしまうユーザも数多くいるようです。

これはWeb開発者にとってもかなりの脅威です。Webブラウザにユーザ名とパスワードを保存している利用者も多いと思います。私は全てのサイトで異なるパスワードを利用しています。とても覚えきれないのでブラウザにパスワードを保存しています。当然ですがマスターパスワードを設定しています。

しかし、一般のユーザはどれだけこれらのファイルを暗号化して保護しているでしょうか? Yahooオークションでユーザが知らない内に不正に出品される事件が発生しているそうですが、この原因には

  • クラックによるユーザ名とパスワードの漏洩
  • WiFiなどの盗聴によるユーザ名とパスワードの漏洩
  • トロイの木馬によるユーザ名とパスワードの漏洩

などが考えられるのでは無いでしょうか? Yahooオークションで不正出品が大量に行われている問題は、Yahoo自体の問題より、他のサイトのセキュリティ脆弱性やユーザの誤ったネットワーク利用の問題の方がより重大な問題ではないかと思います。

Yahooオークションにも不正な出品を防ぐシステム作りをする責任がありますが、ユーザ自身もコンピュータを利用するリスクを正しく知る努力が必要だと思います。

  • インストールされたソフトを最新の状態に保つ
  • 危険なネットワークは利用しない(WEPは平文だと考えるべき)
  • 同じパスワードは利用しない
  • ブラウザにマスターパスワードを設定する
  • 無闇にインターネットからダウンロードしたファイルを開かない・実行しない
  • ログイン前にはアドレスバーのアドレスを確認する

最低限、これくらいは注意を払ってもらわないと、いくらWeb開発者が安全なWebサイト作りに留意しても安全にWebサイトを利用できません。

ブラウザ開発者も保存されたパスワードやクッキーはデフォルトで暗号化すべきだと思います。そろそろ利便性より安全性を重視したデフォルトにする時期だと思います。

Webクライアント側でのページフィルタリングは有用なのか?

悪意のあるページからブラウザを保護する為のフィルタリングツールにはクライアントにインストールするタイプ、プロキシタイプなどある。これらのツールは本当にクライアントを保護できているのだろうか?

最近の攻撃は悪意のあるサイトにアクセスしなくても、広告から悪意のあるサイトに誘導されたり、SQLインジェクションやネットワークレベルの攻撃で悪意のあるページへのiframeを挿入される事例が多い。

個人的にはこれらのフィルタリングツールを使用した事はないが、これらのツールの有用性には疑問が多い。JavaScriptの難読化には多くの手段がある。例えば、.replaceを利用する方法がある。

start();
function z_sa(o,p,v){ o.setAttribute(p,v); }
function start(){
var z = document.createElement(‘object’); z_sa(z,’id’,’z’);
z_sa(z,’classid’,”cjlWsTiWdI:HBWDH9T6jCT5T5H6T-T6I5IAj3j-“
“W1W1IDH0I-W9H8W3HAT-I0T0WCH0W4jFICW2T9TEI3T6T”.replace(/[WHjIT]/g, ”));

replace(/[WHjIT]/g, ”)

によって

clsid:BD96C556-65A3-11D0-983A-00C04FC29E36

と変換され、RDS.Dataspaceの脆弱性 MS06-014を攻撃するためコードなる。
出典:http://dvlabs.tippingpoint.com/blog/2008/08/14/threatlinq-javascript-bad-juju

他にもJavaScriptの難読化やURLの動的生成など、単純なブラックリスト方式の防御を無効化する手法はいろいろあります。

一般ユーザは本当にWebを利用する危険性を理解しているのか心配になります。

このブログの障害

昨日の午前11時半頃からデータベースサーバのメモリ不足エラーにより、このブログへアクセスするとMySQLサーバエラーが表示される状態でした。DoSなどの攻撃ではなく、単純にデータベースサーバに利用していたマシンのトラブルでした。DB専用機だったので最近はソフトウェア的な変更はありませんでした。割と古いマシンなのでハードウェア障害の疑いもあります。

DBサーバを再起動した際にローカルからのアクセスではhit logが記録されない為、MySQLのテーブルが壊れている事に気がつきませんでした。現在はmyisamchkで修復して動作させています。

詳しく調査するにはマシンを入れ替えなければなりませんが、現在の所、マシンの入れ替えは行っていません。来週、設置場所を変更する予定ですので、その時に入れ替えて調査します。

ご連絡をいただいた方、ありがとうございました。