すべてのプロダクト
Search
ドキュメントセンター

Security Center:アプリケーション保護とは

最終更新日:Sep 03, 2026

アプリケーション保護は、RASP (ランタイムアプリケーションセルフプロテクション) 技術に基づき、アプリケーションのランタイムの内部から攻撃を検知してブロックします。アプリケーションコードを変更する必要はありません。ホストまたはコンテナ環境に RASP プローブをデプロイすることで、アプリケーションの脆弱性、ゼロデイ脆弱性、メモリシェル攻撃から防御します。

製品概要

アプリケーション保護は、RASP 技術を使用して、内部からアプリケーションの動作をモニターします。アプリケーション層の重要な関数をフックすることで、アプリケーションと他のシステム間のやり取りをリアルタイムで観察します。疑わしい動作が検知されると、システムは現在の実行コンテキストを分析して攻撃を特定し、ブロックします。

これにより、ホスト上の Web プロセスをアプリケーションの脆弱性、ゼロデイ脆弱性、メモリシェル攻撃から保護します。

image

主な利点

  • 既知および未知の脆弱性からの防御: RASP は、アプリケーションランタイム内部から重要な関数の実行をモニターします。脆弱性シグネチャデータベースに依存しないため、ゼロデイ脆弱性や未知の攻撃手法から防御でき、セキュリティパッチを待つことなく即座に保護します。

  • 暗号化トラフィックの処理: RASP は、アプリケーション内部から復号化されたリクエストデータを取得するため、ネットワーク層の暗号化の影響を受けません。リクエストが複雑な方法でエンコードまたは暗号化されている場合でも、アプリケーションの最終的な動作が想定されるアイデンティティや振る舞いと一致しない場合は、 RASP が異常を検知します。

  • 誤検知と偽陰性の低減: RASP は、重要な関数の操作から得られる実際のデータを分析し、実際には実行できない攻撃ペイロードを無視することで、誤検知と偽陰性の両方を削減します。攻撃のエントリポイントがどのように変化しても、重要な関数の実行パスをバイパスできません。

  • 攻撃の追跡と脆弱性の特定: RASP は、元の攻撃ペイロード、コードのコールスタックなどを含む詳細な攻撃チェーンをセキュリティチームと開発者に提供することで、脆弱性の特定、再現、修正が容易になります。

  • 簡単なデプロイメント:コードを変更することなく、コンソールからデプロイできます。特定のルールをメンテナンスまたは更新する必要はありません。RASP はアプリケーションとともに自動的に起動するため、運用コストを低く抑えられます。

制限

アプリケーション保護は、次の環境で Java、PHP、Node.js アプリケーションをサポートしています:

  • Security Center エージェントがインストールされた Alibaba Cloud サーバー

  • サードパーティクラウドサーバー

  • オンプレミスの IDC サーバー

  • Serverless App Engine (SAE) インスタンス

サポートされているオペレーティングシステムは次のとおりです:

オペレーティングシステム

対応オペレーティングシステム

Windows (64 ビット)

  • Windows Server 2025

  • Windows Server 2022

  • Windows Server 2019

  • Windows Server 2016

  • Windows Server 2012

  • Windows Server 2008

  • Windows 11

  • Windows 10

Linux (64 ビット)

  • Alibaba Cloud Linux

  • AlmaLinux

  • Anolis OS

  • CentOS 6、7、8

  • CentOS Stream

  • Debian 8 以降

  • Gentoo

  • openSUSE

  • RHEL 6、7、8、9

  • Rocky Linux

  • SUSE Linux Enterprise Server

  • Ubuntu 14.04 以降

  • NeoKylin V7、Kylin V10

  • TencentOS

  • Oracle Linux 7、8、9

  • openEuler 20.03、22.03

  • EulerOS

  • Amazon Linux 2、2023

機能

攻撃検出 (Java アプリケーション)

次の表では、アプリケーション保護機能が検出および遮断できる攻撃タイプと、関連する保護の推奨事項を説明します。

攻撃タイプ

説明

推奨事項

JNI インジェクション

JNI インジェクションは、一般的な RASP バイパス技術です。攻撃者がコード実行権限を取得すると、Java Native Interface 関数を使用して外部の悪意のある共有ライブラリを呼び出し、Java レベルのセキュリティ保護をバイパスして悪意のある動作を隠蔽できます。

サーバーにコード実行の脆弱性が存在する可能性があります。脆弱性の場所を確認し、コード実行機能を制限してください。

SQL インジェクション

SQL インジェクション攻撃は、ページリクエストや Web フォームのクエリ文字列に SQL コマンドを挿入し、サーバーに任意の SQL ステートメントを実行させる攻撃手法です。攻撃者は、Web フォームを悪用して脆弱な Web サイトからデータを抽出できます。

