注目を集める"Webアプリケーションのセキュリティ対策"(2)
〜RSA Conference 2003 Japan クラストラックセッションレポート〜
特集
特集
〜[前号より]〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 セキュリティによる被害を自動車事故に例えて考えてよう。事故の原因は自動車または運転者のどちらか、もしくは両方が原因となる。事故を防ぐためには自動車の点検・整備を実施し、運転者が安全運転をしなければならない。自動車をWebサーバ、運転者をWebサーバ上で動いているWebアプリケーションとイメージして頂きたい。自動車の問題に対処することは前述のファイアウォールの設置やWebサーバの管理などにあたる。運転者の問題に対処することがこれからの内容になる「Webアプリケーションのセキュリティ対策」を意味する。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
さて、前置きが長くなったが、RSA Conference 2003 Japanにて、クラストラックセッションに「Webアプリにおけるセッション追跡の欠陥とその自動検出方法」を聴講した。セッションの内容はRSA Conferenceの講演者向けのサイトに問題が発見されたことから始まり、Webアプリに関する様々な問題点について例を交えながら説明して頂いた。セキュリティカンファレンスのサイトですら問題が存在していたのである。私を含めた聴講者は現状のWebアプリケーションのセキュリティがいかにずさんかを思い知らされることになった。
その問題とは、講演のタイトル通りセッションに関する問題点であった。一般のアクセスと特別なアクセスを区別するためには、ユーザ名とパスワードを設定する手法がよく使用され、今回の例となった講演者向けのサイトでも同様の手法が使用されていた。しかし、ログイン後に表示された各種情報ページのURLを直接ブラウザに入力してみると、ユーザ名とパスワードの入力画面を迂回して直接各種情報ページにアクセスできてしまったのである。URLさえ知っていれば誰でもアクセスが可能な状態だったのである。ちなみに、問題があったサイトではフレームを使用していたので直接URLを見ることはできなかったようだが、それが無意味であることは説明する必要はないだろう。
実はこういったことが可能なサイトはそれほど珍しくない。URLの入手をどうするかという問題も場合によっては簡単に解決できる。例えば、会員制のサイトで一度会員になれば会員ログイン後のURLを入手することは当然可能である。後は、入手したURLを直接ブラウザに入力してその結果を確認するだけだ。いずれにしても、認証が必要なページへのアクセスは、適切に認証を受けた場合のみ表示されるという設計であり、それが正常に機能していることを確認する必要がある。そして、講演者の説明のとおりその確認はいたって簡単な作業で実施できる。制作側がそれを「やれない」のか「やらない」のかは定かではないが、手作業でやると非常に面倒な作業であることは確かである。
また、URLを直接入力するだけではなく、パラメータに簡単な修正を加えるだけで問題が発生する場合もある。例えば、以下のURLはオンラインストアで商品をショッピングカートにいれた場合のものだとする。
http://www.SERVER.com/shopping.cgi?customerid=1234&number=1&price=1000
ご存じの通りWebアプリケーションの作り方によっては、ブラウザに入力された情報はURLパラメータとなりサーバに送信される。上の例では変数
customeridに値1234、変数numberに値1、変数priceに値1000が入力(設定)されていることを意味する。URLを閲覧するだけで、「顧客番号は1234で、商品番号1番で価格は1000円の品がショッピングカートに入っている」というイ
メージが簡単についてしまうだろう。これを以下のように書き換えてみる。
http://www.SERVER.com/shopping.cgi? customerid=1234&number=1&price=10
株式会社ネットワークセキュリティテクノロジージャパン
技術統括部・部長 岩崎哲也
102-0083 東京都千代田区麹町2−2麹町鈴木ビル3F
TEL 03-3515-1010 FAX 03-3515-7161
(詳しくはScan本誌をご覧ください)
http://shop.vagabond.co.jp/m-ssw01.shtml
《ScanNetSecurity》