このトピックでは、攻撃統計に含まれる攻撃について説明し、対応する解決策を提供します。
攻撃の種類 | 説明 | 解決策 |
JNDI インジェクション | アプリケーションが JNDI クエリを開始したが、クエリ URL が攻撃者によって制御されている場合、攻撃者はアプリケーションが実行されているサーバーに悪意のあるリンクをクエリさせ、悪意のあるクラスを読み込ませることができます。これにより、サーバー上で任意のコードが実行される可能性があります。 |
|
JNI インジェクション | Java Native Interface (JNI) インジェクションは、Runtime Application Self-Protection (RASP) 技術をバイパスする一般的な方法です。攻撃者がコードを実行する権限を取得した場合、攻撃者は JNI 関数を使用して外部の悪意のある動的リンクライブラリを呼び出すことができます。このようにして、攻撃者は Java レイヤーのセキュリティ保護をバイパスし、特定の悪意のある動作を隠蔽することができます。 | サーバーにコード実行の脆弱性がある可能性があります。脆弱性の場所を確認し、コードを実行する権限を制限してください。 |
JSTL ファイルインクルージョン | JavaServer Pages Standard Tag Library (JSTL) は、JSP アプリケーションの共通コア機能をカプセル化した JavaServer Pages (JSP) タグのセットです。ユーザー制御可能なパラメータがパラメータに制限なく JSTL に直接連結されている場合、攻撃者は任意のファイルの読み取りとサーバー側のリクエストフォージェリ (SSRF) 攻撃を引き起こす特別なスクリプトを作成できます。 | ユーザー制御可能なパラメータを JSTL に直接連結しないことをお勧めします。これを行う必要がある場合は、パラメータの内容に対して厳密なホワイトリスト制御を行う必要があります。 |
SQL インジェクション | SQL インジェクション攻撃は、Web リクエストまたは Web フォームのクエリ文字列に SQL ステートメントを挿入し、サーバーに SQL ステートメントを実行させます。攻撃者は、Web フォームに SQL ステートメントを挿入することにより、セキュリティの脆弱性を持つ Web サイトのデータを取得できます。 | SQL インジェクションは、SQL ステートメントを連結することによって発生します。入力パラメータをプリコンパイルするか、ホワイトリストとブラックリストを使用して連結パラメータを制限します。 |
XXE | XXE インジェクションは、XML 外部エンティティインジェクションの略です。XML ファイルが外部エンティティを参照している場合、攻撃者は悪意のあるコンテンツを作成して、任意のファイルの読み取り、コマンドインジェクション、内部ネットワーク攻撃を引き起こす可能性があります。 | アプリケーションが XML ファイルを解析するときに外部エンティティを読み込む必要があるかどうかを確認します。必要ない場合は、XML 解析設定で外部エンティティを無効にします。 |
XSS | クロスサイトスクリプティング (XSS) 攻撃は、Web サイトに悪意のあるスクリプトを挿入します。ユーザーが Web サイトを閲覧すると、Web サイトに挿入されたスクリプトが実行されます。 | HTML インジェクション攻撃と同様に、XSS 攻撃により、攻撃者は Web ページに HTML コードを挿入できます。XXS 攻撃からアプリケーションを保護するには、ユーザーが送信したコードが Web ページに表示されるときに、入力データを厳密にフィルタリングしてエスケープする必要があります。
|
式言語 (EL) インジェクション | 式は、実行時のデータクエリや処理など、幅広い機能を提供します。複数の式は、関数呼び出しなどの高度な権限を必要とする機能も提供します。これらの機能が制限されていない場合、攻撃者は式のコンテンツを変更して任意のコードを実行できます。 | 式のコンテンツを厳密に制限し、Java 関数呼び出しを無効にします。この脆弱性がサードパーティコンポーネントによって引き起こされている場合は、できるだけ早くコンポーネントをアップグレードする必要があります。 |
悪意のある Attach API | Attach API は、実行中のアプリケーションのバイトコードを動的に変更するために使用できる Java テクノロジーです。攻撃者はこのテクノロジーを使用して、エージェント型のメモリホースを挿入できます。この方法は非常に欺瞞的です。 | サーバーにコード実行の脆弱性がある可能性があります。脆弱性の場所を確認し、コードを実行する権限を制限してください。 |
悪意のある Bean バインディング | 一部の Java フレームワークは、アプリケーションの実行時に Bean プロパティバインディングをサポートしています。バインドできる Bean プロパティのタイプが制限されていない場合、攻撃者は機密性の高い Bean プロパティの値を変更してアプリケーションの動作を妨害したり、任意のコードを実行したりする可能性があります。 | バインドできる Bean プロパティのタイプを制限して、class や class ローダーなどの Bean プロパティの値が変更されないようにする必要があります。この脆弱性がサードパーティコンポーネントによって引き起こされている場合は、できるだけ早くコンポーネントをアップグレードする必要があります。 |
悪意のある DNS クエリ | 攻撃者は、複数の方法を使用して悪意のある DNS クエリを悪用できます。攻撃者は、DNS プロトコルを使用して機密情報を内部ネットワークから持ち出す可能性があります。また、攻撃者は DNS プロトコルを使用して、内部ネットワークシステムに SSRF や JNDI インジェクションなどの脆弱性があるかどうかを検出することもあります。 | 悪意のある DNS クエリは、サーバーがユーザー制御パラメータにリクエストを送信するときに発生します。パラメータ設定を確認し、ホワイトリストを設定します。 |
悪意のあるリフレクション呼び出し | RASP の自己保護モジュールは、攻撃者がリフレクションを使用して実行時に RASP データを変更することを禁止します。 | サーバーにコード実行の脆弱性がある可能性があります。脆弱性の場所を確認し、コードを実行する権限を制限してください。 |
悪意のあるクラスの読み込み | ゼロデイ脆弱性と Web シェルは、悪意のあるクラスの読み込みに依存しています。悪意のあるクラスが読み込まれると、攻撃者は悪意のあるクラスを初期化し、コードを実行する権限を取得し、悪意のある操作を実行できます。 |
|
SSRF | サーバーサイドリクエストフォージェリ (SSRF) は、攻撃者がサーバーサイドアプリケーションに HTTP リクエストを実行させることによって Web サイトの内部システムを攻撃できるようにする Web セキュリティの脆弱性です。 | SSRF は、サーバーが入力パラメータにリクエストを送信するときに発生します。パラメータ設定を確認し、ホワイトリストを設定します。 |
悪意のあるファイルの読み取りと書き込み | Java は、ファイルの読み取りおよび書き込み操作のために RandomAccessFile クラスを提供します。このクラスを使用してファイルを読み書きする場合、ファイルパスとファイルの内容を制限しないと、攻撃者は機密性の高いシステムファイルを読み取ったり、トロイの木馬ファイルをアップロードしたりする可能性があります。 | ファイルを期待どおりに読み書きできるかどうかを確認します。例外が発生した場合は、関数コードを確認し、ブラックリストを設定します。 |
悪意のあるファイルのアップロード | Web サイトで提供されるファイルアップロード機能の場合、ファイルの種類が制限されていないと、攻撃者はトロイの木馬ファイルをアップロードすることによってサーバーでより高い権限を取得する可能性があります。これは深刻な害を引き起こします。 | アップロードするファイルの種類を制限し、JSP ファイルなど、実行権限を持つファイルのアップロードを禁止します。 |
デシリアライズ攻撃 | Java デシリアライズは、バイトシーケンスを Java オブジェクトに復元するプロセスです。Java オブジェクトに高リスクを引き起こす可能性のあるコードが含まれている場合、攻撃者はデシリアライズプロセス中に Java オブジェクトのメンバー変数を制御して攻撃を開始できます。 |
|
コマンドインジェクション | コマンドインジェクションの脆弱性により、攻撃者はサーバー上で任意のシステムコマンドを実行できます。 | ほとんどの場合、リモートコマンドの実行は、Web シェルまたはサーバーのリスクの高いコードによって引き起こされます。コマンドが実行される場所を確認します。コマンドの実行が Web シェルによって引き起こされている場合は、Web シェルをすぐに削除します。サーバーの通常の機能を実装するためにコマンドが実行される場合は、ホワイトリストを設定して実行できるコマンドを制限します。 |
ディレクトリトラバーサル | Web サイトのディレクトリは、設定の欠陥により任意に参照される可能性があります。これにより、プライバシー情報の漏洩が発生します。攻撃者は、開示された情報を使用して Web サイトを攻撃できます。 | Web サイトのディレクトリが期待どおりにトラバースできるかどうかを確認します。例外が発生した場合は、関数コードを確認し、ブラックリストを設定して "./" や "../" などの関連コマンドを制限します。 |
メモリホースインジェクション | メモリホースは、新たに出現したトロイの木馬技術です。攻撃者は、いくつかの特別な技術的手段によってトロイの木馬をメモリに挿入できます。これにより、WAF とホスト防御の検出を効果的にバイパスできます。 | サーバーにコード実行の脆弱性がある可能性があります。脆弱性の場所を確認し、コードを実行する権限を制限してください。 |
任意のファイル削除 | Web サイトで提供されるファイル削除機能の場合、絶対パスまたはディレクトリトラバーサル文字を使用してファイルが削除され、ファイルパスが制限されていない場合、攻撃者はこの脆弱性を悪用して機密情報を取得し、サーバーを攻撃する可能性があります。 | ファイルを期待どおりに削除できるかどうかを確認します。例外が発生した場合は、関数コードを確認し、ブラックリストを設定して "./" や "../" などの入力パラメータを制限します。 |
任意のファイル読み取り | Web サイトで提供されるファイルのダウンロードおよび読み取り機能の場合、絶対パスまたはディレクトリトラバーサル文字を使用してファイルが読み取られダウンロードされると、攻撃者はこの脆弱性を悪用して機密情報を取得し、サーバーを攻撃する可能性があります。 | ファイルを期待どおりに読み取れるかどうかを確認します。例外が発生した場合は、関数コードを確認し、ブラックリストを設定して "./" や "../" などの入力パラメータを制限します。 |
脆弱なデータベースパスワード | データベースパスワードが脆弱な場合、攻撃者はブルートフォース攻撃を開始することでパスワードを取得する可能性があります。この場合、攻撃者はデータベースからデータを盗み、システム権限を取得できます。 | より複雑なパスワードを使用してください。 |
スレッドインジェクション | スレッドインジェクションは、RASP 技術をバイパスする一般的な方法です。攻撃者がコードを実行する権限を取得した場合、攻撃者はスレッドを作成して、RASP がランタイム環境のコンテキストを失うようにすることができます。この場合、RASP の防御機能が損なわれます。 | サーバーにコード実行の脆弱性がある可能性があります。脆弱性の場所を確認し、コードを実行する権限を制限してください。 |
安全でないプロトコルの使用 | サーバーがアクセスする URL がユーザー制御可能であり、アプリケーションで URL プロトコルが制限されていない場合、攻撃者は File や NetDoc などの安全でないプロトコルを介してサーバー上の機密ファイルを読み取ることができます。 | URL プロトコルを制限します。 |
エンジンインジェクション | Java は、さまざまなサードパーティの JavaScript エンジン (Rhino や Nashorn など) とテンプレートエンジン (Apache Velocity や FreeMarker など) を提供します。ほとんどの場合、これらのエンジンは、関数呼び出しなどの高度な権限を必要とする機能を提供します。これらの機能が制限されていない場合、攻撃者はエンジンによって実行されるコンテンツを変更して任意のコードを実行できます。 | エンジンにインポートされるコンテンツを厳密に制限し、Java 関数呼び出しを無効にします。この脆弱性がサードパーティコンポーネントによって引き起こされている場合は、できるだけ早くコンポーネントをアップグレードする必要があります。 |