SQL インジェクションは、SQL ステートメントを連結することで発生します。可能な限りプリペアドステートメントを使用して入力パラメータを処理するか、許可リストとブロックリストを使用してパラメータの連結を制限してください。

XXE

XML 外部実体参照 (XXE) インジェクション攻撃は、XML パーサーが外部実体参照を処理するときに発生します。攻撃者は、悪意のある XML コンテンツを作成して、任意のファイルの読み取り、コマンドの実行、内部ネットワークへの攻撃を行うことができます。

アプリケーションが XML を解析するときに外部実体を読み込む必要があるかどうかを確認してください。必要ない場合は、XML 解析設定で外部実体を無効にしてください。

悪意のある DNS クエリ

悪意のある DNS クエリは、複数の方法で悪用される可能性があります。攻撃者は、DNS プロトコルを使用して内部ネットワークの制限をバイパスして機密データを流出させたり、SSRF や JNDI インジェクションなどの脆弱性を探すために内部システムを調査したりする可能性があります。

悪意のある DNS クエリは、サーバーがユーザー制御のパラメータにリクエストを送信するときにトリガーされます。パラメータを確認し、許可リストを使用して制限してください。

悪意のあるリフレクション呼び出し

これは、攻撃者がリフレクションを通じて RASP ランタイムデータを変更するのを防ぐ、RASP の自己保護モジュールです。

サーバーにコード実行の脆弱性が存在する可能性があります。脆弱性の場所を確認し、コード実行機能を制限してください。

悪意のあるアウトバウンド接続

SSRF (サーバーサイドリクエストフォージェリ) は、攻撃者がサーバー起点のリクエストを作成して内部システムを標的とする脆弱性です。

SSRF 脆弱性を修正するには、サーバーリクエストが到達できるターゲットアドレスの範囲を制限してください。許可リストを使用して安全な内部リソースへのアクセスのみを許可し、不要なアウトバウンドネットワークアクセスを無効にしてください。

悪意のあるファイル読み取り/書き込み

Java の RandomAccessFile クラスは、ファイルの読み書き操作に使用されます。このクラスを使用するときにファイルパスと内容が制限されていない場合、攻撃者は機密性の高いシステムファイルを読み取ったり、悪意のあるトロイの木馬ファイルをアップロードしたりする可能性があります。

ファイルの読み取りとアップロード操作が正常かどうかを確認してください。異常な場合は、関数コードを確認し、ブロックリストを使用して操作を制限してください。

悪意のあるファイルアップロード

Web サイトのファイルアップロード機能でファイルタイプが制限されていない場合、攻撃者は悪意のあるトロイの木馬ファイルをアップロードして、サーバーへのより大きなアクセス権を取得し、深刻な被害を引き起こす可能性があります。

アップロードできるファイルのタイプを制限し、JSP などの実行権限を持つファイルを禁止してください。

コマンド実行

コマンド実行の脆弱性は、サーバーがユーザーが実行できるコマンドをフィルタリングせず、任意のシステムコマンドの実行を許可する場合に発生します。

リモートコマンド実行は、多くの場合、Web シェルまたはサーバー上の危険なコードが原因です。Web シェルは速やかに削除してください。正常なサーバー機能として必要な場合は、許可リストを使用して実行可能なコマンドを制限してください。

ディレクトリトラバーサル

Web サイトの設定の弱点により、任意のディレクトリの閲覧が可能になり、攻撃者が悪用できるプライバシー侵害につながる可能性があります。

ディレクトリトラバーサル操作が正常かどうかを確認してください。異常な場合は、関数コードを確認し、ブロックリストを使用して「./」や「../」などの関連コマンドを制限してください。

メモリシェルインジェクション

メモリシェルは、攻撃者が特殊な方法でサーバーメモリにトロイの木馬を注入する新しいマルウェア技術で、WAF とホストベースの防御を効果的にバイパスします。

サーバーにコード実行の脆弱性が存在する可能性があります。脆弱性の場所を確認し、コード実行機能を制限してください。

任意のファイル読み取り

Web サイトのファイルダウンロードおよび読み取り機能が絶対パスまたはディレクトリトラバーサル文字を使用し、ファイルパスに制限がない場合、攻撃者は機密情報を取得してサーバーを攻撃できます。

ファイル読み取り操作が正常かどうかを確認してください。異常な場合は、関数コードを確認し、ブロックリストを使用して「./」や「../」などの入力パラメータを制限してください。

スレッドインジェクション

スレッドインジェクションは、一般的な RASP バイパス技術です。攻撃者がコード実行権限を取得すると、新しいスレッドを作成して RASP がランタイム環境のコンテキストを失うようにし、RASP の防御能力に影響を与える可能性があります。

