跳到主要内容
版本:Next

巡检排查

1. 文档背景

IAST,通过将安全测试引擎Agent嵌入到应用程序中,实时监控和分析应用程序的运行过程,从而检测潜在的安全漏洞。在用户使用IAST的时候,会出现对漏洞产出数量产生疑问(检测引擎故障等),或者出现无漏洞产出的情况。因此编写一份IAST巡检手册旨在解决这些问题。该手册旨在提供一套明确的巡检指南,帮助用户了解如何正确地检查IAST,同时也可作为日常巡检的参考。

通过定期进行IAST巡检,可以确保IAST系统的漏洞检测地准确性以及有效性,及时发现和修复潜在的安全漏洞,提高应用程序的安全性。巡检手册将列出一系列的巡检项和操作步骤,以确保IAST系统的正常运行和准确性,同时帮助用户理解IAST的工作原理和输出结果。通过巡检手册,用户可以了解如何验证IAST系统是否正确配置和部署,可以帮助用户更好地了解IAST的工作状态,提高IAST的准确性及可用性。

2. 巡检群体以及问题情况

巡检的目的是为了确保IAST的稳定性以及Agent的高可用性,主要的受益群体为商业版正式或POC用户。巡检情况分为日常巡检以及漏洞产出异常的情况。

3. 日常巡检步骤

3.1 检查IAST服务端基本情况

检查项操作提示/参考值结论备注
IAST服务器基本情况CPU占用率≤90%内存占用率≤90%存储占用率≤90%□正常 □异常
检查项说明该项检查目的是为了防止负载过满导致IAST服务端无法处理正常请求。
巡检流程1、检查CPU占用率:top_1_2、检查内存占用率:free -h_或 top_Mm3、检查存储占用率:df -Th注:如为分布式部署,存储占用重点检查Mysql所在机器(VM2)。内存、CPU重点检查剩余机器。
处置方案内存、CPU占用过满,请联系洞态IAST工作人员。存储占用过满,清空调用链数据表。 清空调用链数据表方法:* docker exec -it [mysql* container id**] bash
异常情况说明

3.2 检查Agent在线以及项目异常情况

检查项操作提示/参考值结论备注
Agent挂载情况Agent列表:状态在线项目列表:状态正常□正常 □异常
检查项说明该项主要是针对未检出漏洞或检出异常的项目,Agent是否正常运转。
巡检流程1、登录洞态IAST Web端,点击项目管理->项目列表观察项目状态是否正常。2、点击项目管理->Agent管理观察,对应项目的Agent的存活状态,是否为运行中且上报状态是否为允许上报。3、在Agent管理页面,点击(下载日志)按钮,观察日志是否存在ERROR日志项,如有报错请查看附件1:Agent错误代码,确定影响范围并联系洞态IAST工作人员协助排查。(如日志无法下载,请登录所在业务服务器的终端,在/tmp/dongtai-[username]/v1.x.x/logs中获取)
处置方案如有离线情况,请观察项目的存活状态或检查项目Agent的挂载情况,命令:ps-ef | grep dongtai(该命令在业务服务器中执行,观察是否存在-javaagent:dongtai-agent.jar)
异常情况说明

3.3 检查漏洞检测引擎工作情况

检查项操作提示/参考值结论备注
检测引擎工作情况无ERROR日志□正常 □异常
检查项说明该项主要是针对未检出漏洞或检出异常的项目,Agent流量上报正常的情况。
巡检流程1、登录IAST服务端ssh(分布式登录VM3,检测引擎所在机器)。2、获取检测引擎日志:docker logs -f dongtai_-dongtai-worker-high-freq-1 2>&1 | grep ERR_注:无Error记录,证明检测引擎无异常
处置方案如有ERROR异常联系洞态IAST工作人员。
异常情况说明

3.4 检查Server工作情况

检查项操作提示/参考值结论备注
检测Server工作情况无ERROR日志□正常 □异常
检查项说明该项主要是针对未检出漏洞或检出异常的项目,Agent流量上报正常的情况。
巡检流程1、登录IAST服务端ssh(分布式登录VM1,Server所在机器)。2、获取检测引擎日志:docker logs -f dongtai_-dongtai-server-1 2>&1 | grep ERR_注:无Error记录,证明Server无异常
处置方案如有ERROR异常联系洞态IAST工作人员。
异常情况说明

