再借你一双慧眼 识别强大的代码安全审计工具

        今天,我还是分析一款强大的代码安全审计工具到底应该什么样?还是以OWASP Benchmark的Java案例作为例子进行分析。Benchmark中2740个包含真假漏洞的案例中,分为10类,例如SQL注入、命令行注入、弱密码、弱哈希等等。下面我以其中三个类别的真假漏洞作为例子,进行分析。

先看SQL注入,我从其中选择了一个具有代表性的案例,BenchmarkTest00105.java,是一个假漏洞。

使用代码安全审计工具进行检测,不会报出sql注入漏洞。为什么呢?下面分析过程。

在第70行,int[] counts = statement.executeBatch(); 执行批量查询是SQL注入的污点语句,从该语句向上面查看,找到执行的sql语句,在69行,把sql语句添加到批量处理中。参数sql来自于65行,String sql = "SELECT * from USERS where USERNAME='foo' and PASSWORD='"+ bar +"'";  这一行相加了用户输入的密码,bar字符串,bar字符串又来自于第61行,60行。

 

在条件表达式中 bar = (7*18) + num > 200 ? "This_should_always_happen" : param;

(7*18)+num其值大于200,为真,所以bar= "This_should_always_happen";为固定字符串,所以不会出现sql注入风险漏洞。

下面是把影响bar取值条件语句修改一下,把num由100修改为10,此时bar = (7*18)+ num > 200 ? "This_should_always_happen" : param;的条件表达式值为假,bar取param的值,而param是未经处理,所以存在着SQL注入风险漏洞。检测工具应该能够报出这个漏洞。

    强大的代码安全审计工具之所以能够报出这个安全漏洞,主要是因为采用常量替换技术。在条件表达式,把num的值带入到表达式中进行计算,再进行符号执行,所以虽然代码安全审计工具采用静态分析技术,但是也会在内存中进行动态的计算和执行,所以能够发现运行时缺陷和安全漏洞。

下面我们再分析一个XSS跨站攻击案例。BenchmarkTest02233.java是一个假漏洞。

使用代码安全审计工具并不会报出XSS安全漏洞,工具中报出的另外的漏洞。因为valuesList.get(1)取值时,从list中取出的值是”moresafe”,固定字符串,所以不存在安全漏洞。

下面我修改第68行,bar取值不再取valuesList的第1个元素,而是取第0个元素,也就是Param,该值是POST未经处理的返回值。第54行打印输出时仍然是param值,未处理的post参数值,存在xss的风险。所以代码安全审查工具应该报出这个潜在漏洞。你看,该工具报出了XSS安全漏洞。

下面再看一个CMDI命令行注入案例。BenchmarkTest00051.java 是一个假漏洞。下面查看一下添加到执行命令的参数args,param来自于调用String param = scr.getTheValue("vector");的返回值。

    看另一个文件SeparateClassREquest.java,调用getTheValue返回的是一个固定值bar,所以不会产生命令行注入安全漏洞。

 

下面我把46行调用getTheValue修改为调用String param = scr.getTheParameter("vector"); getTheParameter函数返回的参数传入的vector参数的值,该值来自于post请求,未经处理,应该存在SQL注入的风险。

 

     修改后,覆盖原来的文件,执行代码安全审计工具,重新叫么,可以看到工具检测出潜在的命令行注入漏洞。

 

      各位,通过上面代码安全审计工具先分别对三个假漏洞进行检测,能够分析出不存在安全漏洞。但是代码进行调整,当输出字符串中有从POST请求中取值,又未经处理时,则存在着安全漏洞,能够检测出来。一款强大的代码安全审计工具应该能够区分真假漏洞,在对实际项目进行检测时,才能保证准确度,做到静态分析类工具能够达到的最小误报率和最小漏报率。

        (完)

-------------------------------------------------------------------------------------

关注安全  关注作者

发布了309 篇原创文章 · 获赞 31 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/manok/article/details/103776661
今日推荐