zoukankan      html  css  js  c++  java
  • checkmarx使用笔记、原理

    checkmarks是一款商业的代码静态分析工具,和pmd类似的地方是他分析的是java文件,而非class文件。checkmarks使用 .net开发,必须安装在windows上,它的规则也是类似.net语言的语法。

    checkmarks 的工作机制大概如下:

    1、创建任务时可以通过git、svn、或者上传代码打包。

    2、checkmarks会将代码进行语法树解析。

    3、然后分析代码中的数据流,并将整个代码中的数据流存储到sql server数据库中,可以理解成一张庞大的数据流网,这个分析比较吃内存。

    4、然后匹配规则,checkmarx自带了各种规则,也可以自己编写规则。规则也叫query,顾名思义就是从整个数据流网中查找我们关心的数据流。比如数据流的起点是request.getparameter("url")的调用,终点是 httpClient.exec,这样我们来判断是否存在ssrf漏洞。

    自定义规则:

    checkmarks的规则就是一个一个的查询,这个查询定义了如何从数据流网中找到我们关心的数据流。

    checkmarks内置了大量的函数,100多个吧,我们利用这种函数找到我们关心的数据流的起点,终点。当然也可以的定义过滤点,比如某个安全API的调用作为一个过滤点,过滤掉已经修复了安全问题的数据流。

    不足之处:

    目前checkmarks的问题还是比较多的,虽然支持了各类的语言,常见语言基本都支持java、php、go等等,但是默认的规则基本上实用性比较差,需要花很多时间去自己编写规则。

    目前不支持模块引擎语言,比如velocity、freemarker、thymeleaf等的分析

    对前后端分离的项目分析无法支持,比如后端spring mvc,前端vue就无法关联分析了。也不支持 vue、react等框架文件的分析。其实实际代码审计关联分析java、xml、vue等文件类型,目前cheackmarx不会做这样的分析。这两条对xss这样的规则编写造成了很大的困扰。

    checkmarks封装的比较死,写规则时有时候让人琢磨不透,没法做定制开发,不够灵活。

    对spring这种依赖注入的情况,数据流经常是不完整的,注入的接口类没有实际逻辑就会断,其实数据流是走到了接口的实现类,checkmarx并不会分析实际注入了哪个实现类并进行数据流跟踪。会造成一定的漏报。

    对一些orm框架也没法做数据流分析,比如mybatis、spring data jpa等,实际执行sql操作的类都是运行时产生的,比如mapper接口实现类,checkmarx不会根据这些框架的实际情况进行分析。这对sql注入规则的编写造成了一定的误报。

  • 相关阅读:
    Ubuntu 15.04 开机无法进入图形界面,自动进入emergency mode解决方法
    Docker常用命令
    安装mongodb时报错 configure: error: Cannot find OpenSSL's libraries
    Invalid command 'Header', perhaps misspelled or defined by a module not included in the server configuration
    mysql varchar类型转换int类型
    elasticsearch 安装 head插件
    解决linux下root运行Elasticsearch异常
    PHP 数组中出现中文乱码,json_encode返回结果为null 或false
    Git命令_git remote与远程仓库管理
    Git命令_git clone和git fork的区别以及pull request含义
  • 原文地址:https://www.cnblogs.com/fsqsec/p/8464271.html
Copyright © 2011-2022 走看看