2009-11-23
富士通(中国)信息系統有限公司
インターネットの利用を前提とした業務を実現するシステムは、数多くありますが、見落とされがちなのはアプリケーションのセキュリティ対策です。特に、個人を対象にしたシステム(たとえば、通販やチケット予約など)にセキュリティ上の問題(脆弱性)がある場合には、極めて深刻な事態が引き起こされかねません。
通信販売のサイトや航空会社の予約サイトなどをよくご利用される方は、買いたい商品名やわからない言葉などを画面上のボックス(箱)に入力して、検索ボタンを押して、表示された結果を見て更に先に進むなどされたことがあると思います。
通常、インターネットでサービスされるシステムには、画面に多くのボックスがあって、必要事項を 入力することで、処理を行わせます。
ボックスの大きさは、処理に必要十分な大きさが用意されるものですが、このボックスにとんでもない桁数の文字列や数字列をいれこまれたときにプログラムが処理できず、異常終了となってしまうケースがあります。プログラムが異常終了となっても、接続はいきています。
この接続を利用して、侵入者は、好きなことを行えます。問題は、送信された文字列に対して、処理を適切におこなっていないことにあり、この脆弱性を「バッフアオーバーフロー」とよんでいます。
プログラムの動作によっては、それまで接続していたプログラムと同じ権利が侵入者に与えられてし まいます。
例えば、管理者権限で稼動させているプログラムにバッフアオーバーフローの脆弱性があり、これを知られてしまった場合、侵入者は、管理者属性でサーバを扱えることとなります。まさに、サーバに対して好きなことができる=乗っ取られる=可能性がでてきます。
検索用ボックスに入力された値を、DBに対する操作言語SQLに検索値として組み込こんで、処理します。
この文字列に、たとえば、常に「真」となるような検索式に書き換え、すべての情報を引き出す手口を「SQLインジェクション」と読んでいます(図4-1)。これは、サーバのプログラム側が、入力された文字列をチェックや適切な文字変換処理(エスケープといいます)を怠って、そのまま利用していると起こります。

図4-1 SQLインジェクション
最近でも、日本のあるサイトから、利用者のクレジットカード番号が漏洩したという報道がされていましたが、内部犯罪や社員のPCからの流出以外の多くが、SQLインジェクションの脆弱性を突かれたものであるといわれています。
インターネットの世界でいう「信頼できるサイト」すなわち、人をひっかけるとか、だますとかいった「悪意をもったサイト」ではない、本当に業務やサービスをおこなっているサイトでも、悪意を持った人に利用され、深刻な問題を引き起こすのが、「クロスサイトスクリプティング(XSS)」という脆弱性です。
これは、プラウザが、単に送られてきたものをそのまま表示するだけでなく、「スクリプト」といわれる定められた文法に乗っ取っていれぼ、勝手に動作してしまう機能を悪用するものです。
脆弱性の存在するサイトを知った「悪意のある人」が、案内ページやメールなどを通じて、一般の人をそのサイトに誘導します。一般の人(被害者)が、案内のURLをクリックすると、そのサイトに接続するのですが、そのサイト自身から、悪意の人が仕込んだ画面が、さもそのサイトのぺージであるかのように、一般の人の画面に表示されるのです。(図4-2)

図4-2 クロスサイトスクリプティング
偽のサイトで利用者をだまして、情報を盗もうという手口がフィッシングですが、クロスサイトスクリプティングの脆弱性を利用する手口は、本当のサイトの情報である分、高度な手口といえます。
サイトを悪用されるという意味では、サイトのオーナーは被害者ですが、一般の利用者に被害を与えるという意味では、クロスサイトスクリプティングの脆弱性があることは、「加害者」になりうると言われています。
クロスサイトスクリプティングの脆弱性は、アプリケーションやミドルウェアおよびOSなどあらゆるものの、クライアントに対するHTMLの出力時にスクリプトとして解釈される文字を表示するための文字列に変換する(サニタイジングといいます)ことで、対応します。例えば、「<」は「<」「>」は「>」というように処理します。
インターネット上のセキュリティホールが実際に悪用されている場合、悪用している人が、わざわざ教えてくれるはずもありません。
アプリケーションで発見された脆弱性は、悪用されていないことを確認する必要もありますし、他にないことを確認(証明)することには、膨大な時間を要する場合がほとんどです。結果、長期間におよぶサイトの停止をまねきます。また、万一事件となった場合には、損害賠償などサイトのオーナーの被る損失も莫大なものとなります。
ここにあげた脆弱性は、代表的なものであり、その他多くのものが指摘されています。(図4-3)

図4-3 日本で報告された脆弱性と引き起こされる脅威
インターネットでシステムを構築する場合には、設計当初からの、セキュリティの作りこみが重要です。セキュリティを考慮したプログラミングをセキュアプログラミングといいますが、この実現にためには、プログラミング実装技術だけでなく、セキュリティに関する知識が不可欠です。
特にインターネットのシステム構築をアウトソーシングする場合には、必ず、要求仕様書の段階で、「アプリケーションセキュリティ対策を施すこと」という要件をいれることと、信頼できる業者に委託することおよび、実装計画、テスト計画の説明を受け、専門家の助けも借りてその実装を評価することが重要です。
(※本ニュースは、漫歩創媒が発行した「Whenever BizCHINA」の転載です)
富士通(中国)信息系統有限公司
企画部
陳永昶(日本語可)
電話: 021-5887-1000/8821
Fax: 021-5877-5283
E-mail:sales@cn.fujitsu.com
以上