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

:攻撃と解決策

最終更新日:Dec 30, 2024

このトピックでは、攻撃統計に含まれる攻撃について説明し、対応する解決策を提供します。

攻撃の種類説明解決策
JNDI インジェクションアプリケーションが JNDI クエリを開始したが、クエリ URL が攻撃者によって制御されている場合、攻撃者はアプリケーションが実行されているサーバーに悪意のあるリンクをクエリさせ、悪意のあるクラスを読み込ませることができます。これにより、サーバー上で任意のコードが実行される可能性があります。
  • この脆弱性がサードパーティコンポーネントによって引き起こされている場合は、できるだけ早くコンポーネントをアップグレードする必要があります。
  • この脆弱性が 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 ステートメントを連結することによって発生します。入力パラメータをプリコンパイルするか、ホワイトリストとブラックリストを使用して連結パラメータを制限します。
XXEXXE インジェクションは、XML 外部エンティティインジェクションの略です。XML ファイルが外部エンティティを参照している場合、攻撃者は悪意のあるコンテンツを作成して、任意のファイルの読み取り、コマンドインジェクション、内部ネットワーク攻撃を引き起こす可能性があります。アプリケーションが XML ファイルを解析するときに外部エンティティを読み込む必要があるかどうかを確認します。必要ない場合は、XML 解析設定で外部エンティティを無効にします。
XSSクロスサイトスクリプティング (XSS) 攻撃は、Web サイトに悪意のあるスクリプトを挿入します。ユーザーが Web サイトを閲覧すると、Web サイトに挿入されたスクリプトが実行されます。HTML インジェクション攻撃と同様に、XSS 攻撃により、攻撃者は Web ページに HTML コードを挿入できます。XXS 攻撃からアプリケーションを保護するには、ユーザーが送信したコードが Web ページに表示されるときに、入力データを厳密にフィルタリングしてエスケープする必要があります。
  1. 入力データをフィルタリングし、次の文字を厳密にチェックします:', ", <, >, on*, script, iframe。ユーザーが指定した入力データ、HTTP リクエストの Cookie の変数、HTTP リクエストヘッダーの変数を確認します。
  2. データのタイプ、形式、長さ、範囲、内容を確認します。
  3. クライアント側とサーバー側の両方でデータを確認およびフィルタリングします。
  4. Web ページに表示される入力データをエンコードおよび変換します。たとえば、データを HTML エンティティまたは JavaScript データにエンコードします。出力データを確認します。データベースの値は、Web サイトに複数回表示される場合があります。入力値をエンコードした場合でも、すべての出力値も確認する必要があります。
