IAST 配置文件

配置 JSON 文件以覆盖缺省 IAST 设置,并仅报告您希望了解的漏洞。

Structure

配置文件为 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

示例:

选项

日志记录

可以通过配置文件控制以下日志记录选项。
字段 描述
logLevel NONE、ERROR、WARNING、INFO、DEBUG 和 TRACE

缺省值:调试版

IAST 日志文件的日志记录级别。
注: 将日志级别设置为 TRACE 会对 IAST 代理性能产生负面影响。
stdOutLogLevel ONE、ERROR、WARNING、INFO、DEBUG、TRACE

缺省值:信息

要进行 stdout 的 IAST 事件的日志记录级别。
注: 将日志级别设置为 INFO 外的任何值都将对 IAST 代理程序性能产生负面影响。
maxSizeLogFileMB 整型

缺省值:20

要避免生成大型文件,当 IAST 日志文件达到预定义的最大值(以 MB 为单位)时,会压缩该文件,并且新日志将保存到一个新文件中。使用此字段设置最大文件大小。

与以下项的通信: ASoC

这些字段控制与 ASoC 的通信。
字段 描述
reportToAsoc TRUE、FALSE

缺省值:True

启用或禁用向 ASoC 报告。
asocPollingIntervalInSec 整型

缺省值为 10

定义 IAST 向 ASoC 报告所检测到的问题的频率(以秒为单位)。
注: 将间隔缩短到 10 秒以下会给与 ASoC 的网络通信带来巨大开销。增加间隔需要更高的内存使用率,如果在将最新数据发送到 ASoC 之前停止 IAST 代理程序,则可能会导致数据丢失。

常规

字段 描述
monitoredApp "monitoredApps": [ "app1", "app2"] 将仅监控这些应用程序。 命名在服务器上运行的要由 IAST 监控的 Web 应用程序;将忽略其他 Web 应用程序 。

如果未定义,将监控服务器上的所有应用程序。

应用程序名称通常是从 WAR 文件名派生的,因此 demo.war 名为 demo。有关详细信息和例外情况,请参阅检测受监控的应用程序名称

memoryThreshold 0.5 到 1.0 之间的任何值

缺省值:0.95

如果客户机的 JVM 内存使用率超过此阈值,IAST 将自动禁用自身以防止发生 OutOfMemoryError。当内存使用率减少到低于此阈值时,IAST 将自动再次启用自身。
hidePasswords 布尔值。缺省值:False 设置为 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-only 属性时,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 
    } 
  ] 

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