网站建设、公众号开发、微网站、微商城、小程序就找牛创网络 !

7*24小时服务专线: 152-150-65-006 023-68263070 扫描二维码加我微信 在线QQ

行业资讯团结互助,让我们共同进步!

当前位置:主页 > 技术资讯 > 新闻资讯 > 行业资讯 >

我们的优势: 10年相关行业经验,专业设计师量身定制 设计师一对一服务模式,上百家客户案例! 企业保证,正规流程,正规合作 7*24小时在线服务,售后无忧

自动化代码扫描,用于企业安全建设

文章来源:牛创网络 发布时间:2019-12-16 10:23:52 围观次数:
分享到:

摘要:互联网上引入代码扫描并不是为了推荐基于语法和语义分析的代码扫描工具。 典型的代表是fortify和Checkmarx。

一、代码扫描的目标


网上关于代码扫描的介绍无一不是在推荐基于语法语义分析的代码扫描工具,典型的代表就是fortify、Checkmarx。总结起来观点无非是, 目前市面上有基于正则表达式和基于语义分析的两种检测方式,基于正则表达式的传统代码安全扫描方案的缺陷在于其无法很好的“理解”代码的语义,而是仅仅把代码文件当作纯字符串处理。静态扫描商用产品都运用了语义分析、语法分析等程序分析技术静态分析层负责对代码文件进行“理解”,完成语义、语法层面的分析。能进行完整数据流分析,通过分析污点传播进行漏洞判定。


之前也使用过fortify进行自动化代码扫描,由于误报率太高导致推送给业务方的漏洞代码不被重视,也使安全部门的权威性受损。业务方不可能从众多的代码结果中排查出漏洞代码,所以不得不放弃fortify(fotify做代码审计辅助工具还是不错的)。另外一个原因是,fortify没法自定义扫描规则,当有内部特定代码风险的时候无法编写规则扫描,带来了一定的不便利性。


基于以上两点问题,对于代码扫描有了新目标。首先扫描准确性要高,其次要能灵活的自定义规则。经过分析发现,再厉害的语法语义扫描器也避免不了误报,最大难点在于扫描器根本无法识别过滤函数的有效性。静态代码扫描要解决这个问题除非用AI来解决,这是云舒的观点我非常赞同,等有一天AI能向人一样阅读代码的时候这个问题可能会解决吧。所以决定采用基于正则表达式的代码扫描器,我们可以扫一些代码规范类的问题。例如:不规范函数、SQL语句拼接、redis和MongoDB未授权访问、数据库连接信息硬编码、DEBUG 模式未关闭、fastjson远程代码执行漏洞的特定代码等等。虽然扫描来的这些问题不一定是漏洞但一定是代码风险也是不规范的写法,这样业务方也更容易接受。对于漏洞类型的代码可以交给运行态代码检测工具iast去发现,iast的缺点就是需要依靠第三方测试流量可能面临覆盖面不全的尴尬境地,所以需要结合静态代码使用。


不管怎么说能发现潜在风险并且业务方能接受整改,那么我们的目的就达到了。


为什么不选择强化


  代码扫描器的一般扫描逻辑是围绕查找源和接收器。 源是污染的源头,是有害数据的切入点。 接收器是程序执行的有害部分。 接下来,跟踪污染路径并确定Source-Path-Sink是否关注传递的参数是否得到有效过滤以及逻辑是否重现了攻击。 如果最终执行功能的输入是可传递的,则通常容易受到攻击。


  强化会导致误报。 对于源函数和接收器,它们是系统定义的函数。  Fortify具有足够的实力来整理每种语言的输入功能和执行功能列表并形成规则。 但是,过滤功能似乎是无能为力的,主要原因是过滤规则很奇怪,并且静态代码的静态分析无法识别是否已经执行了有效的过滤。


  例如,在不同情况下,有多种针对xss漏洞的过滤方法。 用于输出到html,js,css,RTF等的过滤规则多种多样。如果不是人为地审核代码,则很难分析代码是否已完成有效过滤。


  这是一个扫描案例,用于分析强化误报的原因。


  在此选择WebGoat代码作为测试代码。


  (1)扫描在此处识别了xss漏洞代码,并且还绘制了数据流。 乍一看,强化很强大。

blob.png

(2)增加过滤功能,过滤恶意参数

blob.png

(3)再次强化扫描,有效过滤恶意参数仍然报告xss漏洞,这显然是错误的肯定。

blob.png

(4)在过滤规则中添加过滤功能等同于告知强化该功能已有效过滤。


  右键单击以添加规则

