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注入规则的编写造成了一定的误报。

checkmarx使用笔记、原理的更多相关文章

  1. Bigtable 论文 阅读笔记 - 原理部分

    不支持markdown,桑心.更好的阅读体验请看:Github/Bigtable.md Paper: Google Bigtable paper Notes author: Lhfcws Wu Tim ...

  2. elasticsearch学习笔记--原理介绍

    前言:上一篇中我们对ES有了一个比较大概的概念,知道它是什么,干什么用的,今天给大家主要讲一下他的工作原理 介绍:ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户 ...

  3. PCA人脸识别学习笔记---原理篇

     前言 在PCA人脸识别中我们把一个人脸图片看做一个特征向量,PCA做的事情就是:找到这样一组基向量来表示已有的数据点,不仅仅是将高维度数据变成低维度数据,更能够找到最关键信息. 假设已有数据{xi} ...

  4. Vxlan学习笔记——原理

    1. 为什么需要Vxlan 普通的VLAN数量只有4096个,无法满足大规模云计算IDC的需求,而IDC为何需求那么多VLAN呢,因为目前大部分IDC内部结构主要分为两种L2,L3.L2结构里面,所有 ...

  5. Vxlan学习笔记——原理(转)

    文章转自http://www.cnblogs.com/hbgzy/p/5279269.html 1. 为什么需要Vxlan 普通的VLAN数量只有4096个,无法满足大规模云计算IDC的需求,而IDC ...

  6. java 多线程详细笔记(原理理解到全部使用)

    鸽了好久以后终于又更新了,看同学去实习都是先学源码然后修改之类,才发觉只是知道语法怎么用还远远不够,必须要深入理解以后不管是学习还是工作,才能举一反三,快速掌握. 目录 基础知识 进程与线程 线程原子 ...

  7. [知识库分享系列] 四、ASP.NET MVC and Winform

    知识库分享系列: [知识库分享系列] 三.Web(高性能Web站点建设) [知识库分享系列] 二..NET(ASP.NET) [知识库分享系列] 一.开篇 分享介绍本篇分享两个知识库节点,分别为“AS ...

  8. 02 - Unit011:Spring AOP

    Spring AOP 面向切面(儿)编程(横切编程) Spring 核心功能之一 Spring 利用AspectJ 实现. 底层是利用 反射的动态代理机制实现的 其好处: 在不改变原有功能情况下, 为 ...

  9. c++json构建与解析组件 RapidJSON 没用过永远不会知道有多好用

    参考资料: 官方文档 推荐[腾讯RapidJSON]学习笔记 原理请参考以上资料 构建json Document doc; Document::AllocatorType &allocator ...

随机推荐

  1. URL.createObjectURL()

    URL.createObjectURL() 静态方法会创建一个 DOMString,其中包含一个表示参数中给出的对象的URL.这个 URL 的生命周期和创建它的窗口中的 document 绑定.这个新 ...

  2. Linux 性能监控 —— Load Average

    一. 简单介绍 top. uptime. cat /proc/loadavg 命令中 Load average: 4.90, 5.51, 5.77        整体含义: 正在执行的任务数量 + 排 ...

  3. modelsim显示状态机名称的方法

    modelsim显示状态机名称的方法 2015-09-08 15:35 1414人阅读 评论(0) 收藏 举报  分类: FPGA基础知识(40)  版权声明:转载请注明出处:http://blog. ...

  4. leetCode 87.Scramble String (拼凑字符串) 解题思路和方法

    Given a string s1, we may represent it as a binary tree by partitioning it to two non-empty substrin ...

  5. linq基础,正则表达式,.net相关

    声明扩展方法的步骤:类必须是static,方法是static,第一个参数是被扩展的对象,前面标注this.使用扩展方法的时候必须保证扩展方法类已经在当前代码中using.  LINQ:将int数组中大 ...

  6. java内存管理和gc回收机制

    Java垃圾回收概况 Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代码 ...

  7. windows下安装JDK和Tomcat

    一.安装JDK 1.安装 JDK当前最高版本为1.7. 下载并运行JDK 1.7安装程序jdk-7u25-windows-i586.exe,直接安装到C盘(也可以在其它盘,但文件名一定要是英文名),其 ...

  8. SQL SERVER 2000安装教程图文详解

    注意:Windows XP不能装企业版.win2000\win2003服务器安装企业版一.硬件和操作系统要求 下表说明安装 Microsoft SQL Server 2000 或 SQL Server ...

  9. jQuery 库 - 特性

    jQuery 是一个 JavaScript 函数库. jQuery 库包含以下特性: HTML 元素选取 HTML 元素操作 CSS 操作 HTML 事件函数 JavaScript 特效和动画 HTM ...

  10. xilinx 赛灵思fpga verilog hdl 教程

    http://www.eefocus.com/article/08-03/37231s.html http://wenku.baidu.com/link?url=5mdkMmm4BGGi7gRdgSk ...