当前位置: 首页 > news >正文

如何在本地环境使用 CodeQL 扫描出代码中的安全漏洞?

CodeQL 是什么?

CodeQL 是用于自动执行安全检查的分析引擎。在 CodeQL 中,代码被视为数据。 安全漏洞、bug 和其他错误被建模为可针对从代码中提取的数据库执行的查询。可以运行由 Github 研究人员和社区参与者编写的标准 CodeQL 查询,也可以自己编写查询用于自定义分析。

接下来以 Golang 项目为例来看下如何下载安装和使用 CodeQL。

下载安装 CodeQL

1、下载 codeql-cli-binaries

到 codeql-cli-binaries 的 release 页面(https://github.com/github/codeql-cli-binaries/releases)下载最新版的即可,下载完成后解压到 $GOPATH/src/github.com/github/codeql-cli-binaries,并将 $GOPATH/src/github.com/github/codeql-cli-binaries 目录添加到环境变量。

2、下载代码库 codeql

切换到 $GOPATH/src/github.com/github 目录,执行如下命令

git clone https://github.com/github/codeql.git

运行 CodeQL 扫描代码

切换到要扫描的 Golang 项目的根目录,首先设置如下环境变量,表示在构建 CodeQL 数据库时启用跟踪:

CODEQL_EXTRACTOR_GO_BUILD_TRACING=on

构建 CodeQL 数据库:

codeql database create go-database --language=go

执行代码扫描并输出 csv 类型的报告:

codeql database analyze go-database  --format=csv --output=result.csv

完成扫描后输出信息如下(这里只是截取了输出的信息最后的部分,前面还有很多,这里为举例使用省略掉了)

......
Interpreting results for go
Analysis produced the following diagnostic data:|         Diagnostic          |   Summary   |
+-----------------------------+-------------+
| Successfully analyzed files | 124 results |Analysis produced the following metric data:|                 Metric                 | Value |
+----------------------------------------+-------+
| Total lines of Go code in the database |  8383 |

可以打开 result.csv 文件查看扫描出来的漏洞情况及说明。

小结

本文简单介绍了如何在本地环境使用 CodeQL 扫描出代码中的安全漏洞的方法,接下来的文章会详细介绍 CodeQL 的使用方法。

http://www.lryc.cn/news/106117.html

相关文章:

  • 关于领导要求logback日志时间格式要求为“年-月-日 时:分:秒,毫秒”
  • 软件测试--一些生命周期
  • Mr. Cappuccino的第57杯咖啡——简单手写Mybatis大致原理
  • 机房环境、动力、网络、安防,帮您提高运维效率,确保机房安全
  • 大数据课程E1——Flume的概述
  • 01.Redis实现发送验证码
  • Vue中对组件的调用
  • SpringCloud Gateway获取请求响应body大小
  • 二叉树的层序遍历
  • Spring Boot 集成 Thymeleaf 模板引擎
  • 如何快速找到合适的工作?
  • Elasticsearch入门用例
  • python制作超炫流星雨表白,python好看的流星雨代码
  • iOS数字转为图片
  • mac cli文件管理器
  • 不同语言操作符的优先级
  • YOLOv5源码解读1.7-网络架构common.py
  • 关于前端框架vue2升级为vue3的相关说明
  • gdb调试时查看汇编代码
  • 小研究 - JVM GC 对 IMS HSS 延迟分析(二)
  • eNSP 路由器启动时一直显示 # 号的解决办法
  • Kotlin~Facade
  • 服务配置文件/var/lib/systemd与/etc/systemd/
  • 华为、阿里巴巴、字节跳动 100+ Python 面试问题总结(一)
  • 【牛客网】二叉搜索树与双向链表
  • Oracle免费在线编程:Oracle APEX
  • C#+WPF上位机开发(模块化+反应式)
  • 【LeetCode 算法】Card Flipping Game 翻转卡片游戏-阅读题
  • 【leetcode】138.复制带随机指针的链表
  • svn工具使用