サーバーにコード実行の脆弱性が存在する可能性があります。脆弱性の場所を確認し、コード実行機能を制限してください。

悪意のある Attach

Attach API は、Java が提供する、ランタイムにバイトコードを動的に変更するための技術です。攻撃者は、これを使用して、高い隠蔽性を持つエージェントタイプのメモリシェルを注入することがよくあります。

サーバーにコード実行の脆弱性が存在する可能性があります。脆弱性の場所を確認し、コード実行機能を制限してください。

JNDI インジェクション

アプリケーションが JNDI ルックアップを実行するとき、ルックアップ URL が攻撃者によって制御できる場合、攻撃者はサーバーに悪意のあるリンクをクエリさせ、悪意のあるクラスを読み込ませることで、任意のコード実行を実現できます。

  • 脆弱性がサードパーティコンポーネントに起因する場合は、コンポーネントのバージョンを速やかにアップグレードしてください。

  • カスタム JNDI ルックアップコードに起因する場合は、クエリ可能な URL を制限し、危険なプロトコルを禁止してください。

危険なプロトコルの使用

サーバーがアクセス可能な URL がユーザー制御可能であり、アプリケーションがプロトコルを制限していない場合、攻撃者は file や netdoc などの危険なプロトコルを使用して、サーバー上の機密ファイルを読み取る可能性があります。

URL がアクセスできるプロトコルを制限してください。

デシリアライゼーション攻撃

Java のデシリアライゼーションは、文字列を Java オブジェクトに復元するプロセスです。生成されたオブジェクトに高リスクのコードが含まれている場合、攻撃者はデシリアライゼーション中のメンバー変数の制御を悪用して、悪意のある攻撃を実行する可能性があります。

  • 脆弱なコンポーネントのバージョンを速やかにアップグレードしてください。

  • ベンダーが修正版をリリースしていない場合は、一時的に機能を無効にしてください。

任意のファイル削除

Web サイトのファイル削除機能でファイルパスが制限されていない場合、攻撃者は絶対パスまたはディレクトリトラバーサル文字を使用して任意のファイルを削除し、サーバーを侵害できます。

ファイル削除操作が正常かどうかを確認してください。異常な場合は、関数コードを確認し、ブロックリストを使用して「./」や「../」などの入力パラメータを制限してください。

式インジェクション

式コンポーネントは、ランタイムデータのクエリや処理など、豊富な機能を提供します。ただし、多くの式コンポーネントは、関数呼び出しなどの高権限操作もサポートしています。制限がなく攻撃者が制御できる場合、攻撃者は式の評価を通じて任意のコードを実行できます。

式の評価への入力を厳密に制限し、ほとんどの Java 関数の呼び出しをブロックしてください。サードパーティコンポーネントの脆弱性が原因の場合は、コンポーネントのバージョンを速やかにアップグレードしてください。

エンジンインジェクション

Java は、多くのサードパーティエンジンコンポーネント (Rhino、Nashorn JS エンジン、Velocity、FreeMarker テンプレートエンジンなど) をサポートしています。これらのエンジンは通常、関数呼び出しなどの高権限操作を提供します。制限がなく攻撃者が制御できる場合、攻撃者はエンジンを通じて任意のコードを実行できます。

エンジンの処理に渡される入力を厳密に制限し、ほとんどの Java 関数の呼び出しをブロックしてください。サードパーティコンポーネントの脆弱性が原因の場合は、コンポーネントのバージョンを速やかにアップグレードしてください。

悪意のある Beans バインディング

一部の Java フレームワークは、ランタイム Beans パラメータバインディングをサポートしています。バインドできる Beans のタイプが制限されていない場合、攻撃者は機密性の高い Beans 値を変更することで、アプリケーションの動作を妨害したり、任意のコード実行を実現したりする可能性があります。

バインドできる Beans のタイプを制限し、Class や ClassLoader のようなタイプの Beans 値の変更を禁止してください。サードパーティコンポーネントの脆弱性が原因の場合は、コンポーネントのバージョンを速やかにアップグレードしてください。

悪意のあるクラスロード

多くのゼロデイエクスプロイトや Web シェルは、悪意のあるクラスロードに依存しています。悪意のあるクラスがロードされると、攻撃者はクラスの初期化を通じてコード実行権限を取得し、さらなる悪意のある操作が可能になります。

  • 悪意のあるクラスロードが Web シェルによるものである場合は、Web シェルを速やかに削除してください。

  • 悪意のあるクラスロードがフレームワークに起因する場合は、フレームワークのバージョンを速やかにアップグレードしてください。

JSTL 任意ファイルインクルージョン