4. 漏洞检出异常巡检步骤

4.1 检查IAST服务端基本情况

检查项操作提示/参考值结论备注
IAST服务器基本情况CPU占用率≤90%内存占用率≤90%存储占用率≤90%□正常 □异常
检查项说明该项检查目的是为了防止负载过满导致IAST服务端无法处理正常请求。
巡检流程1、检查CPU占用率:top_1_2、检查内存占用率:free -h_或 top_Mm3、检查存储占用率:df -Th注:如为分布式部署,存储占用重点检查Mysql所在机器(VM2)。内存、CPU重点检查剩余机器。
处置方案内存、CPU占用过满,请联系洞态IAST工作人员。存储占用过满,清空调用链数据表。 清空调用链数据表方法:* docker exec -it [mysql* container id**] bash
异常情况说明

4.2 检查Agent在线以及项目异常情况

检查项操作提示/参考值结论备注
Agent挂载情况Agent列表:状态在线项目列表:状态正常□正常 □异常
检查项说明该项主要是针对未检出漏洞或检出异常的项目,Agent是否正常运转。
巡检流程1、登录洞态IAST Web端,点击项目管理->项目列表观察项目状态是否正常。2、点击项目管理->Agent管理观察,对应项目的Agent的存活状态,是否为运行中且上报状态是否为允许上报。3、在Agent管理页面,点击(下载日志)按钮,观察日志是否存在ERROR日志项,如有报错请查看附件1:Agent错误代码,确定影响范围并联系洞态IAST工作人员协助排查。(如日志无法下载,请登录所在业务服务器的终端,在/tmp/dongtai-[username]/v1.x.x/logs中获取)
处置方案如有离线情况,请观察项目的存活状态或检查项目Agent的挂载情况,命令:ps-ef | grep dongtai(该命令在业务服务器中执行,观察是否存在-javaagent:dongtai-agent.jar)
异常情况说明

4.3 检查Agent上报情况

检查项操作提示/参考值结论备注
Agent上报情况Agent上报数据正常落库□正常 □异常
检查项说明该项主要是针对未检出漏洞或检出异常的项目且Agent正常挂载的情况下流量的上报情况
巡检流程1、登录洞态IAST Web端,点击项目管理->Agent管理,记录需检查Agent上报的Agent ID(第一列)2、登录IAST服务端ssh(分布式登录Mysql所在机器)。3、登录mysql,查看上报情况
处置方案若查询到的结果为0,请检查Agent的网络通信是否正常,同时下载日志观察报错情况。(如日志无法下载,请登录所在业务服务器的终端,在/tmp/dongtai-[username]/v1.x.x/logs中获取) 若均为正常,请调试Agent日志为trace等级,并且提供JDK版本、框架、中间件等信息,联系洞态IAST工作人员。
异常情况说明

4.4 检查漏洞检测引擎工作情况

检查项操作提示/参考值结论备注
检测引擎工作情况无ERROR日志□正常 □异常
检查项说明该项主要是针对未检出漏洞或检出异常的项目,Agent流量上报正常的情况。
巡检流程1、登录IAST服务端ssh(分布式登录VM3,检测引擎所在机器)。2、获取检测引擎日志:* docker logs -f* dongtai_-dongtai-worker-high-freq-1 2>&1 | grep ERR_ 注:无Error记录,证明检测引擎无异常
处置方案如有ERROR异常联系洞态IAST工作人员。
异常情况说明

4.5 检查Server工作情况

检查项操作提示/参考值结论备注
检测Server工作情况无ERROR日志□正常 □异常
检查项说明该项主要是针对未检出漏洞或检出异常的项目,Agent流量上报正常的情况。
巡检流程1、登录IAST服务端ssh(分布式登录VM1,Server所在机器)。2、获取检测引擎日志:* docker logs -f* dongtai_-dongtai-server-1 2>&1 | grep ERR_ 注:无Error记录,证明Server无异常
处置方案如有ERROR异常联系洞态IAST工作人员。
异常情况说明

4.6 检查调用链是否正常

检查项操作提示/参考值结论备注
检测调用链是否正常正常□正常 □异常
检查项说明该项主要是针对未检出漏洞或检出异常的项目,且Agent与服务端正常的情况下。
巡检流程1、登录IAST Web端,打开数据查询功能。2、触发业务功能接口3、在数据查询功能中搜索触发功能接口的URI4、找到对应的请求返回信息后,点击污点调用链。观察污点流图是否正常,是否存在空白或单图形的情况。(点击URL进入,获取调用链ID)
处置方案如出现异常则需考虑是否为自研或二开(尤其Serverlet方面的改动),需进行适配。如无异常请提供调用链信息:登录mysql,下载调用链信息docker exec -it [mysql container id] bashmysql -uroot -pdongtai-iast dongtai_webapiselect method_pool from iast_agent_method_pool where id=xx;注:id获取关注巡检流程第四步
异常情况说明

4.7 检查规则策略是否正常

检查项操作提示/参考值结论备注
检测规则策略情况正常□正常 □异常
检查项说明该项主要是针对未检出漏洞或检出异常的项目,检查规则策略是否正常
巡检流程1、登录IAST Web端,打开策略管理->检测规则是否正常打开2、打开策略管理->策略模板是否正常勾选3、打开策略管理->自定义规则,观察上方的规则总数是否≤500
处置方案如规则总数>500,则需要刷新调整规则策略刷新规则方法:* docker exec -it dongtai-dongtai-server-1 bash -c 'python [manage.py](http://manage.py "manage.py") load_hook_strategy'*
异常情况说明

5. 改进建议

如无上述问题,但流量上报慢,可以对Server以及检测引擎进行扩容:

docker-compose -p dongtai up --scale dongtai-server=3 --scale dongtai-worker-high-freq=3 -d

docker exec -it dongtai-dongtai-server-1 bash -c 'python manage.py load_hook_strategy'

附件1: Agent错误代码列表

