IAST百科全书第9期:到底什么是污点跟踪算法?
2023-7-13 19:23:41 Author: mp.weixin.qq.com(查看原文) 阅读量:4 收藏

IAST百科全书

到底什么是污点跟踪算法?

大家好,欢迎来到新一期的IAST百科全书。

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

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

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

数据流三元组

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

·sources

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

·sinks

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

·sanitizers

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

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

数据调用链梳理

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

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

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

往期推荐


文章来源: https://mp.weixin.qq.com/s?__biz=MzU4MjEwNzMzMg==&mid=2247493302&idx=2&sn=555fa63b4ce75b83d33a7b41467296b2&chksm=fdbfcf1dcac8460bb7d485ff87f7fe46b46197da34c1f62299a3a3ece2ebd3cbf3e07ee7a98d&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh