Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
C0deVari4nt — 一种变体分析与可视化工具,用于扫描代码库中的相似漏洞 | Kitploit
工具/GitHubGitHub/whitesquirrell/c0devari4nt
静态代码分析 (SAST)漏洞分析代码分析
GitHubwhitesquirrell/c0devari4nt

C0deVari4nt

一种变体分析与可视化工具,用于扫描代码库中的相似漏洞

查看仓库
7464年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

C0deVari4nt

Black Hat Arsenal
C0deVari4nt

描述

C0deVari4nt 是一个变体分析与可视化工具,用于检查代码库中是否存在相似的漏洞。它利用 CodeQL(一种语义代码分析引擎),基于用户控制的 CodeQL 查询模板对代码进行查询,并将结果传递给基于 vis.js 和 React 构建的客户端界面,以供进一步探索和可视化。这使得基于先前漏洞报告进行快速、全面的变体分析成为可能。vis.js 的可视化功能为开发者提供了对易受攻击代码路径的额外洞察,使他们能够有效地对潜在变体进行优先级排序。

工具视图

动机

2021 年 12 月的 Log4Shell 事件凸显了开源开发者在响应漏洞报告时面临的困难。在针对 CVE-2021-44228(该漏洞允许未经身份验证的远程攻击者控制运行易受攻击版本 Log4j 2 的设备)发布初始补丁后,Apache 又发布了 3 个额外的补丁来修复相关漏洞和未缓解的边缘情况。

开源开发者通常缺乏全面代码审查方面的培训,并且在识别漏洞变体方面面临困难,从而导致补丁不完整。尽管存在 CodeQL 查询套件以便于对代码库进行快速分析,但这些套件返回的结果可能会产生较高的误报率。此外,这些套件依赖于预定义查询,不支持变体分析,并且未针对单个代码库进行定制。因此,开源项目通常以零散的方式响应漏洞报告,从而遗漏了潜在的变体。

C0deVari4nt 为开发者提供了一个平台,使其能够轻松进行变体分析,而无需承担编写自己的 CodeQL 查询的巨大开销。这为开发者提供了灵活性,可以通过提供代码库特定信息(例如漏洞的特定来源和汇聚点)来定制 CodeQL 模板。结果将显示在由 vis.js 驱动的图形数据库视图中,以便开发者快速识别潜在变体。因此,开发者将能够从单个漏洞报告中有效处理整类缺陷。

工具组件

C0deVari4nt 使用 Python、CodeQL、vis.js 和 React 构建,创建一个交互式 GUI 应用程序,用于接收用户输入并展示不同易受攻击代码路径之间的关系。

工具架构

C0deVari4nt 由以下 2 个主要组件组成:

  • 客户端界面:该组件使用 React 和基于浏览器的 vis.js 可视化库构建。用户通过该组件自定义 CodeQL 查询,并通过图形可视化视图分析 CodeQL 结果。
  • API 服务器:该组件基于 Python FastAPI Web 框架构建,用于接收来自客户端界面的请求,并针对一系列 CodeQL 就绪的数据库文件运行 CodeQL 命令。然后服务器将解析后的数据结果返回给客户端界面。

客户端界面的更多详情如下所示: 工具架构

v1 使用说明

设置数据库文件夹

  • cd 进入 api-server 目录并运行 dbextractor.py <codeql db zip file> 以解压 codeql 数据库内容

运行后端服务器

  • cd 进入 api-server
  • 下载依赖项 pip install -r requirements.txt
  • 运行 uvicorn main:app --reload 在 8000 端口启动本地开发服务器

运行 React 界面

  • cd 进入 react-gui
  • 下载依赖项 npm i
  • 运行 npm start 启动本地开发服务器

使用工具

用户流程

  • 在选项框中输入查询选项并点击应用
  • 等待几秒钟,等待后端处理请求
  • 使用右侧属性框隔离路径并查看节点属性

使用说明

针对预定义的易受攻击来源和汇聚点运行代码库(选项 1)

  1. 查找所有对禁止字符串函数(基于微软安全开发生命周期 (SDL) 禁止函数调用)的源函数
  2. 查找所有对 strcat 函数的调用,且源参数未经边界检查
  3. 查找所有对 strncpy 函数的调用,且源参数未经边界检查
  4. 查找所有对 snprintf 调用返回值未进行边界检查的情况
    1. 例如:当操作到达缓冲区末尾且丢弃的字符超过 1 个时,返回值将大于缓冲区大小
  5. 查找所有对 malloc、calloc 或 realloc 的调用,且未分配足够内存来容纳指针类型的实例

针对您选择的来源和汇聚点运行代码库(选项 2)

  1. 查找所有到达危险汇聚点函数的源表达式
  2. 查找到达危险汇聚点函数的特定源函数
  3. 查找到达危险汇聚点函数的特定源函数(污点函数)
    1. 使用 isAdditionalTaintStep 方法在两个不连通的函数之间传递污点
  4. 查找到达危险汇聚点函数的特定源函数(污点表达式)
    1. 使用 isAdditionalTaintStep 方法在运行时具有相同值的指针之间传递污点

简化 CodeQL 结果及节点间关系

以下展示了以 recvfrom 为来源、mempool_alloc 为附加污点步骤、memcpy 为汇聚点的查询所对应的 CodeQL 结果:

neo-1

此结果共产生 27 条不同代码路径中的 180 个节点。结果以简单的 neo4j 界面呈现如下:

neo-2

通过将此查询输入我们的工具,我们能够识别出每个节点、来源和汇聚点的重复出现,并合并节点之间的关系。
这生成了一个更加清晰的图形,总共只有 11 个唯一节点,同时仍然保留了所有 27 条唯一代码路径:

neo-3

结果可以通过我们的路径标记功能进一步分类到各自对应的路径中:

neo-4

codevariant

下载工具