脅威リプレイテスト
¶
実際に到来する攻撃を無害なセキュリティテストとしてリプレイすることで、WallarmのThreat Replay Testingは、従来のセキュリティテストツールでは見逃されがちなアプリケーションやAPIの脆弱性発見という課題に対応します。
Threat Replay Testingの主な機能:
-
リアルタイム分析: 実際の攻撃データを用いて、現在悪用されている、または将来的に悪用され得る脆弱性を特定します。
-
包括的なテスト: 実際の攻撃のバリエーションを生成することで、異なる攻撃ベクトルを探索し、元の攻撃者が見逃した弱点を露出させます。
-
安全なシミュレーション: テストリクエストから有害なコードや機密性の高い認証情報を除去し、テストによって損害やシステム侵害が生じないようにします。
-
本番以外でのテスト: 本番データやシステムの安定性を危険にさらすことなく、安全な環境(通常はステージング)でアプリケーションやAPIをテストできます。
仕組み¶
Threat Replay TestingモジュールはWallarm Cloud上で動作します。まず、モジュールはSecurity Edgeまたはセルフホスト型のフィルタリングノードが検知してWallarm Cloudにアップロードした悪意のあるリクエストに関する詳細情報を収集します。この取得データを活用して、モジュールは約100〜150件のテストリクエスト集合を動的に生成します。これらのテストリクエストは、悪意のあるリクエストと同じ脆弱性タイプを対象にしつつ、異なるペイロードを用います。
生成された攻撃シミュレーションの集合は、元の悪意のあるリクエストと同じ宛先アドレスに送信されます。ただし、モジュールには、これらのテストリクエストをステージングや開発環境、あるいはその両方などの別の宛先へリダイレクトする柔軟性があります。
テストリクエストに対する応答を分析することで、モジュールは特定の攻撃タイプに対する脆弱性の有無を判断します。検出された脆弱性は、Wallarm Console UIのVulnerabilitiesセクションに記録されます。さらに、これらの結果について通知を受け取ることもできます。
次の図はモジュールの動作を示します:
生成されたリクエストにはUser-Agent: Wallarm Threat-Verification (v1.x)
ヘッダーが付与され、他のリクエストと区別しやすくなります。
テストリクエストのセキュリティ¶
Threat Replay Testingモジュールは、可能な限り安全な方法でテストリクエストを生成するよう設計されており、次の重要な特性を備えています:
-
生成されたリクエストの悪意あるペイロードには実際の悪意ある構文は含まれず、攻撃の原理を模倣するためのものです。結果として、リソースに害を与えません。
-
Cookie
、Authorization: Basic
、Viewstate
のような認証ヘッダーはリプレイ対象のリクエストから除外されます。さらに、カスタム認証ヘッダーとマスキングルールの方針に従い、必要に応じて追加のヘッダーを調整または削除する場合があります。
例¶
次のような、Wallarmのフィルタリングノードが最初に検知してWallarm Cloudにアップロードした実際の状況に近いGETリクエストを考えます:
このリクエストから、モジュールは次の点を把握します:
-
攻撃対象のURLは
https://example.com/login
です -
使用された攻撃の種類はSQLiです(
UNION SELECT username, password
というペイロードに基づく判断) -
攻撃されたクエリ文字列パラメーターは
user
です -
リクエストに含まれる追加情報として、リクエスト文字列パラメーター
token=IyEvYmluL3NoCg
があります(おそらくアプリケーションのユーザー認証に使用されます)
このデータを基に、モジュールは一連のテストリクエストを作成します。これらのリクエストは、以下のようにさまざまなペイロードを用いて潜在的なSQLインジェクション脆弱性に焦点を当てます:
https://example.com/login&user=1')+WAITFOR+DELAY+'0 indexpt'+AND+('wlrm'='wlrm
https://example.com/login&user=1+AND+SLEEP(10)--+wlrm
https://example.com/login&user=1);SELECT+PG_SLEEP(10)--
https://example.com/login&user=1'+OR+SLEEP(10)+AND+'wlrm'='wlrm
https://example.com/login&user=1+AND+1=(SELECT+1+FROM+PG_SLEEP(10))
https://example.com/login&user=%23'%23\x22%0a-sleep(10)%23
https://example.com/login&user=1';+WAITFOR+DELAY+'0code:10'--
https://example.com/login&user=1%27%29+OR+SLEEP%280%29+AND+%28%27wlrm%27%3D%27wlrm
https://example.com/login&user=SLEEP(10)/*'XOR(SLEEP(10))OR'|\x22XOR(SLEEP(10))OR\x22*/
制限事項¶
次の場合、Threat Replay Testingは利用できません:
-
リクエスト処理制限のある攻撃
-
脆弱性がすでに解消されている攻撃
-
検証に十分なデータを含まない攻撃
サポートされる攻撃タイプの一覧は、セットアップドキュメントを参照してください。