アプリケーション保護機能は、ランタイム アプリケーション セルフプロテクション(RASP)テクノロジーに基づいて構築されています。コードを変更することなく、アプリケーションの実行中に攻撃を検出し、保護を提供します。 アプリケーションを実行するサーバーまたはコンテナーに RASP エージェントをインストールするだけで済みます。 この機能は、ほとんどの未知の脆弱性を悪用する攻撃からアプリケーションを保護します。
仕組み
アプリケーション保護機能は RASP テクノロジーを採用しています。この機能は、フックを使用して、アプリケーションと他のシステム間の相互作用をリアルタイムで監視します。 アプリケーションで疑わしい動作が検出されると、この機能はコンテキストに基づいて攻撃を識別してブロックします。 これにより、アプリケーションの脆弱性、ゼロデイ脆弱性、およびサーバー上の Web プロセスで検出されるメモリ内の Webshell から保護するのに役立ちます。
シナリオと利点
アプリケーションの内部セキュリティを保護する:この機能は、保護したいアプリケーションの動作のみを監視し、トラフィック ソースに関係なく、南北および東西のトラフィックからの脅威からアプリケーションを保護します。 この機能は、アプリケーションの起動直後に有効になります。 この機能は、アプリケーションの最後の防衛線として機能します。
複雑なコードと暗号化されたトラフィックを簡単に処理する:この機能は、アプリケーションのコンテキストを解析できます。 リクエストが不正な形式であっても、アプリケーションの最終的なアクションを監視します。 この機能は、リクエスト送信者の ID と予想されるアクションが一致しない場合に異常を検出できます。 暗号化されたトラフィックを監査できないネットワーク境界デバイスとは異なり、この機能はアプリケーション内で完全に復号化されたリクエスト データにアクセスできます。
誤検知と偽陰性を低く抑えてゼロデイ脆弱性を防御する:この機能は、重要な機能アプリケーションの実行を分析します。 悪用されにくい脆弱性を識別して無視し、大量の誤検知と偽陰性を減らすことができます。 RASP は、攻撃者が攻撃ポータルを変更したり、高度な攻撃方法を使用したりしてもバイパスできない重要な機能の実行プロセスを監視することにより、ゼロデイ脆弱性を検出してブロックできます。
攻撃元を追跡し、脆弱性を修正する:この機能は、セキュリティ担当者と開発者に、元の攻撃ペイロードとコード呼び出しスタックを含む詳細な攻撃パスを提供します。 これにより、脆弱性を特定、再現、および修正できます。
O&M コストを削減する:この機能のデプロイは簡単です。 Security Center コンソールでアプリケーションを接続するだけで済みます。 特定のルールを維持または更新する必要はありません。
制限事項
この機能は、Java アプリケーションと PHP アプリケーションでのみ使用できます。 Security Center エージェントがインストールされているサーバーでこの機能を使用できます。 サーバーは、Elastic Compute Service(ECS)インスタンス、サードパーティ クラウド サービス プロバイダーのクラウドサーバー、またはデータセンター内のサーバーにすることができます。 次の表に、Security Center エージェントでサポートされているオペレーティングシステムを示します。
オペレーティングシステム | サポートされているシステムバージョン |
Windows ( 64 ビット) |
|
Linux ( 64 ビット) |
|
機能
アプリケーション分析
アプリケーション動作分析機能は、接続されたアプリケーションをリアルタイムで監視し、アプリケーション動作データを収集および分析し、レポートを生成および視覚化します。 この機能は、アプリケーションの攻撃と防御の詳細を理解し、システム セキュリティを強化するのに役立ちます。 詳細については、「アプリケーション分析機能を使用する」をご参照ください。
攻撃アラート
次の表に、アプリケーション保護機能が検出して防御できる攻撃のタイプと、各タイプの攻撃を防御するためのソリューションを示します。
攻撃タイプ | 説明 | ソリューション |
JNI インジェクション | Java Native Interface (JNI) インジェクションは、RASP テクノロジーをバイパスする一般的な方法です。 攻撃者は、コードを実行する権限を取得した後、JNI 関数を使用して外部の悪意のある動的リンク ライブラリを呼び出すことができます。 このようにして、攻撃者は Java レイヤーでのセキュリティ保護をバイパスし、特定の悪意のある動作を隠蔽できます。 | サーバーにコード実行の脆弱性がある可能性があります。 脆弱性の場所を確認し、コードを実行する権限を制限します。 |
SQL インジェクション | SQL インジェクション攻撃は、Web リクエストまたは Web フォームのクエリ文字列に SQL ステートメントを挿入し、サーバーに SQL ステートメントを実行させます。 攻撃者は、Web フォームに SQL ステートメントを挿入することにより、セキュリティ上の脆弱性がある Web サイトのデータを取得できます。 | SQL インジェクションは、SQL ステートメントを連結することによって発生します。 入力パラメーターをプリコンパイルするか、ホワイトリストとブラックリストを使用して連結パラメーターを制限します。 |
XXE | XXE インジェクションは、XML 外部エンティティ インジェクションの略です。 XML ファイルが外部エンティティを参照している場合、攻撃者は悪意のあるコンテンツを構築して、任意のファイルの読み取り、コマンドの実行、および内部ネットワーク攻撃を引き起こす可能性があります。 | アプリケーションが XML ファイルを解析するときに外部エンティティを読み込む必要があるかどうかを確認します。 必要ない場合は、XML 解析構成で外部エンティティを無効にします。 |
悪意のある DNS クエリ | 攻撃者は、複数の方法を使用して悪意のあるドメイン ネーム システム (DNS) クエリを悪用する可能性があります。 攻撃者は、DNS プロトコルを使用して機密情報を内部ネットワークから持ち出す可能性があります。 また、攻撃者は DNS プロトコルを使用して、内部ネットワーク システムにサーバーサイド リクエスト フォージェリ (SSRF) や Java Naming and Directory Interface (JNDI) インジェクションなどの脆弱性があるかどうかを確認する可能性があります。 | 悪意のある DNS クエリは、ユーザー制御パラメーターに対するサーバー リクエストによって発生します。 パラメーター設定を確認し、ホワイトリストを構成します。 |
悪意のあるリフレクション呼び出し | RASP のセルフプロテクション モジュールは、攻撃者が実行時にリフレクションを使用して RASP データを変更することを禁止します。 | サーバーにコード実行の脆弱性がある可能性があります。 脆弱性の場所を確認し、コードを実行する権限を制限します。 |
SSRF | SSRF は Web の脆弱性であり、攻撃者はサーバーサイド アプリケーションに HTTP リクエストを実行させることによって Web サイトの内部システムを攻撃できます。 | SSRF の脆弱性を修正するには、サーバー リクエストのターゲット IP アドレスを制限し、ホワイトリストを介して安全な内部リソースへのアクセスのみを許可し、不要な外部ネットワーク アクセスを無効にします。 |
悪意のあるファイルの読み取りと書き込み | Java は、ファイルの読み取りおよび書き込み操作用に RandomAccessFile クラスを提供します。 このクラスを使用してファイルの読み取りと書き込みを行う場合、ファイル パスまたはファイルの内容を制限しないと、攻撃者が機密性の高いシステム ファイルを読み取ったり、トロイの木馬ファイルをアップロードしたりする可能性があります。 | 期待どおりにファイルを読み書きできるかどうかを確認します。 例外が発生した場合は、関数コードを確認し、ブラックリストを構成します。 |
悪意のあるファイルのアップロード | Web サイトで提供されるファイル アップロード機能の場合、ファイルのタイプが制限されていないと、攻撃者はトロイの木馬ファイルをアップロードすることでサーバーでより高い権限を取得する可能性があります。 これは深刻な害を引き起こします。 | アップロードできるファイルのタイプを制限し、Jakarta Server Pages (JSP) ファイルなど、実行権限を持つファイルのアップロードを禁止します。 |
コマンド インジェクション | コマンド実行の脆弱性により、攻撃者はサーバー上で任意のシステム コマンドを実行できます。 | ほとんどの場合、リモート コマンドの実行は、Webshell またはサーバーのリスクの高いコードによって発生します。 コマンドが実行される場所を確認します。 コマンドの実行が Webshell によって発生した場合は、Webshell をすぐに削除します。 サーバーの通常の機能を実装するためにコマンドが実行される場合は、ホワイトリストを構成して実行できるコマンドを制限します。 |
ディレクトリ トラバーサル | Web サイトの構成上の欠陥により、Web サイトのディレクトリが任意に閲覧される可能性があります。 これにより、プライバシー情報が開示されます。 攻撃者は、開示された情報を使用して Web サイトを攻撃する可能性があります。 | Web サイトのディレクトリが期待どおりにトラバースできるかどうかを確認します。 例外が発生した場合は、関数コードを確認し、ブラックリストを構成して "./" や "../" などの関連コマンドを制限します。 |
メモリ ホース インジェクション | メモリ内の Webshell は、新たなトロイの木馬技術です。 攻撃者は、Web アプリケーション ファイアウォール (WAF) とホスト防御の検出を効果的にバイパスするのに役立つ技術的アプローチを使用して、トロイの木馬をメモリに挿入できます。 | サーバーにコード実行の脆弱性がある可能性があります。 脆弱性の場所を確認し、コードを実行する権限を制限します。 |
任意のファイル読み取り | Web サイトで提供されるファイルのダウンロードおよび読み取り機能の場合、絶対パスまたはディレクトリ トラバーサル文字を使用してファイルが読み取られ、ダウンロードされ、ファイル パスが制限されていない場合、攻撃者はこの脆弱性を悪用して機密情報を取得し、サーバーを攻撃する可能性があります。 | 期待どおりにファイルを読み取れるかどうかを確認します。 例外が発生した場合は、関数コードを確認し、ブラックリストを構成して "./" や "../" などの入力パラメーターを制限します。 |
スレッド インジェクション | スレッド インジェクションは、RASP テクノロジーをバイパスする一般的な方法です。 攻撃者がコードを実行する権限を取得した場合、攻撃者はスレッドを作成して RASP がランタイム環境のコンテキストを失う可能性があります。 この場合、RASP の防御機能が損なわれます。 | サーバーにコード実行の脆弱性がある可能性があります。 脆弱性の場所を確認し、コードを実行する権限を制限します。 |
悪意のある Attach API | Attach API は Java テクノロジーであり、実行中のアプリケーションのバイトコードを動的に変更するために使用できます。 攻撃者はこのテクノロジーを使用して、エージェントタイプのメモリ ホースを挿入できます。 この方法は非常に欺瞞的です。 | サーバーにコード実行の脆弱性がある可能性があります。 脆弱性の場所を確認し、コードを実行する権限を制限します。 |
JNDI インジェクション | アプリケーションが JNDI クエリを開始したが、クエリ URL が攻撃者によって制御されている場合、攻撃者はアプリケーションが実行されているサーバーに悪意のあるリンクを照会して悪意のあるクラスを読み込むように仕向ける可能性があります。 これにより、サーバー上で任意のコードが実行されます。 |
|
脆弱なプロトコルの使用 | サーバーがアクセスする URL がユーザー制御可能であり、アプリケーションで URL プロトコルが制限されていない場合、攻撃者は File や NetDoc などの安全でないプロトコルを介してサーバー上の機密ファイルを読み取ることができます。 | URL プロトコルを制限します。 |
デシリアライゼーション攻撃 | Java デシリアライゼーションは、バイト シーケンスを Java オブジェクトに復元するプロセスです。 Java オブジェクトに高リスクを引き起こす可能性のあるコードが含まれている場合、攻撃者は Java オブジェクトのメンバー変数を制御して、デシリアライゼーション プロセス中に攻撃を開始する可能性があります。 |
|
任意のファイル削除 | Web サイトで提供されるファイル削除機能の場合、ファイル パスが制限されていないと、攻撃者は絶対パスまたはディレクトリ トラバーサル文字を使用して任意のファイルを削除し、サーバーを攻撃する可能性があります。 | ファイル削除操作が正常かどうかを確認します。 例外が発生した場合は、関数コードを確認し、ブラックリストを構成して "./" や "../" などの入力パラメーターを制限します。 |
式言語 (EL) インジェクション | 式は、実行時のデータ クエリや処理など、幅広い機能を提供します。 複数の式は、関数呼び出しなどの高度な権限を必要とする機能も提供します。 機能が制限されていない場合、攻撃者は式の内容を変更して任意のコードを実行する可能性があります。 | 式の内容を厳しく制限し、Java 関数呼び出しを無効にします。 この脆弱性がサードパーティ コンポーネントによって引き起こされた場合は、できるだけ早くコンポーネントをアップグレードする必要があります。 |
エンジン インジェクション | Java は、Rhino や Nashorn などのさまざまなサードパーティ JavaScript エンジン、および Apache Velocity や FreeMarker などのテンプレート エンジンを提供します。 ほとんどの場合、これらのエンジンは、関数呼び出しなどの高度な権限を必要とする機能を提供します。 機能が制限されていない場合、攻撃者はエンジンによって実行されるコンテンツを変更して任意のコードを実行する可能性があります。 | エンジンにインポートされるコンテンツを厳しく制限し、Java 関数呼び出しを無効にします。 この脆弱性がサードパーティ コンポーネントによって引き起こされた場合は、できるだけ早くコンポーネントをアップグレードする必要があります。 |
悪意のある Bean バインディング | 一部の Java フレームワークは、アプリケーションの実行時に Bean プロパティ バインディングをサポートしています。 バインドできる Bean プロパティのタイプが制限されていない場合、攻撃者は機密性の高い Bean プロパティの値を変更して、アプリケーションの実行を中断したり、任意のコードを実行したりする可能性があります。 | バインドできる Bean プロパティのタイプを制限して、クラスやクラス ローダーなどの Bean プロパティの値が変更されないようにします。 この脆弱性がサードパーティ コンポーネントによって引き起こされた場合は、できるだけ早くコンポーネントをアップグレードする必要があります。 |
悪意のあるクラスの読み込み | ゼロデイ脆弱性と Webshell は、悪意のあるクラスの読み込みに依存します。 悪意のあるクラスが読み込まれると、攻撃者は悪意のあるクラスを初期化し、コードを実行する権限を取得し、悪意のある操作を実行できます。 |
|
JSTL ファイル インクルージョン | JavaServer Pages 標準タグ ライブラリ (JSTL) は、JSP アプリケーションの共通コア機能をカプセル化する JavaServer Pages (JSP) タグのセットです。 ユーザー制御可能なパラメーターがパラメーターに制限なく JSTL に直接連結されている場合、攻撃者は任意のファイルの読み取りと SSRF 攻撃を引き起こす特別なスクリプトを構築できます。 | ユーザー制御可能なパラメーターを JSTL に直接連結しないことをお勧めします。 これを行う必要がある場合は、パラメーターの内容に対して厳密なホワイトリスト制御を行う必要があります。 |
メモリ内 Webshell 防止
アプリケーション保護機能は、RASP テクノロジーを使用してメモリ データを分析することでメモリ内の Webshell を検出し、メモリ内の Webshell の挿入と実行をブロックします。 詳細については、「メモリ内 Webshell 防止機能を使用する」をご参照ください。
弱点検出
次の表に、アプリケーション保護機能で検出できるアプリケーションの弱点のタイプと、関連する修正の提案を示します。
アプリケーション保護機能を有効にする
前提条件
WAF 3.0 インスタンスが購入されています。 詳細については、「サブスクリプション WAF 3.0 インスタンスを購入する」および「従量課金制 WAF 3.0 インスタンスを購入する」をご参照ください。
アプリケーション保護を有効にする
WAF は、Security Center によって提供されるアプリケーション保護機能と統合されています。 さまざまなシナリオでこの機能を有効にできます。
Security Center が非アクティブ化され、アプリケーション保護が無効になっている
WAF 3.0 コンソール にログオンします。 上部のナビゲーション バーで、WAF インスタンスのリソース グループとリージョンを選択します。 中国本土 または 中国本土以外 を選択できます。
左側のナビゲーション ウィンドウで、 を選択します。
[アプリケーション保護] ページで、[今すぐ購入] をクリックします。 [Security Center] ページで、[クイック購入] タブまたは [標準購入] タブをクリックし、RASP をクリックして、購入するクォータを指定します。

