特集:
緊急点検!Webアプリ・セキュリティ(前編)
多層の防除ラインでシステムを守る

Webアプリケーションの脆弱性を狙った攻撃が急増する今,システムの緊急点検が不可欠だ。 「対策している」と過信して,被害の発生にすら気づかない現場も少なくない。 早急に脆弱性の有無を見極め,穴があれば効率よく塞ぐ必要がある多層の防御ラインの形成が,システムを守る要となる。

文/実森 仁志(日経システム構築)
2005年12月12日

後編はこちらから >>


●編集長からのメッセージ

 『日経システム構築』は“現場のSEを徹底サポートする”をキャッチコピーに,企業情報システム/ネットワークの設計や構築,運用の現場のエンジニアが日々直面する問題・課題を解決する月刊の実務専門誌です。  問題解決のヒントは“生”の成功事例・失敗事例にこそあるという考えのもと,誌面全体を通じて年間300社以上の豊富なユーザー事例を掲載。他の情報源からはなかなか得られない現場の活きたノウハウで,エンジニアの皆様を強力にバックアップしています。  セキュリティに関しては,今回の「SAFETY JAPAN 2005」サイトでご紹介する記事を含め,2005年はすでに特集記事を4回掲載。また,セキュリティの危険な実態を現場から生々しくレポートする連載コラムにも力を入れており,読者の皆様から好評です。今後も『日経システム構築』をよろしくお願いいたします。
(杉山 裕幸/日経システム構築 編集長)

 「パッチさえ適用していれば大丈夫と思っていた」――。 2005年になってクラッカに攻撃されたあるコンテンツ業者の担当者は,当時をそう振り返る。

 攻撃に気づいたのは,システムの開発・運用を任されていた緒方氏(仮名)だった。 サービスが不安定になったためにWindowsベースのシステムを調 査するうち,一部のHTMLファイルが改竄されていることを突き止めた。

 翌日にはサービスを停止して調査した。 OSなどのパッチは適用済みだったが,データベースのテーブルに何者かがアクセスした痕跡があった。

 緒方氏は,ウイルス対策ソフトのパターンを更新し,ファイアウォールの設定も強化した。 アプリケーションからデータベースに接続するアカウントが管理者権限だったので,念のため特 定テーブルだけ読み書きできる最小権限の専用アカウントに切り替えた。 一部のシステムは,個人情報を隔離することでサービスを再開した。

 だが,システムが不安定な状況は止まらない。 数日後には,本来は表示されないはずのベーシック認証のダイアログボックスが表示されるようになった。 サーバーのCPUも,平常時では考えられないほどに消費されている。 危険を感じ,再びサイトを閉鎖した…。

不正なSQL文を送り込まれた

 結果から言えば,このコンテンツ業者のWebシステムは「SQLインジェクション」と呼ぶ手法で攻撃された。SQLインジェクションとは,Webアプリケーションを通じてデータベースに不正なSQL文を送り込む攻撃だ。 データベースの内容を読み書きされる被害が中心だが,緒方氏はOSコマンドを呼び出すSQL Serverのストアド・プロシージャ(xp_cmdshell)を有効にしていたので,攻撃対象はデータベース以外にまで広がった。

 SQLインジェクションは,ユーザーの入力データなどをWebアプリケーションでチェックし,危険な文字を無害化する処理(サニタイジング)を徹底すれば防げる。 緒方氏はSQLインジェクションの名前こそ知っていたものの,実際に攻撃された話を聞いたことがなかったので,サニタイジングに代表される対策はしていなかった。

 緒方氏はサーバーを再構築。Webアプリケーションにサニタイジングを追加し,SQL Serverのxp_cmdshellを無効化。IDS(侵入検知システム)も導入してサービス再開にこぎ着けた。

 それから3カ月後,過去のログの解析を終えた緒方氏は,さらなる驚愕の事実に直面する。 改竄事件の約半年前に,数万件にのぼる個人情報を奪われていることが分かったのだ(図1)。 中国系のサイトで公開されていた攻撃ツールによる仕業だった。

図1 Webアプリケーションの脆弱性によって情報奪取と改竄を許した クラッカは,「顧客番号」を入力するはずのフィールドに「顧客番号+不正なSQL文」を入力した。これにより,サーバー側のアプリケーション が組み立てるSQL文が,想定外の動きをするSQL文に変わってしまった
【クリックで拡大】

Webアプリが狙われている

 この事例から分かるように,もうOSやミドルウエアへのパッチ適用だけでWebシステムを守れる時代は終わった。 Webアプリケーション・レベルの脆弱性を突く攻撃が急増しているからだ。 SQLインジェクションはその一例に過ぎないが,「企業の最深部にあるデータベースにいきなり侵入 されてしまうので被害は計り知れない」(NRIセキュアテクノロジーズ事業開発部セキュリティエンジニア佐藤健氏)。 今後はフィッシング詐欺を狙い,「クロス・サイト・スクリプティング(XSS)」や「クロス・サイト・リクエスト・フォージェリ」などの攻撃(図2)が増える可能性が高い。

 Webアプリケーションの脆弱性が危険であることは以前から指摘されていたが,最近は簡単に使える攻撃ツールが増えたことで,一気に緊急度が増した。中国系のクラッカ・サイトを調べると,Active Server Pages用,PHP用,SQL Server用など,各環境用の攻撃ツールがより取りみどりである。

図2 Webアプリケーションに対する攻撃例【クリックで拡大】

ろくにテストされていない

 ところが,システムの実態はどうか。 「Webアプリケーションは予算も納期もギリギリで発注している。 稼働後の機能拡張も少なくない。 構築や改修を委託するSIベンダーの力量を信じているが,脆弱性が全くないとは思えない」(ライオン統合システム部椎名淳之氏)。 これは,多くの現場担当者の偽らざる思いだろう。

 現実にSIベンダーの証言からは,脆弱性テストが十分に行き届いていない実態が浮かび上がってくる。「開発費は1画面当たり約20万円。 脆弱性テストの費用もほぼ同額だ。ユーザー企業から特別な要望がない限り,改めて脆弱性テストを実施することはまずない」(大手メーカー系技術者)。

SAFETY JAPAN メール

日経BP社の書籍購入や雑誌の定期購読は、便利な日経BP書店で。オンラインで24時間承っています。