IAST 構成ファイル

デフォルトの IAST 設定をオーバーライドして、把握したい脆弱性のみをレポートするように JSON ファイルを構成します。

構造体

構成ファイルは user-config.json であり、エージェントの開始前または実行時に配置できます。変更が有効になるまで数秒かかる場合があります。ファイルが追加されると、以前のバージョンは無効になります。ファイルが削除された場合、IAST はデフォルト構成に戻ります。

サンプル・ファイル:
{   
  "logging": {
     "logLevel": "ERROR",
     "stdoutLogLevel": "DEBUG",
     "maxSizeLogFileMB": 100
  },
   "monitoredApps": [ 
    "app1", "app2"
  ],
  "asoc": {
    "reportToAsoc": true,
    "asocPollingIntervalInSec": 10
  },
  "memoryThreshold": 0.85, 
  "ignoredMethods": [ 
    "DriverManager.getConnection" 
  ], 
  "ignoredNonSecureCookies": [ 
    "myCookieName" 
  ], 
  "ignoredNonHttpOnlyCookies": [ 
    "anotherCookieName" 
  ], 
  "securityRules": { 
    "CheckCsrf": false, 
    "CheckServerHeader": false, 
    "CheckXPoweredBy": false, 
    "CheckXAspNetVersion": false 
  }, 
  "safeHeaders": ["MySafeHeader", "MyOtherSafeHeader"],
  "safeCookies": ["MySafeCookie", "MyOtherSafeCookie"],
  "hidePasswords": true

  "hooks": [ 
    { 
      "targets": [ 
        "com.ibm.myApp.common.MyEscapeUtils" 
      ], 
      "methods": [ 
        "myEscapeHtml" 
      ], 
      "parameters": [ 
        ["java.lang.String"] 
      ], 
      "rules": [ 
      { 
        "type": " sanitizer", 
        "from": "return", 
"vulnerability": "CrossSiteScripting.Reflected" 
      } 
    ], 
      "requiresSuperTypes": false 
    } 
  ] 
} 

配備

IAST エージェントは、ASoC REST API またはローカル・ファイルから配置します。どちらの場合も、IAST がアクティブに監視している間に更新でき、数秒以内に更新が有効になります。

REST API

  1. 要求 FileUpload を送信します。応答には FileId が含まれます。
  2. 受信した FileId を使用して IAST エージェントを更新します。

ローカル・ファイル

構成ファイルは、サーバー上のディレクトリーにコピーすることで配置します。配置場所は通常、サーバーの一時フォルダーです。last でこの場所が stout に出力されます。

例:

オプション(O)

ロギング

構成ファイルを介して、以下のロギング・オプションを制御できます。
フィールド 説明
logLevel NONE、ERROR、WARNING、INFO、DEBUG、TRACE

デフォルト: DEBUG

IAST ログ・ファイルのロギング・レベル。
注: ログ・レベルを TRACE に設定すると、IAST エージェントのパフォーマンスが低下する可能性があります。
stdOutLogLevel ONE、ERROR、WARNING、INFO、DEBUG、TRACE

デフォルト: 情報

stdout への IAST イベントのロギング・レベル。
注: ログ・レベルを INFO 以外の値に設定すると、IAST エージェントのパフォーマンスが低下します。
maxSizeLogFileMB Integer

デフォルト: 20

大きなファイルを避けるために、IAST ログ・ファイルが事前定義された最大値 (MB 単位) に達すると、そのファイルは圧縮されて、新しいログは新しいファイルに保存されます。このフィールドで最大ファイル・サイズを設定します。

次との通信: ASoC

これらのフィールドでは、ASoC との通信を制御します。
フィールド 説明
reportToAsoc TRUE、FALSE

デフォルト: TRUE

ASoC へのレポートを有効化または無効化します。
asocPollingIntervalInSec Integer

デフォルトは 10 です

検出された問題を IAST が ASoC にレポートする頻度 (秒単位) を定義します。
注: 間隔を10 秒未満に縮めると、ASoC とのネットワーク通信に大きなオーバーヘッドが発生する場合があります。この間隔を延ばすと、メモリー使用量が増加し、最新のデータが ASoC に送信される前に IAST エージェントが停止すると、データが失われるおそれがあります。

標準

フィールド 説明
monitoredApp "monitoredApps": [ "app1", "app2"] は、監視をこれらのアプリケーションのみに制限します。 IAST によって監視されるサーバー上で実行される Web アプリケーションの名前。その他は無視されます。

定義されていない場合、サーバー上のすべてのアプリケーションが監視されます。

アプリケーション名は通常、 WAR ファイル名から派生するため、demo.wardemo という名前になります。詳細と例外については、「モニター対象のアプリ名の検出」を参照してください。

memoryThreshold 0.5 から 1.0 までの値