JSTL (JSP Standard Tag Library) は、JSP アプリケーションの一般的なコア機能をカプセル化する JSP タグのコレクションです。ユーザーが制御できるパラメータが制限なく JSTL タグに直接連結される場合、攻撃者は特別な攻撃スクリプトを作成して、任意のファイルの読み取りや SSRF 攻撃を行うことができます。

ユーザーが制御できるパラメータを JSTL タグに直接連結しないようにしてください。必要な場合は、パラメータの内容に厳格な許可リストによる制御を適用してください。

攻撃検出 (PHP アプリケーション)

攻撃タイプ

説明

推奨事項

悪意のあるファイルインクルード

PHP のファイルインクルードの脆弱性は一般的なセキュリティ問題であり、攻撃者が入力を操作することで任意のファイルをインクルードして実行できてしまいます。これらの脆弱性は通常、include()require()include_once()、または require_once() 関数を使用する際に発生します。

ユーザー入力のファイルパスを検証して制限し、アプリケーションディレクトリ内の事前定義されたファイルのみを許可することで、攻撃者による悪意あるパスの注入を防止してください。

悪意のあるアウトバウンド接続

SSRF (サーバーサイドリクエストフォージェリ) は、攻撃者がサーバーを起点とするリクエストを作成して内部システムを標的とする脆弱性です。

SSRF の脆弱性を修正するには、サーバーリクエストが到達できるターゲットアドレスの範囲を制限してください。許可リストを使用して安全な内部リソースのみにアクセスを許可し、不要なアウトバウンドネットワークアクセスを無効にしてください。

デシリアライゼーション

PHP のデシリアライゼーションの脆弱性は重大なセキュリティ問題であり、攻撃者がシリアライズされたデータを操作することで任意の関数を実行できてしまいます。これは通常、unserialize() 関数を使用する際に発生します。

信頼できないデータを直接デシリアライズしないでください。json_decode() などの安全な代替手段を使用するか、必要に応じて、デシリアライズするデータソースを厳格に検証およびフィルタリングしてください。

コールバック関数の実行

PHP の array_map()array_filter() などのコールバック関数は、パラメーターを外部から制御できる場合に危険となります。その結果、攻撃者が任意の関数を実行してシステム全体を制御できる可能性があります。

PHP のコールバック関数の悪用を防ぐため、array_map()array_filter() などの関数に渡すコールバック関数名がユーザー入力によって制御されないようにし、許可するすべてのコールバック関数を許可リストに照らして検証してください。

悪意のあるファイルの読み書き

ファイルの読み書き関数が、ファイルパスと内容に対する制限なしで呼び出される場合、攻撃者が機密性の高いシステムファイルを読み取ったり、悪意あるトロイの木馬ファイルをアップロードしたりする可能性があります。

ファイル関連のセキュリティ脆弱性を防ぐため、ファイルパスを厳格に検証して制限し、事前定義されたディレクトリへのアクセスのみを許可してください。また、悪意あるコードのアップロードを防ぐため、ファイル内容に対してセキュリティチェックを実施してください。

任意コード実行

任意コード実行の脆弱性により、攻撃者がサーバー上で任意のコードスニペットを実行できてしまい、制御の奪取や機密データの読み取り/改ざんにつながる可能性があります。これは通常、プログラムがユーザー入力を十分に検証していないために悪意のあるコードが注入されることによって発生します。悪用に成功すると、データ漏洩、Web サイト改ざん、またはマルウェアのインストールにつながる可能性があります。

厳格な入力値の検証と出力エンコーディングを実施してください。eval()include() などの関数を使用してユーザー入力を直接処理しないでください。また、すべてのライブラリとフレームワークを最新の状態に保ってください。

任意のファイル読み取り

ファイル読み取りインターフェイスに適切なフィルタリングと制限がない場合、攻撃者は絶対パスやディレクトリトラバーサル文字を使用してファイルを読み取ってダウンロードし、機密情報を取得してサーバーを攻撃する可能性があります。

ファイル読み取りインターフェイスに厳格な入力値の検証とパス制限を実装し、許可リストに含まれるファイルにのみアクセスできるようにしてください。また、ブロックリストを使用して「./」や「../」などの入力パラメーターを制限してください。

任意のファイル削除

ファイル削除インターフェイスでファイルパスが適切に制限されていない場合、攻撃者は絶対パスやディレクトリトラバーサル文字を使用して任意にファイルを削除し、サーバーを攻撃する可能性があります。

ファイル削除インターフェイスに厳格な入力値の検証とパス制限を実装し、検証済みのファイルのみを削除できるようにしてください。また、ブロックリストを使用して「./」や「../」などの入力パラメーターを制限してください。

コマンド実行

コマンド実行の脆弱性により、攻撃者はバックエンドサーバーにオペレーティングシステムコマンドまたはコードをリモートから注入し、バックエンドシステムを制御できてしまう可能性があります。

