これは、New Relic IAST の問題を自分で診断するための最初のステップです。問題を迅速に解決するには、このガイドを使用してください。
問題がここにリストされていない場合は、いつでもNew Relic サポートにお問い合わせください。
one.newrelic.com > All capabilities > IAST > Testsに移動します。 アプリケーションをクリックすると、アプリケーションのテスト効率、脆弱性、カバーされている API、メソッド呼び出しなどのデータを確認できます。
IAST を有効にした後、アプリケーションを再起動する必要があります。
これが新しいアプリの場合、ファイアウォールにより NR プラットフォームとの通信が妨げられている可能性があります。 nr-security-home/logs/snapshots
の最新のタイムスタンプを含むファイル内のサービス統計セクションを確認してください。 そのリスト内の 6 つの項目すべてに「OK」と表示されるはずです。 そうでない場合は、ログで追加情報を確認するか、 New Relic サポートにお問い合わせください。 標準のファイアウォールのドキュメントも参照できます。
New Relic UI にアプリケーションが表示され、セキュリティ エージェントが IAST を正常に開始したにもかかわらず、UI に脆弱性が表示されない場合は、次の点を確認してください。
アプリケーションの効率レベル: one.newrelic.com > All capabilities > IAST > Testsに移動します。 アプリケーションを検索し、概要セクションを確認してください。 アプリケーションの IAST カバレッジが低い場合は、アプリケーションにテスト ケースを追加して、テスト効率を高めます。
IAST カバレッジ: one.newrelic.com > All capabilities > IAST > Testsに移動します。 アプリケーションを検索してクリックします。 概要セクションで、IAST 分析の範囲が広く、脆弱性が検出されていないかどうかを確認します。これは、アプリケーションが安全であることを意味します。
アプリケーションのフレームワークまたは脆弱性カテゴリはサポートされていません。
これらを確認しても IAST に脆弱性が見つからない場合は、 New Relic サポートにお問い合わせください。
one.newrelic.com > All capabilities > IAST > Testsにアプリケーションが表示されない場合は、次の点を確認してください。
- アプリケーションは稼働中です。アプリケーション プロセスまたは[APM とサービス] ページを確認してください。
- アプリケーションのログを調べて、問題があるかどうかを確認します。
- APMエージェントのバージョンを確認し、必要に応じて更新します。
newrelic.yml
構成ファイルには、インストール ページに示されているように、問題の変更が含まれています。nr-security-home/logs
ディレクトリに移動し、LANGUAGE-security-collector-init.log
ファイル内の[SETP-8]
行を見つけます。 予期しないエラーがあるかどうかを確認し、何が失敗したかを確認します。- アプリケーションにトラフィックが発生しています。 IAST がアプリケーションをテストできるように、トラフィックを生成します。
- プロキシまたはファイアウォールがアクセスをブロックしています。 ドメインcsec.nr-data.netの次の IP
3.134.136.130, 18.219.177.104, 18.117.21.106
、ドメインcsec-gov.nr-data.netの次の IP3.130.22.102, 3.138.243.136, 3.139.218.150
、ドメインcsec.eu01.nr-data.netの次の IP18.185.235.118, 3.125.193.113, 3.75.166.122
をホワイトリストに追加します。 ただし、IP はいつでも変更される可能性があるため、IP ではなくドメインをホワイトリストに追加することをお勧めします。 - TLS 証明書は正しいです。 Let's Encrypt CA 証明書 ( Let's Encrypt 証明書からダウンロード) をローカル信頼ストアに追加します。 完全な信頼チェーンを確立するには、ルート証明書と中間証明書 (ISRG Root X1 と Let's Encrypt R3) の両方を含めます。
- アプリケーションのフレームワークまたは脆弱性カテゴリがサポートされています。
セキュリティ エージェントが正常に動作している場合:
one.newrelic.com > All capabilities > IAST > Testsにアプリケーションが表示されます。 アプリケーションが起動され、トラフィックが生成されます。
nr-security-home/logs
ディレクトリで、LANGUAGE-security-collector-init.log
ファイルを検索します。 ファイル名のLANGUAGE
、使用しているものに置き換えます。 次の手順を検索して、問題の場所を確認します。- [STEP-1]: セキュリティエージェントが起動中です。
- [STEP-2]: セキュリティ エージェントは一意の識別子を生成します。Web ソケット接続の場合、ノード認証ヘッダーが表示されます。
- [STEP-3]: セキュリティ エージェントはアプリケーションに関する情報を収集します。
- [STEP-4]: SaaS バリデータへの Web ソケット接続が正常に確立されました。
- [STEP-5]: セキュリティ エージェント スレッドが開始されました。
- [STEP-6]: アプリケーションのインストルメンテーションは成功しました。
- [STEP-7]: アプリケーションはポリシーと構成を受信して適用します。
- [ステップ-8]: 検証のために送信された最初のイベントが表示されます。これは、セキュリティ エージェントが正常に開始されたことを意味します。
以下は、セキュリティ エージェント ログ ファイル
LANGUAGE-security-collector-init.log
の抜粋です。Init Log File initiated.Init Logger configured successfully with level: INFO and rollover on max size 52428800.2023-05-26 10:45:02 : [8] [New Relic RPM Connection Service] INFO : com.newrelic.api.agent.security.Agent - [STEP-1] => Security agent is starting2023-05-26 10:45:02 : [8] [New Relic RPM Connection Service] INFO : com.newrelic.agent.security.AgentInfo - [STEP-2] => Generating unique identifier: 8a6d79c3-ad67-35d6-b811-17f7515b7f292023-05-26 10:45:02 : [8] [New Relic RPM Connection Service] INFO : com.newrelic.api.agent.security.Agent - [STEP-3] => Gathering information about the application
IAST UI にアプリケーションが表示され、セキュリティ エージェントが正常に開始された場合でも、IAST が動作しているかどうかを確認できます。 確認するには次の手順に従います。
one.newrelic.com > All capabilities > IAST > Testsに移動します。
Application testsタブでアプリケーションを検索し、クリックします。
APIs covered 、 methods calls 、 application testing efficiencyを含むテストの詳細を表示します。
また、ログレベルをdebug/finestに設定すると、
nr-security-home/logs/java-security-collector.log
ファイルでFuzz request receivedを検索できます。 これは、IAST 分析が進行中であることを示しています。
IAST はトラフィックの存在を検出するとテストを開始するため、アプリケーションが動作するかどうか、またはアプリケーションに向けられたトラフィックがあるかどうかを確認してください。 アプリのUIまたはAPIエンドポイントを実行します。
IAST が既知の脆弱性を検出しない場合は、次のような理由が考えられます。
IAST はアプリケーション フレームワークをサポートしていません。
このモジュールにはインストレーションはありません。
アプリケーションは、IAST の一部として、しばらくの間、高トラフィックとレイテンシを表示する可能性があります。 この問題は、IAST テストが終了すると数分で解決するはずです。
nr-security-home/logs/snapshots
フォルダー内のスナップショット ログ ファイルを確認することもできます。ログ ファイルには、セキュリティ エージェントのステータス、リソースの使用状況、および最後の 5 つのエラーが表示されます。
アプリケーションに HTTP リクエストの処理の一環としてファイルやディレクトリを作成する機能がある場合、IAST はコード パスをテストし、そのようなファイルやディレクトリを作成しようとします。 アプリケーション コードは、受信 HTTP リクエストの影響を受けて、これらのファイルを作成します。 エージェントはそれらを削除できません。
どの API もファイルやディレクトリを作成できないことが確実な場合は、アプリケーションの設定とログをNew Relic Supportと共有してください。
IAST の一部として、セキュリティ エージェントは負荷を増加させる新しいリクエストをアプリケーションに送信し、その結果リソース使用率が増加します。この IAST 分析では、アプリケーション内の捕捉されなかったエラーや例外を明らかにすることもできます。
リソース不足によりアプリケーションがクラッシュした場合は、リソースを増やし、アプリケーションを再起動し、再度 IAST を実行します。
以下のクエリのappId
を更新し、それを書き込みビルダーで実行すると、アプリケーションに関して報告されたすべての脆弱性を見つけることができます。
SELECT * FROM Vulnerability WHERE issueType = 'Application Vulnerability' AND appId = YOU_APPLICATION_ID
IAST が誤検知を報告したと思われる場合は、脆弱性のステータスを更新してください。 次の手順を実行します:
アプリケーションを検索: one.newrelic.com > All capabilities > IAST > Testsに移動します。
[すべてのアプリケーション] タブをクリックし、実際の脆弱性ではない脆弱性を選択します。
脆弱性の詳細セクションで、報告された脆弱性の脆弱性ステータスを更新できます。 そのステータスを次のように更新できます。
- 誤検知
- 解決済み
- 未解決
ステータスを更新した脆弱性を一覧表示する場合は、検出された悪用可能な脆弱性リストでフィルターを適用できます。
Golang の場合は、アプリケーションが使用するライブラリとフレームワークに必要なインストルメンテーション パッケージをインポートしていることを確認してください。
たとえば、アプリケーションがMongo DBのライブラリを使用していると仮定します。 この特定のライブラリの場合、このインストゥルメンテーション パッケージをnewrelic からインポートする必要があります。
import ("github.com/newrelic/go-agent/v3/integrations/nrsecurityagent""github.com/newrelic/go-agent/v3/newrelic""github.com/newrelic/csec-go-agent/instrumentation/csec_mongodb_mongo""go.mongodb.org/mongo-driver/mongo")アプリケーションの要件によっては、他のパッケージをインポートする必要がある場合があります。 サポートされているパッケージのリストはここで確認してください。
各モジュールに対応するパッケージがインポートされていることを確認してください。
HTTP プロトコル エンドポイントを開いている場合は、エンドポイント名の前後に
newrelic.WrapListen
関数を配置して、そのエンドポイントに対する脆弱性スキャンを有効にします。http.ListenAndServe(newrelic.WrapListen(":YOUR_PORT_NUMBER"), nil)重要
Linux 環境の場合はこの手順をスキップできます。
Outbound HTTP Requestの特定のケースまたは外部サービスへの呼び出しの場合は、アプリケーション メソッドを更新する必要があります。
IAST は Windows 環境でサポートされています。 ただし、一部の Java アプリケーションでは、 classCirculatoryError
が発生する可能性があり、次のようにエージェント設定で優先度の低いインストゥルメンテーションを無効にする必要があります。
セキュリティ設定から低優先度のインストゥルメンテーションを無効にします。
low-priority-instrumentation:enabled: false優先度の低いインストゥルメンテーション クラスをクラス トランスフォーマーから除外します。 これを行うには、構成ファイルの
class_transformer
セクションに指定された行を追加します。com.newrelic.instrumentation.security.low-priority-instrumentation:enabled: false
いいえ、IAST の調査結果をダウンロードするための API はありません。
IAST は、テスト中に観察した内容に基づいて、新しいリクエストをアプリケーションに送信します。 目的は、エクスプロイト ペイロードを使用した追加の API およびメソッド呼び出しの呼び出しを含む悪意のある動作が可能かどうかを判断することです。 これにより、顧客データの望ましくない操作やランタイム保護サービスのトリガーが発生する可能性があります。