Webアプリケーションへの攻撃を原因とした情報漏えい事件が多発しています。こうした攻撃に対処するには,アプリケーションを多面的に診断し,信頼性を脅かす要因を確実に把握する必要があります。それを踏まえたうえ,適切な対策を講じておくことが大切です。

 前回は社内LANで実施すべきセキュリティ診断を一通り説明しましたが,Webアプリケーションの診断に関してもう少し詳しく説明しましょう。Webアプリケーションのぜい弱性を突いた攻撃が相次いでおり,より厳重な対策が必要になっているからです。Webアプリケーションは多面的に診断し,アプリケーションの信頼性を脅かす要因への対策が適切に行われているかどうかを確認しなくてはなりません。

4分の3のWebアプリは危ない


図1 Webアプリケーションの4分の3には情報漏えいにつながりかねないぜい弱性が潜む
ぜい弱性が見つかったWebアプリケーションの57%は,重要情報へのアクセスが可能だった。ただし,ぜい弱性が見つからなかったサイトは「安全」というわけではない。あくまで診断した時点でぜい弱性が見つからなかったにすぎない。
[画像のクリックで拡大表示]

表1 主なWebアプリケーションの診断項目
[画像のクリックで拡大表示]

 NRIセキュアテクノロジーズは2004年度に,105のWebアプリケーションを診断しました。その結果,76%のWebアプリケーションに情報漏えいにつながる恐れがあるぜい弱性が見つかりました(図1[拡大表示])。見つかったぜい弱性としては,例えばほかのWebアプリケーションから悪意のあるスクリプトを実行させられるクロスサイト・スクリプティング*があります。「簡単に推測されるパスワードを登録させない仕組み」を実装していないケースも見受けられました。

危険が生じやすいポイントを理解する

 さらに,ぜい弱性が見つかったWebアプリケーションの57%は,そのぜい弱性を利用して「重要情報に不正にアクセスできる」ことが確認されています。こうしたWebアプリケーションからは,(1)アプリケーション間の関連性チェック不足によるなりすまし(発見率75%),(2)SQLインジェクション*によるデータベースの不正操作(同48%),(3)権限昇格による管理者機能へのアクセス(同25%)──など,多くのぜい弱性が見つかっています。いずれも,本来閲覧できない情報に対して不正にアクセスして大量に情報を取得することが可能であるため,大きな問題と言えるでしょう。

 (1)のなりすましは,ログインに成功したユーザーが何らかの詳細情報にアクセスするときに,詳細情報に付けられたIDを意図的に書き換えることで発生します。これで,別のユーザーの情報にもアクセスできるようになってしまいます。ユーザー情報と詳細情報に付けられたIDの関連性を,アプリケーションが適切にチェックしていないことが主な原因です。

 (2)のSQLインジェクションは,アプリケーションがデータベースにアクセスする際,ユーザーがフォームから入力した値が適切かどうかを十分にチェックしていないことを突いた攻撃です。悪意を持ったユーザーが,データベースを操るコードをフォームに入力して実行。データベースに格納された全情報を取得されたり,データベースが破壊される恐れがあります。

 (3)の権限昇格による管理者権限へのアクセスとは,管理者向けの設定画面に十分なアクセス制御を施していないことなどを突く手口です。管理者向けの画面を,不用意に不特定多数に向けて公開しているケースもあります。URLに含まれる画面IDを一部変更すれば,管理者と同じ操作をされてしまう危険すらあるのです。

Webアプリの診断で不正な情報取得を阻止

 Webアプリケーションのぜい弱性を減らすには,アプリケーション開発体制の見直しとセキュリティ・チェックが不可欠です。セキュリティ・チェックとしては,Webアプリケーション診断が効果的です。その診断項目は多岐にわたります(表1[拡大表示])。ブラウザを通してパラメータにさまざまな文字列を入力し,その結果から不正アクセスが可能かどうかなどを検証します。

 診断結果に基づいて,現状を把握したり個別に対策を立てることはもちろん重要です。しかし抜本的に問題を解決するには,開発段階でぜい弱性が作られにくい体制を築くことが不可欠です。開発ガイドラインやチェック・シートを準備して,開発段階で作業内容を適宜見直すルールを決めてもよいでしょう。安全なログインやセッション管理方式,フォームからの入力値をチェックする機能を盛り込んだ「フレームワーク*」を準備することも有効です。

 Webアプリケーションの問題は,「設計自体に問題がある」,「ほんの数カ所の対策漏れのために問題が顕在化した」などの形で出てきます。しかし設計後のレビューや,実装前にわずかな時間を割いてルール決めと周知を実施するだけで,多くの場合は防げるのです。


菅谷 光啓 NRIセキュアテクノロジーズ情報セキュリティ調査室長
観堂 剛太郎 NRIセキュアテクノロジーズ情報セキュリティ調査室 セキュリティエンジニア