右側の [今すぐ注文] をクリックして、アプリケーション保護機能を有効にします。

Security Center がアクティブ化され、アプリケーション保護が無効になっている
WAF 3.0 コンソール にログオンします。 上部のナビゲーション バーで、WAF インスタンスのリソース グループとリージョンを選択します。 中国本土 または 中国本土以外 を選択できます。
左側のナビゲーション ウィンドウで、 を選択します。
[アプリケーション保護] ページで、今すぐアップグレード をクリックします。 [Security Center] ページで、[アップグレードを注文] タブをクリックし、RASP をクリックして、購入するクォータを指定します。

右側の [今すぐ注文] をクリックして、アプリケーション保護機能を有効にします。

Security Center がアクティブ化され、アプリケーション保護が有効になっている
Security Center を使用し、アプリケーション保護機能を有効にしている場合は、WAF でこの機能を直接使用できます。 
Security Center は、Alibaba Cloud、マルチクラウド環境、データセンター、およびコンテナー環境にデプロイされたアセットに包括的なセキュリティ チェックと保護機能を提供します。 さまざまなシナリオの要件を満たすために、Security Center は Basic、Anti-virus、Advanced、Enterprise、Ultimate、および Value-added Plan の各エディションを提供しています。 詳細については、「Security Center の機能」および「Security Center の課金概要」をご参照ください。