Webを守る「WAF」と「RASP」の仕組みとは? 両者の違いは?:WAF vs. RASP【前編】
Webアプリケーションの利用が広がる中で、セキュリティ対策も重要となっている。Webを守るツールである「WAF」と「RASP」はどのような仕組みで動くのか。
企業が導入するWebアプリケーションの数が増えるにつれ、各種脅威からWebアプリケーションを保護する重要度が高まっている。そのためのセキュリティ技術が、「Webアプリケーションファイアウォール」(WAF)と「ランタイムアプリケーション自己保護」(RASP)だ。
どちらもWebアプリケーションを保護する仕組みだが、どのように使い分ければいいのか。それぞれの仕組みや特徴を確認しよう。
WAFの仕組みとは
併せて読みたいお薦め記事
Webセキュリティ最前線
WAFはWebアプリケーションとインターネットの間に配置され、トラフィックを監視してフィルター処理を施すことで、セキュリティを確保する。事前定義されたセキュリティ規則を適用して、悪意のあるトラフィックのパターンを特定してブロックする。WAFには主に次の種類がある。
- アプライアンス型
- 専用のハードウェア機器をWebサーバの手前に設置する。
- ソフトウェア型
- Webサーバ自体にWAFのソフトウェアをインストールする。
- クラウド型
- WAFの機能をクラウドサービスで利用する。
WAFはWebアプリケーションの外側で機能するため、Webアプリケーションをコード修正せずに保護できる。このような性質からWAFは複数のWebアプリケーションに実装しやすい。
WAFはSQLクエリ(データベース言語「SQL」による問い合わせ)に悪意のある操作を挿入する「SQLインジェクション攻撃」や正規のWebサイトに不正コードを注入して悪意のあるスクリプトを実行する「クロスサイトスクリプティング」(XSS)といった一般的なWeb攻撃からアプリケーションを保護することに長けている。
例えば、「1' OR '1'='1」といった典型的なSQLインジェクション攻撃を見てみよう。WAFは、このテキストパターンをSQLインジェクション攻撃の特性として認識して入力をブロックする。この処理には正規表現のパーサー(解析ツール)が使用されるのが一般的だ。
Runtime Application Self-Protection(RASP)
RASPはWAFより新しいアプローチのセキュリティ技術だ。WAFと異なり、RASPはWebアプリケーションのコードに直接組み込まれ、内側から監視および保護する。直接組み込まれることで、RASPはアプリケーションが何をしているのか、どのような状況なのか、どういうロジックで動いているのかをリアルタイムで正確に把握できる。
RASPは一般的に、Webアプリケーションのランタイム環境(プログラムが実行されるための基盤)である「Java仮想マシン」(Java VM)や「CLR」(Common Language Runtime)などに埋め込まれる。こうすることで、RASPはWebアプリケーションの内部で「どの関数が呼び出されたのか」「どのデータがどこに流れたのか」といった情報を把握できる。
再びSQLインジェクション攻撃を例に考えよう。RASPはSQLインジェクション攻撃に対してWAFとは異なる処理をする。RASPはWebアプリケーションがデータベースに送ろうとしている本来のSQLクエリを、Webアプリケーションの内部から直接把握する。RASPは入力されたクエリから、クエリの抽象構文木(ソースコードを木構造で表現したもの)を作成し、実際にデータベースに送られるSQLクエリが、Webアプリケーションが本来意図していた正しい構文と一致するかどうかを比較する。
正しい構文と一致すれば、SQLインジェクション攻撃は行われておらず、クエリの安全性が保証される。「1' OR '1'='1」などのSQLインジェクション攻撃は、論理演算を含む形に変更されているのが一般的だ。RASPは、このような変更をインジェクション攻撃と判断して、リクエストをブロックする。RASPではクエリ自体の形式や値ではなく、開発者が意図した構文と異なっているかどうかという、より本質的な部分で判断する。
次回はWAFとRASPをセキュリティ機能、コストや運用の観点から比較する。
TechTarget発 先取りITトレンド
米国Informa TechTargetの豊富な記事の中から、最新技術解説や注目分野の製品比較、海外企業のIT製品導入事例などを厳選してお届けします。
Copyright © ITmedia, Inc. All Rights Reserved.