すべてのユーザー入力を検証してフィルタリングしてください。未処理の入力を使用してオペレーティングシステムコマンドを構築しないでください。また、可能な限り、システムコマンド実行を安全な API に置き換えてください。

ディレクトリブラウジング

Web サイトの設定に不備があると、任意のディレクトリブラウジングが可能になり、プライバシーが侵害され、攻撃者に悪用される可能性があります。

適切なサーバー権限設定と .htaccess などのファイルを使用してディレクトリへのアクセスを制限し、機密性の高いディレクトリが未承認のユーザーに参照されないようにしてください。

悪意のあるファイルアップロード

ファイルアップロード機能でファイルタイプが制限されていない場合、攻撃者が悪意あるトロイの木馬ファイルをアップロードしてサーバーへのアクセス権限を拡大し、重大な被害を引き起こす可能性があります。

アップロードされるファイルタイプを厳格に制限して検証し、安全なファイルタイプのみを許可してください。また、.php などの実行可能なファイル拡張子をブロックし、サーバー側でファイル内容を再チェックし、安全性を確保してください。

攻撃検出 (Node.js アプリケーション)

次の表に、Node.js アプリケーション向けに Application Protection が検出および遮断できる攻撃タイプと、関連する保護の推奨事項を示します。

攻撃タイプ

説明

推奨事項

コマンド実行

コマンド実行の脆弱性により、攻撃者はバックエンドサーバーにオペレーティングシステムコマンドまたはコードをリモートから注入し、バックエンドシステムを制御できる可能性があります。

ユーザーが制御可能な入力を実行するために、execspawn などの関数を使用しないでください。必要な場合は、許可リストを使用して実行可能なコマンドを制限してください。

悪意のあるファイルの読み書き

ファイルの読み取り / 書き込み関数が、ファイルパスと内容に対する制限なしで呼び出される場合、攻撃者が機密システムファイルを読み取ったり、悪意あるトロイの木馬ファイルをアップロードしたりする可能性があります。

ファイルパスを厳格に検証して制限し、事前定義されたディレクトリへのアクセスのみを許可してください。また、ファイル内容に対してセキュリティチェックを実施してください。

任意のファイル読み取り

ファイル読み取りインターフェイスに対する適切なフィルタリングと制限がない場合、攻撃者は絶対パスやディレクトリトラバーサル文字を使用してファイルを読み取ってダウンロードし、機密情報を取得してサーバーを攻撃する可能性があります。

ファイル読み取りインターフェイスに対して厳格な入力値の検証とパス制限を実装し、許可リストに含まれるファイルにのみアクセスできるようにしてください。また、拒否リストを使用して「./」や「../」などの入力パラメーターを制限してください。

任意のファイル書き込み

アプリケーションが書き込み対象のファイルのタイプ、サイズ、内容を適切に検証および制限していない場合、攻撃者がこれを悪用して、ターゲットシステム上の指定された場所に悪意あるファイルを書き込み、悪意あるスクリプトやトロイの木馬を設置する可能性があります。これにより、サーバー侵害に至る可能性があります。

  • すべてのファイル書き込みパスを正規化して検証してください。path.resolve または realpath を使用して、ターゲットがアプリケーションで許可されたディレクトリ内にあることを確認してください。

  • ユーザー入力を完全なファイルパスとして直接使用しないでください。サーバー側で生成したファイル名と固定ディレクトリを使用してください。

  • システムディレクトリ、ユーザーのスタートアップスクリプト、SSH 設定、cron ジョブ、systemd ユニット、パッケージマネージャー設定、アプリケーションのキーファイルへの書き込みを禁止してください。

  • コンテナおよび本番環境では、読み取り専用ルートファイルシステム、最小限のファイル権限、隔離された一時ディレクトリを使用してください。

  • アップロード、エクスポート、キャッシュの各機能については、業務タイプごとに拡張子、サイズ、ディレクトリの許可リストを設定し、監査ログを保持してください。

任意のファイル削除

ファイル削除インターフェイスでファイルパスが適切に制限されていない場合、攻撃者は絶対パスやディレクトリトラバーサル文字を使用して任意にファイルを削除できます。

ファイル削除インターフェイスに対して厳格な入力値の検証とパス制限を実装し、検証済みのファイルのみを削除できるようにしてください。また、拒否リストを使用して「./」や「../」などの入力パラメーターを制限してください。

悪意のあるファイルリンク

アプリケーションがファイルリンクを作成する際に、ターゲットパスとリンクオブジェクトを適切に検証していない場合、攻撃者はシンボリックリンクまたはハードリンクを使用して、保護されたファイルをアクセス可能な場所にマッピングできます。これにより、アクセス制御をバイパスして、機密システムファイルの読み取り、変更、破壊を行う可能性があります。

