weggliC/C++ 代碼庫語義搜索工具
weggli 是一個快速且強大的 C 和 C++ 代碼庫語義搜索工具,旨在幫助安全研究人員識別大型代碼庫中的有趣功能。
weggli 根據(jù)用戶提供的查詢對抽象語法樹執(zhí)行模式匹配。它的查詢語言類似于 C 和 C++ 代碼,可以輕松將有趣的代碼模式轉(zhuǎn)換為查詢。
weggli 受到 Semgrep、Coccinelle、joern 和 CodeQL 等工具的啟發(fā),但做出了一些不同的設(shè)計決策:
-
C++ 支持:weggli 對現(xiàn)代 C++ 構(gòu)造提供一流的支持,例如 lambda 表達(dá)式、基于范圍的 for 循環(huán)和 constexprs。
-
Minimal setup:weggli 應(yīng)該對你會遇到的大多數(shù)軟件開箱即用。weggli 不需要構(gòu)建軟件的能力,并且可以使用不完整的源或缺少的依賴項。
-
Interactive : weggli 是為交互式使用和快速查詢性能而設(shè)計的。大多數(shù)情況下,weggli 查詢會比 grep 搜索快。目標(biāo)是啟用交互式工作流,可以在代碼審查和查詢創(chuàng)建/改進(jìn)之間快速切換。
-
Greedy:weggli 的模式匹配旨在為特定查詢找到盡可能多的(有用的)匹配項。雖然這會增加誤報的風(fēng)險,但它簡化了查詢創(chuàng)建。例如,查詢
$x = 10;將匹配賦值表達(dá)式 (foo = 10;) 和聲明 (int bar = 10;)。
評論
圖片
表情
