2018年7月26日、Imperva社はアプリケーション向けのセキュリティソリューションを提供するPrevoty社を買収する予定であることが発表されました。
Impervaブログ記事:https://www.imperva.com/blog/2018/07/imperva-to-acquire-dev-ops-security-leader/
Prevoty社はForrester社の調査(※)で、RASP(Runtime Application Self Protection)の分野で、唯一のリーダーとして評価されています。
日本ではまだなじみの無い分野ですが、一体どのような製品なのでしょうか。
NVCのエンジニアが解説します。
※The Forrester New Wave™: Runtime Application Self-Protection, Q1 2018
RASPが必要な理由
増え続けるアプリケーションへの攻撃
最近、悪意のあるアプリケーションがOSの機能や不備を使って他の正常なアプリケーションを乗っ取り、システムへの攻撃やデータを盗み出すことが増えています。
オンプレミスな実行環境であれば、実行時に使用するライブラリの配置や同時に実行するアプリケーションなどを固定し安全な環境を用意することができます。
しかし、ほとんどのアプリケーションはそのような安全な環境では実行されません。例えば、PC/Macなどのパソコン、AndroidやiPhoneのようなスマートフォン、クラウド(IaaS)などの仮想環境などでは、同じCPU/ストレージを使って様々なアプリケーションが同時に実行されています。このような環境では同じ名前のライブラリファイルをそれぞれのアプリケーションが個々にインストールしていることもよくあります。
攻撃手法の例
先に書いたような実行環境では、アプリケーションは安全とは言えません。アプリケーションへの攻撃方法はいろいろありますが、以下のものがよく使われます。
DLLインジェクション/DLLハイジャックとAPIフックの組み合わせ
この攻撃では、まず攻撃対象のアプリケーションに攻撃者が用意したDLL(動的読込ライブラリ)を読み込ませます。これによってアプリケーション内に攻撃コード(プログラム)が組み込まれます。次にAPI呼び出しがこのDLLを向くよう書き換えます(APIフック)。これによってアプリケーションの正常な動作の中で攻撃者のDLL内のコードが実行されるようになります。
この手法での攻撃例を挙げると、webサーバだけが開ける秘密データが入っているファイル”authinfo.db”があるとします。攻撃者はまずWebサーバにDLLを組み込みAPIをフックします。そしてwebサーバが”foobar.html”というファイルを開こうとするとDLL内でファイル名を”authinfo.db”に書き換えてからOSのAPIを呼び出すようにします。この後に外部からwebサーバに”foobar.html”を要求すると、秘密データが入った”authinfo.db”が送信されます。いったんDLLを組み込めば、このファイル名の書き換えは自由に行なえます。つまりwebサーバが読み出せるファイルは何でも外部から取得できます。
DLLを組み込む手法は二つあります。一つは実行中のアプリケーションに本来不要な攻撃者が用意したDLL(動的読込ライブラリ)を読み込ませるDLLインジェクション、もう一つはアプリケーションが起動時に読み込むDLL(動的ライブラリ)を、本来使われるものではなく攻撃者が用意したものとすり替えるDLLハイジャックです。
カーネルドライバ組み込み
攻撃プログラムをカーネルドライバとしてOSに組み込みます。通常これには管理者権限が必要となりますが、OSやツールのセキュリティホールを使うことで権限無しでも組み込み可能なことがよくあります。
カーネル内で動作するプログラムはOSの全機能を自由に乗っ取ることができるため、先に挙げたファイル名書き換えなどの攻撃を行なうことができます。
攻撃の検知
アプリケーションが実行されるOSから見ると、これらの攻撃はアプリケーションの通常の動作と区別することができません。OSで制限し保護する手法も開発されてきていますが、アプリケーションの動作に悪影響を与えたり設定が煩雑で難しいものが多く普及していません。
これはセキュリティソフトウェアにとっても同様です。
つまり攻撃されているかどうかをOSやセキュリティソフトウェアが検知することはほぼできません。攻撃を検知できるのはアプリケーション自体だけです。
[SMART_CONTENT]
一般的なRASPの機能
RASPの機能
アプリケーション自体が攻撃を検知し保護する機能がRASPです。
今までもアプリケーション開発時のセキュアコーディングやアプリケーション実行時の権限設定などでアプリケーションの「静的な保護」は行なわれてきました。ですがこれらの方法ではアプリケーション実行中に行なわれる予測不能な「動的な攻撃」に対処できません。
RASPはこの動的な攻撃に対処するためのものです。
RASP製品は以下のようなことを検証することができます。- 起動直後に正しいDLLのみが組み込まれているか
- 動作中にコードやデータが書き換えられていないか
- 動作中に予定外のDLLが組み込まれていないか
- APIフックが行なわれていないかを検証する
- 動作している実行環境が本来のものであるか(デバッガ上で動いているなら攻撃者が解析している可能性が高い)
攻撃を検知した場合には以下のような動作をします。
- アプリケーションを正常終了する
- 外部の監視システムへ通報する
- 書き換えられたコードやデータを正しいものへ戻す
RASPの採用
RASPはその仕組み上アプリケーションに組み込んで使用するため、アプリケーションの書き換えが必要となります。このためアプリケーションを新規開発するときにRASPを採用することが多くなっています。
ですが、RASP製品によっては既存のアプリケーションを書き換えなくても使用できるものもあります。この場合はRASP製品がアプリケーションを包み(ラップし)実行させます。
[RELATED_POSTS]RASP分野のリーダー Prevotyを買収したImperva社
2018年7月26日、Imperva 社はPrevoty社と買収に関する契約の締結を発表しました。今回の買収の目的として、Imperva社は「Imperva社のビジョンは、アプリケーションとデータをサイバー犯罪者から守るための戦いをリードすることにある。Prevoty社の製品(Autonomous Application Protection)は、アプリケーションサービスを、end to end、ネットワークエッジからアプリケーショ自体の中まで、そして最終的にはデータが保存されている様々なデータベースまで、Impervaソリューションの保護機能を拡大させていく。」とコメントしています。
これまでも、今では日本でも名が知れてきたクラウドWAFのIncapsulaや、内部脅威をあぶりだすCounterBreachなど様々な最先端分野のリーディングカンパニーの製品を買収によってソリューションに組み込んできたImperva社。Prevoty社の製品が、どのようにImpervaソリューションに組み込まれるのか、今後の発表が楽しみです。
- トピック:
- Imperva
- セキュリティ対策機器
- ネットワーク