错误代码描述是否影响应用实际影响
10101日志初始化失败agent 日志输出可能不正常
10102日志配置失败agent 日志输出可能不正常
10111fluent 文件设置执行权限失败fluent 进程无法启动, 无法上报 agent 日志
10112fluent 文件解压失败fluent 进程无法启动, 无法上报 agent 日志
10113fluent 进程启动失败fluent 无法上报 agent 日志
10121agent 配置初始化失败agent 可能无法正常按预期运行
10122熔断降级服务端下发配置处理失败熔断降级非预期运行
10131agent 的资源文件获取失败agent 无法运行
10141http client 处理请求体失败agent 可能无法运行/openapi 请求失败/agent 端请求重放失败
10142http client 请求的响应码有误agent 可能无法运行/openapi 请求失败
10143http client 请求的响应处理失败agent 可能无法运行/openapi 请求失败
10144http client 发送请求失败agent 可能无法运行/openapi 请求失败/agent 端请求重放失败
10145http client 下载文件响应为空jar 包无法正常下载导致 agent 可能无法运行
10146http client 下载文件响应无效jar 包无法正常下载导致 agent 可能无法运行
10147http client 下载文件失败jar 包无法正常下载导致 agent 可能无法运行
10201-javaagent premain 方法执行失败agent 无法运行
10202jattach 解压失败agent 无法运行
10203jattach 执行失败agent 无法运行
10204attach 模式处理参数失败agent 无法运行
10205attach 模式安装失败agent 无法运行
10206attach 模式卸载失败agent 无法正常卸载
10211agent 无法识别中间件agent 无法运行
10212agent 注册失败agent 无法运行
10213agent 注册响应状态无效agent 无法运行
10214agent 注册处理响应有误agent 无法运行
10215agent 注册响应信息无效agent 无法运行
10301解压 agent 所需 jar 包失败agent 使用非云端依赖的 jar 包时无法运行
10302agent 调用检测引擎安装失败检测引擎无法安装
10303agent 调用检测引擎启动失败检测引擎无法启动
10304agent 调用检测引擎停止失败检测引擎无法停止
10305agent 调用检测引擎卸载失败检测引擎无法卸载
10401获取动态线程失败卸载时部分需要退出的动态线程无法正常退出
10402动态线程退出失败卸载时部分需要退出的动态线程无法正常退出
10403监控线程检查失败相关的监控功能无法正常运行(配置更新/性能监控/状态监控等)
10411性能监控指标采集失败无法正常采集性能指标, 可能会影响熔断降级
10412性能监控指标检查失败无法正常检查性能指标, 可能会影响熔断降级
10413获取硬盘使用率失败仅影响服务端硬盘占用展现数据
10501同步云端熔断降级配置失败可能会影响熔断降级
10502熔断降级指标配置有误可能会影响熔断降级
10503熔断降级状态变化, 但当前 agent 包含异常状态影响熔断降级状态切换
10511熔断降级检查器创建失败可能会影响熔断降级
10521熔断降级熔断器指标转换失败可能会影响熔断降级
20101检测引擎安装失败检测引擎无法安装
20102检测引擎卸载失败检测引擎无法卸载
20111hook 规则加载失败无法执行方法 hook, 漏洞无法检出
20112个别规则配置无效影响个别 hook 点, 会影响个别调用链采集, 可能会影响个别漏洞检出
20121hook 引擎启动失败方法 hook 可能无效, 可能会影响检测
20122卸载时恢复部分类失败未知无法正常卸载, 部分类无法恢复至为 hook 前状态
20131引擎配置初始化失败可能会影响引擎运行
20141类的祖先获取失败可能影响部分接口/抽象类的 hook
20201类转换失败部分类转换失败(无法 hook), 不能采集对应数据, 可能会影响相关检测
20202类文件 dump 目录创建失败无法正常 dump 类文件(用于debug)
20203类文件 dump 失败无法正常 dump 类文件(用于debug)
20211转换类抛异常 ClassCircularityError可能agent 无法正常运行, 可能会导致应用启动失败
20212重新转换类失败部分类重新转换失败, 可能会影响相关检测
20221ASM 构造类结构失败未知类转换失败, 无法采集相应方法数据
20222ASM 通过类名构造类结构失败未知类转换失败, 无法采集相应方法数据
20301hook 点离开 http 失败可能无法正常上报调用链数据, 可能影响当前请求漏洞检出
20302hook 点采集 http 数据失败可能影响 request/respose 采集, 可能影响当前请求漏洞检出, 可能影响 spring boot api 采集
20303hook 点采集数据失败影响调用链采集, 可能影响漏洞检出
20304feign 调用数据采集失败影响 spring cloud(feign) 的跨服务数据采集, 跨服务数据无法关联
20305调用链长度超过限制(配置值)调用链长度太长, 超过长度的忽略采集, 可能会影响当前请求的漏洞检出
20311spring boot api 采集线程执行失败无法正常采集 spring boot 的 api
20321生成/上报调用链数据失败无法正常上报调用链数据, 影响当前请求漏洞检出
20351污点标记获取参数失败污点数据不准确, 可能会影响检测结果
20352污点标记范围失败污点范围不准确, 可能会影响检测结果
20361dubbo consumer 调用数据采集失败影响 dubbo consumer 调用数据的采集, 影响跨服务的关联
20362dubbo provider 离开 hook 点失败影响 dubbo provider 数据上报, 影响跨服务的关联
20363dubbo provider 数据采集失败影响 dubbo provider 数据采集, 影响跨服务的关联
20401报告发送失败agent 发送给服务端的报告失败(调用链/重放数据/API/启动时间等)
20411重放请求执行失败请求重放失败
20501SCA 扫描 JAR 包失败无法从 JAR 包获取组件信息
20502SCA 报告发送失败组件信息上报失败
20503SCA 计算 JAR 包签名失败无法获取准确的 JAR 包信息, 影响组件检测
20601加载本地配置失败可能主要是本地 hook 黑名单, 用可能会造成过度 hook
20611污点池新增污点失败可能影响调用链串联, 进而影响漏洞检测
20612自定义模型获取污点失败可能影响调用链串联, 进而影响漏洞检测
99999未知错误因为 agent 包和 core 包版本不一致导致的错误代码未识别, 一般需要升级 agent
20701Open API类型转换错误API采集的某个字段类型信息丢失,影响较小
20801dubbo api采集获取到dubbo协议为空DUBBO API采集失败
20802dubbo api采集获取到dubbo协议时发生异常DUBBO API采集失败
20803dubbo api采集获取到export map为空DUBBO API采集失败
20804dubbo api采集获取到export map异常DUBBO API采集失败
20805dubbo api导出的service转换失败DUBBO API采集部分接口信息丢失
20806dubbo api导出的service列表为空DUBBO API采集失败
20807dubbo alibaba api解析导出的service列表时发生异常DUBBO API采集失败
20808dubbo alibaba api采集时发生异常DUBBO API采集失败
20809dubbo apache api采集时发生异常DUBBO API采集失败
20901spring mvc api采集时发生异常Spring API采集失败