CodeQL簡介及其windows下環境安裝


CodeQL簡介

CodeQL項目地址:https://github.com/github/codeql

CodeQL官網:https://codeql.github.com/

截止到目前在github上有4.1k個star

該項目的歷史為:Semmle公司最早獨創性的開創了一種QL語言,Semmle QL,並且運行在自家LGTM平台上。

LGTM平台上存放的就是一些開源項目,用戶可以選擇分析的語言,編寫ql語句進行程序安全性查詢。

2019年,GitHub為了解決其托管的海量項目的安全性問題,收購了Semmle公司,並宣布開源CodeQL的部分規則,這樣全世界的安全工程師就可以貢獻高效的QL審計規則給github,幫助它解決托管項目的安全問題,而對於安全人員也多了一個非商業的開源代碼自動化審計工具。

簡單來說,CodeQL就是一種代碼分析平台。借助這個平台,安全研究人員可以實現變種分析的自動化。這里所謂的變種分析,就是以已知的安全漏洞作為參照物,在我們的目標代碼中尋找類似的安全問題的過程。CodeQL支持對C++,C#,Java,JavaScript,Python,go等多種語言進行分析,可用於分析代碼,查找代碼中控制流等信息。

CodeQL的核心引擎是不開源的,這個核心引擎的作用是將需要審計的代碼轉換成CodeQL能識別的中間層數據庫,然后我們只需要編寫QL查詢語句來獲取我們想要的數據,偷一張freebuf上的圖

圖中micro-service-seclab是需要審計的項目,我們需要編寫的就是其中的QL查詢語句,要是不會寫查詢語句和規則怎么辦?CodeQL開源了所有的規則和規則庫部分,我們能夠進行學習參考,並編寫符合自己業務邏輯的QL規則,然后使用CodeQL引擎去跑我們的規則,從而輸出變種漏洞。

CodeQL環境搭建

在windows11環境下安裝CodeQL

CodeQL本身包含兩部分:解析引擎+SDK

解析引擎用來解析我們編寫的規則,雖然不開源,但是我們可以直接在官網下載二進制文件直接使用

SDK完全開源,里面包含大部分現成的漏洞規則,我們也可以利用其編寫自定義規則。

引擎安裝

下載 https://github.com/github/codeql-cli-binaries/releases/latest/download/codeql.zip

解析引擎支持主流的操作系統:Windows,Mac,Linux

下載解壓后將路徑添加到環境變量中,方便測試

SDK安裝

訪問之后下載壓縮包https://github.com/github/codeql

更改文件名為ql

目前的目錄結構為:

VScode插件安裝

VScode安裝codeql插件

修改插件的配置,添加codeql可執行文件的路徑

到這里codeql的開發環境就配置完成了

使用

想要好好利用codeql這個工具,ql的相關語法也是我們需要學習的,不過ql語法的知識我准備放到下一篇博客中進行介紹,這里先測試一下安裝好的codeql環境。

python為例,建立分析數據庫,需要我們到等待審計源代碼的根目錄,執行

codeql database create codeqltest --language=python

為什么要建立數據庫。因為codeql的處理對象並不是源代碼本身,而是中間生成的AST抽象語法樹數據庫,后續我們的查詢操作都是在這個數據庫中進行

--language="python" 指的是我們程序的語言

如果需要審計的源代碼不在當前目錄,可以通過 --source-root=命令進行指定

還有其他的一些命令,這里就不再贅述。

隨便找一個flask的項目進行測試

執行成功后會在當前目錄下生成一個codeqltest的文件夾

vscode打開之前下載的ql庫文件,在ql插件中添加剛才的數據庫文件,並設置為當前數據庫。

為了方便引入python庫,在/ql/python/ql/src下創建一個test.ql來編寫我們的ql查詢語句

編寫一段hello world

正確輸出則代表配置完成並正確

當然如果你覺得電腦上配置環境的過程太復雜了,我們也可以直接使用LGTM,簡單把它看成是CodeQL平台的雲版本:https://lgtm.com/

在上面嘗試輸出hello world

一樣正確輸出

從而使用codeql進行代碼審計

參考鏈接

END

建了一個微信的安全交流群,歡迎添加我微信備注進群,一起來聊天吹水哇,以及一個會發布安全相關內容的公眾號,歡迎關注 😃

GIF GIF


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM