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

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

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

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

工具目录

分类

查看所有分类
Loading categories
flawfinder — 一个用于在 C/C++ 源代码中发现漏洞的静态分析工具 | Kitploit
工具/GitHubGitHub/david-a-wheeler/flawfinder
静态分析静态代码分析 (SAST)漏洞分析代码分析DevSecOps
GitHubdavid-a-wheeler/flawfinder

flawfinder

一个用于在 C/C++ 源代码中发现漏洞的静态分析工具

查看仓库
580853个月前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

关于

这是由 David A. Wheeler 开发的“flawfinder”。

Flawfinder 是一个简单的程序,用于扫描 C/C++ 源代码并报告潜在的安全缺陷。它可以作为检查软件漏洞的有用工具,也可以作为静态源代码分析工具的简单入门。它设计为易于安装和使用。Flawfinder 支持通用弱点枚举(CWE),并已正式成为 CWE 兼容工具。它支持多种输出格式,包括 SARIF、SonarQube 和 HTML。

Flawfinder 可以与基于 AI 的代码分析工具结合使用。Flawfinder 的输出可用于快速识别哪些代码区域值得更仔细地关注,然后 AI 系统可以对这些区域进行更详细的分析。

更多信息,请参阅项目网站。

平台

Flawfinder 设计用于 Unix/Linux/POSIX 系统(包括 Cygwin、基于 Linux 的系统、MacOS 和各种 BSD)作为命令行工具。它需要 Python(我们使用 Python 3 进行测试;Python 2.7 应该可以工作,但越来越缺乏测试)。

安装

如果你只是想使用它,你可以通过 Python 的 "pip" 或系统的包管理器安装 flawfinder(flawfinder 在多个系统上都有软件包)。它也支持按照常规的 make install 源码安装方式进行简单安装。文件 INSTALL.md 提供了更详细的安装说明。你不必安装它才能运行它,但安装后使用最方便。

用法

要运行 flawfinder,只需给它一个源文件或目录列表。例如,要递归检查 "src/" 中的所有文件:

root@kitploit:~
flawfinder src/

要递归检查当前目录中的所有文件:

root@kitploit:~
flawfinder ./

命中结果(发现的问题)被赋予风险等级,从 0(非常低风险)到 5(高风险)。默认情况下,显示风险等级 1 或更高的结果。你可以这样只显示当前目录及其子目录中风险等级 4 或更高的结果:

root@kitploit:~
flawfinder --minlevel 4 ./

手册页(flawfinder.1 或 flawfinder.pdf)描述了如何使用 flawfinder(包括其各种选项)以及相关信息(例如如何支持 CWE)。例如,--html 选项以 HTML 格式生成输出。--help 选项给出选项的简要列表。

字符编码错误

Flawfinder 必须能够正确解释源代码的字符编码。在绝大多数情况下,这不是问题,特别是如果源代码正确地使用 UTF-8 编码,并且你的系统配置为使用 UTF-8(这是迄今为止最常见的情况)。

然而,如果你运行 Python3 并且存在字符编码问题,flawfinder 可能会停止。常见的症状是如下错误消息: Error: encoding error in FILENAME 'ENCODING' codec can't decode byte ... in position ...: invalid start byte

不幸的是,Python3 未能提供有用的内置功能来处理这种情况。因此,在不依赖外部库(我们试图避免)的情况下处理这个问题并非易事。

如果你遇到这个问题,请参阅 flawfinder 手册页以获取各种解决方案。最简单的解决方案之一是将源代码和系统配置转换为 UTF-8。你可以使用工具如系统工具 iconv 或 Python 程序 cvt2utf 将源代码转换为 UTF-8;你也可以使用 pip install cvt2utf 安装 cvt2utf。

内部原理

更技术地说,flawfinder 使用词法扫描来发现可能表明漏洞的令牌(如函数名),估计其风险等级(例如,通过函数调用的文本),并报告结果。Flawfinder 不使用或无法访问大部分关于控制流、数据流、数据类型、命名空间和作用域的信息。因此,flawfinder 必然会产生许多误报,并且无法报告许多漏洞。另一方面,flawfinder 可以在无法构建或无法链接的程序中发现漏洞。flawfinder 也不会像更复杂的工具那样被大多数宏定义和其他怪异之处所困扰。

Flawfinder GitHub Action

对于使用 GitHub 的用户,有一个可用的 GitHub Action。

用法

请参阅 action.yml

在 .github/workflows 下创建一个 .yml 文件,内容如下:

基本示例:

root@kitploit:~
- name: flawfinder_scan
  uses: david-a-wheeler/[email protected]
  with:
    arguments: '--sarif ./'
    output: 'flawfinder_results.sarif'

你可以向参数添加许多其他选项。例如,--error-level=4 会在 flawfinder 发现等级 4 或更高的漏洞时返回错误。注意 @ 符号后的版本号;你可以选择不同的版本。

你可以在 Marketplace 中找到 action 名称和版本字符串,方法是点击“Use latest/xxx version”按钮。

输入选项:

  • arguments: Flawfinder 命令参数
  • output: Flawfinder 输出文件名。可以上传到 GitHub。

SonarQube 集成

Flawfinder 与 SonarQube 的 cxx 插件集成。通过在 SonarQube 中“Administration > CXX External Analyers > Other Rule Definitions”下添加 Flawfinder 规则,方法是使用以下选项运行一次 Flawfinder。

root@kitploit:~
flawfinder --listrules --sonar [...]

然后,在 CI/CD 中这样运行 Flawfinder 以生成 SonarQube 可以理解的输出:

root@kitploit:~
flawfinder -CDQ --sonar [...]

你需要将输出重定向到一个文件,然后通过 sonar.cxx.other.reportPaths 选项将该文件加载到 SonarQube 中。

贡献

我们欢迎贡献!有关贡献的更多信息,请参阅文件 CONTRIBUTING.md。

许可证

Flawfinder 根据 GNU GPL 许可证版本 2 或更高版本(GPL-2.0+)发布。请参阅 COPYING 文件了解许可证信息。

下载工具