外部入力でリンクターゲットやリンクパスを直接制御できないようにしてください。リンクの作成元と作成先の両方に対して、正規化、実パスの検証、ディレクトリ許可リストのチェックを実施してください。アップロード、テンポラリ、展開ディレクトリに対して lstat を使用し、シンボリックリンクを特定してください。高リスクのディレクトリには独立した低権限ユーザーを使用し、アプリケーションプロセスに対して、システム設定、認証情報ディレクトリ、ホストのマウントディレクトリへの読み取り / 書き込みアクセス権限を付与しないようにしてください。

悪意のあるアウトバウンド接続

SSRF (サーバーサイドリクエストフォージェリ) は、攻撃者がサーバー起点のリクエストを作成して内部システムを標的にする脆弱性です。

SSRF の脆弱性を修正するには、サーバーリクエストが到達できるターゲットアドレスの範囲を制限してください。許可リストを使用して安全な内部リソースにのみアクセスを許可し、不要なアウトバウンドネットワークアクセスを無効にしてください。

悪意のあるプロセス作成

Node.js の fork() は、JS ファイルを実行する新しい Node プロセスを作成するために使用できます。アプリケーションが呼び出しシナリオ、実行ロジック、入力パラメーターを厳格に制限していない場合、攻撃者がこの機能を悪用して悪意のある子プロセスを作成し、未承認の操作を実行したり、スクリプトのロードやコマンド実行によってサーバーをさらに侵害したりする可能性があります。

ユーザー入力によって fork() のモジュールパスと起動パラメーターが直接決定されないようにしてください。fork 可能なスクリプトについては、固定の列挙またはサーバー側の許可リストを使用してください。起動前に、絶対パスを使用してスクリプトを解決し、信頼できるアプリケーションディレクトリ内にあることを確認してください。パラメーターとして渡すのは業務フィールドのみにし、シェル断片、ファイルパス、インタープリター引数、環境変数の上書きは渡さないでください。子プロセスには最小権限、隔離された作業ディレクトリ、制限された環境変数を使用してください。ユーザータスクの実行が必要なシナリオでは、任意のローカルスクリプトを動的にロードするのではなく、制限付きワーカー、キュー、またはサンドボックスの使用を推奨します。

悪意のあるプロセスバインディング

Node.js の process.binding() は、内部の低レベルモジュールにアクセスするために使用できます。アプリケーションがこのような呼び出しを制限していない場合、攻撃者がこの機能を悪用して低レベルインターフェイスにアクセスし、上位レイヤーのセキュリティ制御をバイパスして想定外の操作を実行する可能性があります。これにより、機密情報の漏洩、権限の悪用、またはさらなるシステム侵害につながる可能性があります。

業務コード、プラグイン、テンプレート、またはスクリプト実行環境で process.binding および process._linkedBinding を公開しないでください。外部パラメーターをこれらのインターフェイスに渡すことを禁止してください。プラグイン、ルール、テンプレート、または Agent Skills をサポートするアプリケーションでは、サンドボックスで高リスクの process 機能を削除またはフリーズしてください。本番環境では、RASP のプロセスバインディングフックとアラートを有効にしてください。依存パッケージで直接のネイティブバインディング呼び出しが必要かどうかを評価し、呼び出し元を制限してください。高リスクのランタイム環境では、コンテナの隔離、最小権限ユーザー、システムコール / ネットワークアクセスの制限を使用してください。

悪意のある MCP 呼び出し

AI エージェントのシナリオでは、MCP (モデルコンテキストプロトコル) を使用して外部リソース、サービス、または機能にアクセスできます。アプリケーションが MCP サービスの呼び出し範囲、リクエストパラメーター、返却内容を厳格に検証していない場合、攻撃者はエージェントを誘導して悪意のある MCP 呼び出しを行わせ、機密データへのアクセス、高リスク操作の実行、または信頼できないサービスとの連携を引き起こす可能性があります。

MCP Server は外部の信頼できないコンポーネントとして扱ってください。固定バージョンかつ構成が管理された信頼できるソースへの接続のみを許可してください。MCP ツール名、サーバー名、パラメーター、URL、作業ディレクトリ、起動コマンドに対して許可リストを設定してください。ファイルの変更、コマンド実行、ネットワークアクセス、認証情報の読み取りを行うツールについては、手動確認またはより高いリスクレベルのポリシーを有効にしてください。本番キーを MCP Servers に直接公開しないでください。MCP Servers は隔離されたコンテナまたは低権限アカウントで実行してください。OAuth メタデータ、リモート URL、ツールの返却内容に対して、形式の検証、URL のセキュリティ検証、監査記録を実施してください。ツール呼び出しによって生成される基盤となる child_processfshttpnet の動作は、引き続き RASP で遮断する必要があります。

