所在的位置: C++ >> C++市场 >> CodeQL入门环境建置

CodeQL入门环境建置

CodeQL是一套Github在开源且免费的静态扫描程式码工具,让你能在产品release前及早发现潜藏的漏洞并提供相对应改善的方法。

CodeQL有几项显著的特色:

免费且开源

客制化rule/engine

可以像查询资料库一样,透过程式编写query把资料捞出来

CodeQL常被拿来跟业界主流的Fortify比较,而我们选择使用CodeQL,纯粹是两套我们都没用过,而CodeQL支援Action可以直接导入目前的CI流程

根据其他同事做的评测,他们觉得Fortify支援的语言广泛、在大部分热门语言能检测到的漏洞比较多、FA相对较少。毕竟Fortify比CodeQL老多了!不过CodeQL免费且开源,我相信随着更多热心人的贡献会让他更加完善。

这篇会介绍如何在Local上建置并使用CodeQL。

Local架设CodeQLCLI

Step1.安装CodeQLCLI

这边选择安装泛用性最高的CLI版本,如果你有安装Chocolatey,输入chocoinstallcodeql就能安装CodeQLCLI,预设路径放在C:\ProgramData\chocolatey\lib\codeql\codeql。

使用choco的优点是安装可透过指令执行且环境变数也会自动设定好,但缺点就是没特别设定chocolatey的话,有些步骤得用admin的权限执行。

Step2.下载CodeQLqueriesandlibraries

CodeQL把分析时各种语言会使用到的queries和相关的libraries独立成另一个repo,所以得要把这个repoclone一份到local。因为它的名字跟CLI的资料夹同名,为了避免混淆,官方建议在CLI同一路径下create另一个资料夹叫做codeql-repo来存放。

另外,建议repo的版本最好跟CLI的版本是一致的,避免执行时产生不相容的问题。

Step3.CreateCodeQLDatabase

CodeQL的database会从你的codebase里提取code与code之间的关系,并建立阶层式的架构,包含syntaxtree,dataflowgraph等等。这篇我就拿自己之前的c++repo来分析看看会被检测出什么

在CodeQL的文件中有提到,database的资料夹不可以事先存在,所以每次重新产生都得把原有的database资料夹删掉。另外针对像是c++这种需要编译的语言,撷取资料的过程是透过监控专案建置过程而产生的,因此必须在参数里提供


转载请注明:http://www.aierlanlan.com/rzdk/5068.html