式言語 (EL) インジェクション式は、実行時のデータクエリや処理など、幅広い機能を提供します。複数の式は、関数呼び出しなどの高度な権限を必要とする機能も提供します。これらの機能が制限されていない場合、攻撃者は式のコンテンツを変更して任意のコードを実行できます。式のコンテンツを厳密に制限し、Java 関数呼び出しを無効にします。この脆弱性がサードパーティコンポーネントによって引き起こされている場合は、できるだけ早くコンポーネントをアップグレードする必要があります。
悪意のある Attach APIAttach API は、実行中のアプリケーションのバイトコードを動的に変更するために使用できる Java テクノロジーです。攻撃者はこのテクノロジーを使用して、エージェント型のメモリホースを挿入できます。この方法は非常に欺瞞的です。サーバーにコード実行の脆弱性がある可能性があります。脆弱性の場所を確認し、コードを実行する権限を制限してください。
悪意のある Bean バインディング一部の Java フレームワークは、アプリケーションの実行時に Bean プロパティバインディングをサポートしています。バインドできる Bean プロパティのタイプが制限されていない場合、攻撃者は機密性の高い Bean プロパティの値を変更してアプリケーションの動作を妨害したり、任意のコードを実行したりする可能性があります。バインドできる Bean プロパティのタイプを制限して、class や class ローダーなどの Bean プロパティの値が変更されないようにする必要があります。この脆弱性がサードパーティコンポーネントによって引き起こされている場合は、できるだけ早くコンポーネントをアップグレードする必要があります。
悪意のある DNS クエリ攻撃者は、複数の方法を使用して悪意のある DNS クエリを悪用できます。攻撃者は、DNS プロトコルを使用して機密情報を内部ネットワークから持ち出す可能性があります。また、攻撃者は DNS プロトコルを使用して、内部ネットワークシステムに SSRF や JNDI インジェクションなどの脆弱性があるかどうかを検出することもあります。悪意のある DNS クエリは、サーバーがユーザー制御パラメータにリクエストを送信するときに発生します。パラメータ設定を確認し、ホワイトリストを設定します。
悪意のあるリフレクション呼び出しRASP の自己保護モジュールは、攻撃者がリフレクションを使用して実行時に RASP データを変更することを禁止します。サーバーにコード実行の脆弱性がある可能性があります。脆弱性の場所を確認し、コードを実行する権限を制限してください。
悪意のあるクラスの読み込みゼロデイ脆弱性と Web シェルは、悪意のあるクラスの読み込みに依存しています。悪意のあるクラスが読み込まれると、攻撃者は悪意のあるクラスを初期化し、コードを実行する権限を取得し、悪意のある操作を実行できます。
  • Web シェルを使用して悪意のあるクラスが読み込まれる場合は、できるだけ早く Web シェルを削除してください。
  • フレームワークの脆弱性のために悪意のあるクラスが読み込まれる場合は、できるだけ早くフレームワークをアップグレードしてください。
SSRFサーバーサイドリクエストフォージェリ (SSRF) は、攻撃者がサーバーサイドアプリケーションに HTTP リクエストを実行させることによって Web サイトの内部システムを攻撃できるようにする Web セキュリティの脆弱性です。SSRF は、サーバーが入力パラメータにリクエストを送信するときに発生します。パラメータ設定を確認し、ホワイトリストを設定します。
悪意のあるファイルの読み取りと書き込みJava は、ファイルの読み取りおよび書き込み操作のために RandomAccessFile クラスを提供します。このクラスを使用してファイルを読み書きする場合、ファイルパスとファイルの内容を制限しないと、攻撃者は機密性の高いシステムファイルを読み取ったり、トロイの木馬ファイルをアップロードしたりする可能性があります。ファイルを期待どおりに読み書きできるかどうかを確認します。例外が発生した場合は、関数コードを確認し、ブラックリストを設定します。
悪意のあるファイルのアップロードWeb サイトで提供されるファイルアップロード機能の場合、ファイルの種類が制限されていないと、攻撃者はトロイの木馬ファイルをアップロードすることによってサーバーでより高い権限を取得する可能性があります。これは深刻な害を引き起こします。アップロードするファイルの種類を制限し、JSP ファイルなど、実行権限を持つファイルのアップロードを禁止します。
デシリアライズ攻撃Java デシリアライズは、バイトシーケンスを Java オブジェクトに復元するプロセスです。Java オブジェクトに高リスクを引き起こす可能性のあるコードが含まれている場合、攻撃者はデシリアライズプロセス中に Java オブジェクトのメンバー変数を制御して攻撃を開始できます。
  1. 脆弱性が検出されたコンポーネントをできるだけ早くアップグレードします。
  2. 脆弱性が修正されたコンポーネントの公式バージョンがリリースされていない場合は、一時的にデシリアライズを無効にします。
コマンドインジェクションコマンドインジェクションの脆弱性により、攻撃者はサーバー上で任意のシステムコマンドを実行できます。ほとんどの場合、リモートコマンドの実行は、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 関数呼び出しを無効にします。この脆弱性がサードパーティコンポーネントによって引き起こされている場合は、できるだけ早くコンポーネントをアップグレードする必要があります。