用codeql来处理静态代码扫描

admin 2022年2月2日23:42:20评论137 views字数 967阅读3分13秒阅读模式


用codeql来处理静态代码扫描

根据codeql的lisence,好像的确禁止使用于工业化的生产以及商业用途。随着改革开放的深化,知识产权的加强。大家千万不要碰资本家的蛋糕,以下内容均为研究学习之用,学会了以后我要买正版的,微软爸爸!

 

扫描设计

  1. 需要git clone代码,且支持更新

  2. 需要使用codeql create databasecodeql –language=java且执行codeql analyse ,如果代码更新了还要codeql database upgrade

  3. 解析codeql结果重新整理结果发送到soc平台

  4. 其他就自己改改需求 自己定时扫描 更新结果 如果开发修复了那就最好自己扫描 然后识别 重置漏洞状态

 

Codeql主要精力应该放在规则上,优化好规则 基本上可以杜绝大部分的安全问题。

首先我们来看sql注入这个话题,之前我看了findbugs pmd啥的,发现都不行,findbugs差一点,对于一些map数据类型的,findbugs好像就无能为力,故误报率很高,而且不支持发现整个调用栈。但是codeql有个DataFlow,就是数据流的功能,也就是平常我们看到的CFG的二次加工,形成图数据库。

 

Code


ql的规则就比较头疼了,文档也不是很全,只有一个使用的手册。手册的英文也让我头疼,比如“a Expr response to a node”是啥鸟意思?经过我一部分的摸索。大概知道一些东西,比如“方法”在java里是Method method,而在python里是Call…

首先简单的来说,这个codeql分几个常用的模块,标准 Java 库中最重要的类可以分为五大类:

1. 表示程序元素的类(如类和方法) class method

2. 表示AST节点的类(如语句和表达式) smtm expr

3. 用于表示元数据的类(如注释和注释)

4. 计算度量的类(例如圈复杂度和耦合)

5. 用于导航程序调用图的类

 

主要还是class method constructor Type variable smtmexpr这些。这些类的子类和方法在官方的手册上有,一般用的多的都是getMethodName,getxxx之类的,

最常用的还是smtm,即用到抽象语法树。

至于怎么写规则,我也不知道,知道了也不写出来。就不分享技术!不然怎么涨工资?

 

 

 

 



本文始发于微信公众号(xsser的博客):用codeql来处理静态代码扫描

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年2月2日23:42:20
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   用codeql来处理静态代码扫描https://cn-sec.com/archives/481890.html

发表评论

匿名网友 填写信息