污点跟踪算法原理

发布时间:2024年01月19日

现在我们已经知道了IAST发现漏洞后,可以像白盒一样精准定位到漏洞代码行,但是背后实现的原理不太一样。

从漏洞成因上来看,大多数漏洞都是出于某个参数点可控,导致外部用户可以控制这个参数,传入非法或者恶意的参数值,最后造成了漏洞。

基于这个漏洞原理,IAST主要的原理就是基于污点跟踪算法来判断漏洞,那这个污点跟踪算法到底是怎么一回事呢?

一、数据流三元组

我们可以把数据流抽象为sources、sanitizers、sinks三元组。

·sources

代表污点输入源,和零信任的概念类似,通常我们认为,任何从外部输入的数据都是不受信任的污点数据,都有可能对系统造成危害。

·sinks

代表污点汇聚点,通常是指将会产生安全问题的敏感操作。

·sanitizers

是指对污点数据的无害处理。

污点跟踪就是去跟踪那些输入到系统中的污点数据(sources),在代码中流转、传播的过程中没有经过足够的清洗、校验、过滤等无害化操作(sanitizers),就直接进行会产生安全风险的敏感操作(sinks)的数据流。

二、数据调用链梳理

在IAST中,首先Agent通过插桩拿到所有传进来的参数。然后,根据参数的流向等信息,还原污点调用链,并判断参数传进来时,是否用户可控,传播的过程中是否有过滤方法来修改原始参数的值。

如果没有做过滤,并且外部也可以随意控制参数的值,例如SQL注入,最终走到了JDBC上执行,那么就可以确定,当前是存在SQL注入漏洞的。

这里只是拿SQL注入做个例子,其他类似漏洞也是一样的检测原理,也正是这个原理,让IAST在SQL注入这种类型的检测上面准确率极高。

文章来源:https://blog.csdn.net/philip502/article/details/135695876
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。