hello大家好,欢迎来到IAST百科全书第10期,今天和大家分享一下agent具体是怎么工作的。
现在很多应用都使用依赖注入、动态加载、反向控制等其他技术,引入了很多组件,只有在应用跑起来的时候才会调用。
这种时候,源代码分析只能提供一个局部观察,验证安全最好的方法还是让应用跑起来,这也就是IAST的工作范畴了。
通常,IAST的agent和APM里的agent的技术类似,IAST使用agent对插桩的应用和API进行监控,agent从运行的应用中直接检查安全相关的数据流,并传输给server端的分析引擎,server端再执行漏洞分析检测。
比如在Java语言里,插桩(Instrument)是JVM提供的一个可以修改已加载类的类库,是专为 Java 语言编写的插桩服务。它可以构建一个独立于应用程序的 Agent,从而监测运行在 JVM 上的程序。
不同的开发语言对插桩技术和路径的支持不一样,有些开发语言插桩比较困难,这也是IAST在检测漏洞的时候,需要区分开发语言的原因。
当一个应用或者API被加载到内存中开始运行的时候,应用中插桩的agent会自动执行了。
agent工作流程
以洞态agent为例,agent一般是这么个工作流程:
1 从 DongTai Server 注册 DongTai Agent
2 按 Web 应用服务器开发语言下载和安装对应的 dongtai-core
3 dongtai-core 会从 server 上 pull 检测规则
4 最后再按检测规则采集数据,然后将数据回传至 DongTai Server
IAST agent 数据监测
IAST agent能够从应用中实际地提取所有信息。一般可以说,IAST可以实现包括代码和HTTP流量的分析,是SAST和DAST的一个合集,具体来说,IAST agent可以实现这些数据的监测:
代码
—IAST能访问所有和应用一起部署的源代码和二进制代码,包括库和框架,并且可以精确到代码行。
库和框架
IAST能看到部署的每一个库和框架,分析应用和API如何使用它们。不仅IAST能够根据已知漏洞(CVE)来评估库,也能识别部分或整体隐藏在库里面的未知漏洞。因为IAST能精确知道库里面的哪一部分被应用真正调用,所以它能够过滤掉从来没有被调用的,和库相关的漏洞。
HTTP流量
IAST能够看到HTTP请求和响应,发现和这些流量相关的漏洞。
应用程序状态
IAST能够检查程序执行时的应用状态。例如,IAST能看到调用安全方法时使用的参数来发现弱点,如传递“DES”参数给加密密码构造函数。
数据流
从开始进入应用的时候开始,IAST就追踪不信任的输入数据。这是识别最重要的漏洞种类—注入类漏洞的关键。这个技术,本质上就是上期我们讲的“污点跟踪”,跟踪真实数据在应用中的流动,非常精确。
控制流
IAST了解应用的控制流,能够识别出应用行为中漏洞的特征。如果一个应用要求在每个web服务中,采用service()方法检查访问控制,这个特征很容易就会被IAST发现。
后端连接
IAST能够检查围绕着后端连接的所有细节,如数据库、操作系统调用、目录、队列、Socket套接字、电子邮件和其他系统。IAST使用这个信息识别出架构缺陷和安全缺陷。
配置
IAST能访问应用、框架、应用服务器、和平台的配置,保证正确的安全配置。IAST甚至能查询应用组件的运行时配置,如XML解析器。注意某些平台,如.NET,重度依赖配置来实现安全。
好了今天的IAST百科全书就到这里,我们下期再见!
近期评论