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

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

前編はこちらから >>

Part2 ◆改修編
防御機能は多段で備えよう

 「攻撃の勢力が強く,システム全体に影響を及ぼす脆弱性から優先的に塞ぐ」(三井物産セキュアディレクションテクニカルサービス事業部マーケティングマネージャ目崎匠氏)というのがWebアプリケーション改修時の基本的な考え方だ。 その際,防御能力を高めるため,一つの脆弱性を複数の方法で守るようにできるとよい。 攻撃を止められなかった場合に備えて,異常を早期に発見したり,攻撃内容を記録したりする仕組み作りも重要である。

アプリケーションの穴を潰す

 バッファ・オーバーフローや各種インジェクションなど,システム全体への影響度が高い攻撃を防ぐには,サーバーの要塞化や最小権限の設定といった基本を守ることはもちろんだ。

 その上で,Webアプリケーションの入出力データに細工しようとする上記の攻撃に対し,現場では「入出力時のデータ・チェック機能を強化することがまず重要。“信頼できるデータ”を基にアプリケーションで処理できるようにしたい」(XSS*7の脆弱性が見つかった金融業B社の技術者)と考える。

*7 Cross Site Scriptingの略。クラッカがシステムに入力した悪意のあるJavaScriptなどを,閲覧者のWebブラウザに送信してしまう脆弱性。セッション・ハイジャックや,フィッシング用の偽サーバーを見破られにくくするために悪用される。レスポンス時に「<」「>」「&」「"」を「<」「>」…に置き換えるなどのサニタイジングが基本的な対策。

正しい場所でチェックしよう

 データ・チェック機能の強化には,いくつかのポイントがある。金融業B社の例を基に説明していこう(図8)。B社は最初に,従来はバラバラだった入出力データ・チェックのロジックを一元化した。 Webアプリケーションのあらゆる部分で,同じレベルのチェックを実施するためである。チェック内容を強化する際にも対応しやすいメリットがある。

図8 金融業B社は入出力のデータ・チェックを強化
各種インジェクション,XSS,バッファ・オーバーフロー,パラメータ改竄,ディレクトリ・トラ バーサルなどへの耐性を高めるため,入出力のデータ・チェックを強化。(1)チェック機能の 一元化,(2)チェック内容の拡充,(3)チェック個所の適正化――を図った
【クリックで拡大】

 次に,<script>タグなどに対するチェック機能を強化した。危険性が高いと判断した一部の文字は,サニタイジングして通過させるのではなく,禁止文字として受け入れを拒否するなど,ルールも厳格化した。場合によっては,ユーザーの使い勝手を損なうことも覚悟の上という。

 さらに,データをチェックする場所も,適切な位置に変更した。従来は,SQLインジェクションやXSSへの対策として,ユーザーからの入力データを受け取ったときにチェックしていたが,それでは不適切だった。改修後は,SQL インジェクションについては「SQL文をデータベースに渡す直前」,XSSについては「応答ページを生成する直前」に,それぞれチェックするようにした。 「仮に,内部犯がアプリケーションを介さずにデータベースのデータに直接SQL文や<script>タグを埋め込んだとしても無害化できる」(担当した技術者)*8

*8 チェック個所の適正化により,Part 1で示したセカンドオーダーSQLインジェクションのような攻撃も防げるようになる。

チェック機能を多層化して守る

 入出力データのチェック機能は,保守性を考えて一元化するのが定石だが,防御能力を高めるために異なる実装のチェック機能を多層に配置するアプローチもある。

 ウィルソン・ラーニングワールドワイドは2005年9月,企業向けの人材採用支援システム「e2R」に,この考え方を採り入れた(図9)。 セッション・ハイジャック対策やXSS対策などを備えた既存フレームワーク(開発は日本ユニシス)に,異なるSIベンダー製の脆弱性対策ライブラリ「SecureBlocker」(開発はNTTデータ)を上積みした。「既存フレームワークだけでも自信はあったが,最新の攻撃手法などについて片方に漏れがあっても大丈夫なように念を入れた」(葛野氏)。

図9 防御や警戒の仕組みを多段で備える
ウィルソン・ラーニングワールドワイドは,企業向け人材採用支援システム「e2R」のSQLインジェクション対策機能を強化した。従来からフレームワークに搭載していた簡易な対策機能に加え,NTTデータが開発した脆弱性対策ライブラリ「SecureBlocker」で補強。未知のSQL攻撃があると,管理者にメールで警戒を促す仕組みも採り入れた 【クリックで拡大】

 両方のチェック機能をすり抜ける攻撃があっても,管理者にメールで警告したり,詳細なアプリケーション・ログを記録したりという工夫で,攻撃の 早期発見/早期対応も容易にした。

SAFETY JAPAN メール

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