blob.png

blob.png

(5)再次使用强化扫描代码,并清除了错误警报。 上图扫描了6个xxs漏洞,下图扫描了2个漏洞。 过滤功能中添加fotify规则白名单的代码不再扫描出xss漏洞。

blob.png

基于定期扫描原理的分析


  工人必须首先完善其工具,了解设备使用的最佳方法是了解其代码操作的原理,以使其具有灵活性。


  这是MongoDB未经授权访问漏洞的示例,用于说明代码扫描的原理。


  如果未对MongoDB访问进行身份验证,或者未按照官方标准对它进行身份验证,我们都认为这存在安全风险。


  MongoDB未经认证

public void init(){

        client = newMongoClient("192.168.23.24", 27022);

        dataBase =client.getDatabase("duanjt");

        collection =dataBase.getCollection("teacher");

    }

    // 插入一条数据

    @Test

    public void insert() {

        Document doc = new Document();

        doc.append("name", "李四");

        doc.append("addr", "重庆");

        doc.append("likes", Arrays.asList("排球", "篮球"));// 数组

        collection.insertOne(doc);// 插入数据时会自动创建数据库和**

       System.out.println("success");

    }

MongoDB认证&JavaAPI接口调用:

MongoClient client= null;

try {

MongoCredentialcredential = MongoCredential.createCredential(“username” , “dbname”, “pwd”);

ServerAddress addr= new ServerAddress(“ip”, port);

client = newMongoClient(addr, Arrays.asList(credential));

DB db =client.getDB(MongoDBCfg.DB_SP2P);

// 以下可以对db进行相关操作

} catch (Exceptione) {

} finally {

if (client != null){

client.close();

}

}

在这里,这些规则通过常规分组表达式分为定位规则(定位执行功能)和前规则(通常是用于输入参数的规则)。 如果您已经编写了规则和定位规则,则必须同时匹配这两个规则。 说明存在代码风险),防御规则(防御功能规则,如果可以识别此规则,则可以认为没有代码风险)

blob.png

代码扫描逻辑:


  1)首先下载项目的git仓库代码,并将其存储在指定的目录中,以进行下一次代码扫描。

blob.png

2)扫描准备工作以获得有关代码的基本信息


  使用cloc命令可以解析项目的基本代码信息。 例如,计算多少行代码,多少种扩展文件类型,多少文件等等。


  同时,在Dependencies类中,将使用mvndependency:树来分析项目的依赖jar包的主要版本和次要版本以形成应用程序资产,这便于在jar依赖项漏洞时快速检测哪些应用程序具有漏洞依赖项。  (例如fastjson)发生。

blob.png

blob.png

3)通过遍历代码规则来扫描文件。 在这里,使用grep命令扫描文件。


  首先,将在此处扫描定位规则。 扫描定位规则后,我们将进一步判断前提条件和防御规则,并确定是否存在代码风险。

blob.png

4)开始匹配前线规则或防御规则。


  如果仅编写定位规则并且匹配它们以指示存在代码风险,则可能有一些配置类规则,例如,csrf开关是否已关闭,DEBUG模式是否未关闭等。


  如果编写上述规则和定位规则,则需要将两个规则匹配以指示代码风险。 它可能是一些需要确定前提条件的规则,例如cookie不安全存储,HTTP响应拆分等。


  如果编写防御规则,则只要防御规则生效,就不会有代码风险,例如本文中分析的MongoDB未授权访问漏洞将使用防御规则。

blob.png

在前面匹配到了定位规则(MongoClient(\s*)\((\s*)\”\w*\”)后,这里由匹配到了防御规则MongoCredential\.createScramSha1Credential\(

blob.png

因为防御规则是匹配的,所以这里is_vul = False可以判断为没有代码风险。


  如果使用Java本机API而不使用身份验证代码访问MongoDB,则此处的防御规则无法匹配。 因此,is_vul = True,表示业务方尚未对MongoDB进行身份验证,因此可以确定存在代码风险。

blob.png


本文由 牛创网络 整理发布,转载请保留出处,内容部分来自于互联网,如有侵权请联系我们删除。

相关热词搜索:自动化代码扫描 企业安全建设

上一篇:行业早报:恶意软件Krampus-3PC的目标瞄准iPhone用户,微软发出警告:电信运营商需警惕一波大规模黑客攻击来袭,新型网络钓鱼手法来了
下一篇:Chrome 79 Android版用户数据出现被清空问题,Google已暂停推送

热门资讯

鼠标向下滚动