IAST 配置檔

配置 JSON 檔案來覆寫預設 IAST 設定,並且只報告您想要知道的漏洞。

結構

配置檔是 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 
    } 
  ] 
} 

部署

透過 ASoC RESP API 或從本端檔案部署 IAST 代理程式。在這兩種情況下,您可以在 IAST 主動監視時進行更新,且更新將在幾秒內生效。

REST API

  1. 傳送要求 FileUpload。回應包括 FileId
  2. 使用您收到的 FileId 來更新 IAST 代理程式。

本端檔案

透過將配置檔複製到伺服器上的目錄來部署配置檔。部署位置通常是伺服器暫時資料夾。last 將位置列印至 stout

範例:

選項(O)

日誌記載

可以透過配置檔來控制下列記載選項。
欄位 Values 說明:
logLevel 無、錯誤、警告、資訊、除錯、追蹤

預設值: DEBUG

IAST 日誌檔的記載層次。
註: 將記載層次設為「追蹤」可能會對 IAST 代理程式效能造成負面影響。
stdOutLogLevel 一、錯誤、警告、資訊、除錯、追蹤

預設值: INFO

IAST 事件到 stdout.的記載層次。
註: 將記載層次設為「資訊」以外的任何值,會對 IAST 代理程式效能產生負面影響。
maxSizeLogFileMB 整數

預設值: 20

為了避免大型檔案,當 IAST 日誌檔達到預先定義的上限 (MB)時,會壓縮該日誌,並將新日誌儲存至新檔案。使用此欄位設定檔案大小上限。

通訊 ASoC

這些欄位會控制與 ASoC 的通訊。
欄位 Values 說明:
reportToAsoc TRUE, FALSE

預設值: TRUE

啟用或停用報告至 ASoC
asocPollingIntervalInSec 整數

預設值 10

定義 IAST 向 ASoC 報告偵測到問題的頻率(以秒為單位)。
註: 將間隔縮短到 10 秒內,可能會對與 ASoC 的網路通訊造成龐大額外負荷。增加間隔需要更高的記憶體用量,若在最新資料傳送至 ASoC 之前停止 IAST 代理程式,可能會導致資料流失。

一般

欄位 Values 說明:
monitoredApp "monitoredApps": [ "app1", "app2"] 只會限制對這些應用程式的監控。 命名在伺服器上執行,且要由 IAST 監控的 Web 應用程式;其餘會受到忽略 。

如果未定義,伺服器上的所有應用程式都會受到監控。

應用程式名稱通常衍生自 WAR 檔名,所以 demo.war 稱為 demo。如需詳細資料和例外,請參閱 偵測受監視的應用程式名稱

memoryThreshold 0.5 - 1.0 之間的任何值

預設值: 0.95

如果用戶端的 JVM 記憶體用量超過此臨界值,則 IAST 會自動將其本身停用以防止 OutOfMemoryError。當記憶體用量低於臨界值時,IAST 會自動重新啟用其本身。
hidePasswords 布林。預設值: 否 設為 True 時,使用者介面或報告中不會顯示密碼,但會以字串 **CONFIDENTIAL** 取代

過濾

依名稱空間過濾惡意探索
欄位 Values 說明:
ignoredMethods 字串陣列

預設值: None

根據名稱空間來過濾漏洞攻擊問題(Cryptography.PoorEntrpy、Cryptography.InsecureAlgorithm 等)。
註: 這會從名稱空間排除所有問題。
範例:
如果要將這個問題和所有問題從 com.hcl.appscan.systemtests.SystemTests 過濾掉,則可以新增:
"ignoredMethods": ["com.hcl.appscan.systemtests.SystemTests"]
忽略不安全 Cookie 的報告
欄位 Values 說明:
ignoredNonSecureCookies, ignoredNonHttpOnlyCookies 字串陣列

預設值: None

未設定安全屬性或設定 Cookie 的僅 HTTP 屬性時的 IAST 報告。若要過濾掉特定的 Cookie,請將 Cookie 名稱新增至配置檔。
範例:如果要過濾掉這個問題,則可以新增:
"ignoredNonSecureCookies": ["myCookie"]

停用安全規則

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

依預設,系統會啟用所有安全規則。透過配置檔,您可以停用部分報告類型。指定要停用的欄位,所有其他欄位將保持啟用狀態。

例如,“CheckCsrf” : false 會停用此類型所有問題的報告。
停用按標頭名稱或 Cookie 名稱的注入
欄位 Values 說明:
safeHeaders, safeCookies 字串陣列

預設值: None

用標頭或 Cookie 的名稱將其宣告為安全。這會導致 IAST 停止追蹤來自此標頭或 Cookie 的輸入,因此不會報告來自此值的任何注入。
提示: HTTP 標頭名稱需區分大小寫。
範例:
下列「跨網站 Scripting」問題的來源是名為 input2.的標頭。如果要過濾此輸入造成的所有問題,則可以新增:
"safeHeaders": ["input2"]

連結鉤

在某些情況下,將連結鉤新增至 IAST,以新增測試中應用程式的行為會很有用。比方說,針對 IAST 無法辨識的專有消毒方法,可告知 IAST 清除每一個輸入此方法的字串。
註: IAST 不會知道此方法實際執行的動作,因此,使用者必須驗證消毒是否正確且足以滿足其安全需求。

範例 1:特定漏洞的消毒

下列配置會將 com.myApp.common.MyEscapeUtils 類別中的 myEscapeHtml 方法定義為跨網站 Scripting 的消毒器,而回覆值會遭到清除。如果回覆值的結尾為 SQL 接收槽,則其仍會報告。例如,
"hooks": [ 
    { 
      "targets": [ 
        "com.myApp.common.MyEscapeUtils" 
      ], 
      "methods": [ 
        "myEscapeHtml" 
      ], 
      "parameters": [ 
        ["java.lang.String"] 
      ], 
      "rules": [ 
      { 
        "type": "sanitizer", 
        "from": "return", 
"vulnerability": "CrossSiteScripting.Reflected" 
      } 
    ], 
      "requiresSuperTypes": false 
    } 
  ] 

範例 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 
    } 
  ]