悪意のあるツール呼び出し

AI エージェントのシナリオでは、ツールを使用して外部操作を実行したり、サードパーティの機能を呼び出したりできます。アプリケーションがツールの利用可能な範囲、呼び出しパラメーター、実行結果を効果的に制限していない場合、攻撃者はプロンプトインジェクションや細工された悪意ある入力を通じてエージェントを誘導し、高リスクのツールを呼び出させる可能性があります。その結果、未承認の操作の実行、機密リソースへのアクセス、さらにはホストや業務システムのセキュリティへの影響につながる可能性があります。

ツールの権限は、最小権限の原則に基づいて設計してください。高リスクツールはデフォルトで拒否し、業務シナリオに基づいて明示的に許可してください。ツールを読み取り専用、書き込み、ネットワーク、コマンド実行のリスクレベルに分類してください。書き込み、コマンド実行、アウトバウンドのツールについては、確認またはポリシー承認を必須にしてください。コマンドテンプレート、アクセス可能なディレクトリ、許可するドメイン、許可する HTTP メソッドなど、各ツールのパラメーターに対して強力な検証と許可リスト制約を適用してください。ツール結果は信頼できない入力として扱い、LLM コンテキストに投入する前にプロンプトインジェクションと機密データ検出を実施してください。ツール名、パラメーター、呼び出しチェーン、runId/toolCallId、結果サマリーの監査記録を保持してください。機密ファイルの読み取りの後にアウトバウンド接続が続く、またはコマンド実行の後にスタートアップ項目への書き込みが続くなどの危険なシーケンスを検知した場合は、ブロックするかアラートをエスカレーションしてください。

アプリケーションの脆弱性防御

Application Protection は、アプリケーションの脆弱性、ゼロデイ脆弱性、メモリシェル攻撃を効果的に防御できます。脆弱性防御の原理を次の図に示します。アプリケーションの脆弱性に対するインシデント対応において、RASP の攻撃保護機能を活用することで、攻撃を迅速にブロックし、アプリケーションの脆弱性を修正するための時間を確保できます。Application Protection は、リスクソースの迅速な特定と影響範囲の判断にも役立ちます。アプリケーションの脆弱性の詳細については、「脆弱性の管理」をご参照ください。

image

アプリケーションの脆弱性をすぐに修正できない場合は、まずアプリケーションプロセスを RASP に接続して保護することができます。次の手順では、脆弱性が検出されたアプリケーションに RASP 保護を追加する方法について説明します。

  1. Security Center コンソールにログインします。

  2. 左側メニューで、リスクガバナンス > 脆弱性管理 の順に選択します。コンソールの左上隅で、保護する資産のあるリージョンを選択します: 中国本土 または 中国本土以外

  3. アプリケーションの脆弱性 タブで、RASP はリアルタイム保護をサポートします タグが付いている脆弱性は Application Protection でサポートされています。対応する脆弱性の [アクション] 列で すぐに保護する をクリックします。

  4. アプリケーション保護の導入 パネルで、アプリケーショングループ名 ドロップダウンから接続するアプリケーション グループを選択し、対応する資産を選択してから、確認する をクリックします。

    必要なアプリケーション グループが存在しない場合は、ドロップダウンの アプリケーショングループの作成 をクリックし、アプリケーション グループ名を入力して OK をクリックすると、アプリケーション グループを迅速に作成できます。ここで作成されたアプリケーション グループの 防御モード保護保護ポリシーグループ は [グループ名] になります。

    検出された脆弱性があるアプリケーションが Application Protection に接続された後、脆弱性の詳細ページの 未対応の脆弱性 リストでは、アプリケーションの脆弱性に対する脆弱性スキャンが完了して初めて、サーバーの 操作 列に 保護済み と表示されます。

アプリケーション行動分析

アプリケーション行動分析機能は、接続されたアプリケーションの行動データをリアルタイムで監視、収集、分析し、レポートとビジュアル表示を生成します。これにより、アプリケーションの攻撃と防御の詳細を理解し、システムセキュリティを強化するのに役立ちます。詳細については、「アプリケーション行動分析」をご参照ください。

メモリシェル防御 (Java アプリケーションのみ)

アプリケーション保護の RASP 技術は、メモリデータを分析してメモリシェルをリアルタイムで検知し、メモリシェルインジェクションと実行プロセスをインターセプトできます。詳細については、「メモリ常駐マルウェア防御」をご参照ください。

脆弱性検出 (Java アプリケーションのみ)

次の表は、Application Protection が検出できるアプリケーションの脆弱性の種類と、関連する修正の推奨事項を示しています。