デフォルト: 0.95

クライアントの JVM メモリー使用量がこのしきい値を超えると、OutOfMemoryError を回避するために、IAST が自動的に無効化されます。メモリー使用量がしきい値を下回った場合は、IAST が自動的に有効化されます。
hidePasswords ブール値。デフォルト: 偽 True に設定すると、パスワードはユーザー・インターフェースやレポートには表示されませんが、ストリング **CONFIDENTIAL** に置き換えられます。

フィルタリング

名前空間による悪用のフィルタリング
フィールド 説明
ignoredMethods ストリングの配列

デフォルト: None

名前空間に基づいて、エクスプロイトの問題 (Cryptography.PoorEntrpy、Cryptography.InsecureAlgorithm など) をフィルターにより除外します。
注: これにより、その名前空間からのすべての問題が除外されます。
例:
この問題と com.hcl.appscan.systemtests.SystemTests からのすべての問題をフィルターにより除外するには、以下を追加します。
"ignoredMethods": ["com.hcl.appscan.systemtests.SystemTests"]
安全でない Cookie に関するレポートの無視
フィールド 説明
ignoredNonSecureCookies, ignoredNonHttpOnlyCookies ストリングの配列

デフォルト: None

セキュア属性が設定されていない場合、または Cookie の http のみ属性が設定されている場合は、IAST により報告されます。特定の Cookie をフィルターで除外するには、構成ファイルに Cookie 名を追加します。
例:この問題をフィルターにより除外するには、以下を追加します。
"ignoredNonSecureCookies": ["myCookie"]

セキュリティー・ルールの無効化

例:
"securityRules": { 
    "CheckCsrf": false, 
    "CheckServerHeader": false, 
    "CheckXPoweredBy": false, 
    "CheckXAspNetVersion": false 
  } 
} 

デフォルトでは、すべてのセキュリティー・ルールが有効になっています。構成ファイルを使用して、レポート・タイプの一部を無効にできます。無効化するフィールドのみを指定します。他のフィールドはすべて有効化されたままになります。

例えば、“CheckCsrf” : false では、このタイプのすべての問題のレポートが無効化されます。
ヘッダー名または Cookie 名による注入の無効化
フィールド 説明
safeHeaders, safeCookies ストリングの配列

デフォルト: None

ヘッダーまたは Cookie の値を、その名前で安全と宣言します。これにより、IAST でこのヘッダーまたは Cookie からの入力の追跡が停止されるため、この値からの注入がレポートされなくなります。
ヒント: HTTP ヘッダー名では、大文字と小文字は区別されません。
例:
次のクロスサイト・スクリプティングの問題のソースは、input2 というヘッダーです。この入力によって発生したすべての問題をフィルタリングするには、次を追加します。
"safeHeaders": ["input2"]

フック

場合によっては、IAST にフックを追加して、テスト中のアプリケーションの動作を追加すると役に立ちます。例えば、IAST で認識されない独自のサニタイズ・メソッドでは、このメソッドに入るすべてのストリングを消去するように IAST を設定できます。
注: IAST ではこのメソッドで実際に何が行われるのかは認識されていないため、サニタイズが正しいこととセキュリティー要件が満たされていることは、ユーザーが確認します。

例 1: 特定の脆弱性のサニタイズ

次の構成では、クラス com.myApp.common.MyEscapeUtils 内のメソッド myEscapeHtml をクロスサイト・スクリプティング用のサニタイザーとして定義し、戻り値が消去されます。戻り値が最終的に SQL シンクに格納されるかどうかは、引き続きレポートされます。例えば、
"hooks": [ 
    { 
      "targets": [ 
        "com.myApp.common.MyEscapeUtils" 
      ], 
      "methods": [ 
        "myEscapeHtml" 
      ], 
      "parameters": [ 
        ["java.lang.String"] 
      ], 
      "rules": [ 
      { 
        "type": "sanitizer", 
        "from": "return", 
"vulnerability": "CrossSiteScripting.Reflected" 
      } 
    ], 
      "requiresSuperTypes": false 
    } 
  ] 

Example 2: すべての脆弱性からのサニタイズ

次の構成では、クラス com.myApp.common.MyEscapeUtils 内のメソッド myEscapeAll をすべての脆弱性タイプのサニタイザーとして定義し、戻り値が消去されます。
"hooks": [ 
    { 
      "targets": [ 
        "com.myApp.common.MyEscapeUtils" 
      ], 
      "methods": [ 
        "myEscapeAll" 
      ], 
      "parameters": [ 
        ["java.lang.String"] 
      ], 
      "rules": [ 
      { 
        "type": " sanitizeAll", 
        "from": "return" 
      } 
    ], 
      "requiresSuperTypes": false 
    } 
  ]