脆弱性の種類

リスクレベル

説明

推奨事項

安全でない Fastjson 設定

アプリケーション内の Fastjson でデシリアライゼーションが有効になっているため、攻撃者に悪用され、リモートコードが実行される可能性があります。必要でない場合は、この機能を無効にしてください。

Fastjson の safemode を true に設定するか、autotype を false に設定してください。

安全でない log4j 設定

log4j コンポーネントで lookup 機能が有効になっており、攻撃者が JNDI インジェクションに悪用し、リモートコード実行を引き起こす可能性があります。

log4j を最新バージョンにアップグレードするか、JAR パッケージから org/apache/logging/log4j/core/lookup/JndiLookup.class クラスファイルを削除してください。

安全でない起動パラメータ

攻撃者が JDWP デバッグポートにアクセスできる場合、この機能を通じて任意のコードを実行でき、リモートコード実行を引き起こす可能性があります。

このようなシナリオが必要ない場合は、JDWP ポートを閉じるか、JDWP ポートをパブリックネットワークに公開しないようにしてください。JDWP ポートが有効になっている長時間実行されるアプリケーションには注意してください。

Shiro の脆弱なキー

Shiro が脆弱な暗号化キーを使用しており、攻撃者がこれを解読してさらなるデシリアライゼーション攻撃を実行し、リモートコード実行を引き起こす可能性があります。

アプリケーション内の Shiro 暗号化キーを速やかに更新してください。

安全でない JMX 設定

JMX リモートアクセスが適切な認証なしで有効になっています。攻撃者がアプリケーションの JMX サービスにリモート接続し、コマンドを実行する可能性があります。

リモート JMX 接続を無効にするか、安全な認証情報を使用してください。

安全でない Rhino 設定

Rhino フレームワークには危険なプロパティが含まれており、攻撃者がこれを悪用してリモートコードを実行する可能性があります。

Rhino を最新バージョンにアップグレードしてから、SafeStandardObjects を使用して Rhino コンテキストを定義し、JavaScript エンジンが Java コードを呼び出すのを防いでください。

次に、SafeStandardObjects を使用して Rhino コンテキストを定義する例を示します。

 package com.aliyun.sample;

  import org.mozilla.javascript.Context;
  import org.mozilla.javascript.Scriptable;

  public class RhinoSecurityExample {
      public static void main(String[] args) {
          Context ctx = Context.enter();
          // Scriptable scope = ctx.initStandardObjects(); // 安全でない
          Scriptable scope = ctx.initSafeStandardObjects(); // 安全
          ctx.setOptimizationLevel(-1);
          String str = "var test={};";
          str += "test.call=function(){return 'Successful!';};";
          str += "test.call()";  // JavaScript の結果のみを返し、Java の呼び出しはなし
          try {
              // JavaScript コードを渡して実行
              Object result = ctx.evaluateString(scope, str, "", 1, null);
              System.out.println("JavaScript execution result: " + result);
          } catch (Exception e) {
              e.printStackTrace();
          } finally {
              Context.exit();
          }
      }
  }

安全でない Spring 設定

Spring Actuator で特定のエンドポイントが有効になっています: heapDumpenvrestartrefreshtracejolokiah2-console など。これらは機密情報の漏洩やリモートコード実行を引き起こす可能性があります。

特別なシナリオで必要でない場合は、これらの機能を無効にしてください。

脆弱なログイン認証情報

アプリケーションに弱いログインパスワードがあり、攻撃者がブルートフォースでシステムにアクセスし、機密情報やサーバーアクセスを取得する可能性があります。

アプリケーションのパスワードを速やかに複雑なパスワードに変更してください。

安全でない JNDI 設定

アプリケーションに安全でない useCodebaseOnly/rmi-trustURLCodebase/ldap-trustURLCodebase パラメータ設定があり、JNDI インジェクションに対して脆弱である可能性があります。

JDK を最新バージョンにアップグレードしてください。アップグレードできない場合は、アプリケーションの起動時に次の起動パラメータを追加してください。

-Djava.rmi.server.useCodebaseOnly=true -Dcom.sun.jndi.rmi.object.trustURLCodebase=false -Dcom.sun.jndi.ldap.object.trustURLCodebase=false

安全でない XML エンティティ設定

XML 外部エンティティ解析が有効になっており、アプリケーションが XXE 攻撃にさらされる可能性があります。

特別なシナリオで必要でない場合は、外部エンティティを無効にしてください。

データベースの弱いパスワード

アプリケーションが弱いパスワードを使用してデータベースに接続しており、攻撃者がこれを悪用してデータベースに接続し、機密情報の漏洩やリモートコード実行を引き起こす可能性があります。

データベース接続パスワードを速やかに複雑なパスワードに変更してください。