📜  如何使用 FlawFinder-python 工具查找 C/C++ 代码中的漏洞?

📅  最后修改于: 2022-05-13 01:55:01.099000             🧑  作者: Mango

如何使用 FlawFinder-python 工具查找 C/C++ 代码中的漏洞?

FlawFinder 是一个基于Python的工具,可帮助查找 C/C++ 源代码中的漏洞。它检查源代码并给出代码中可能的漏洞/缺陷列表作为输出。

安装

该工具有一个用于 Debian、Fedora、Ubuntu 等 Unix 系统的预打包版本。对于 Ubuntu,可以使用以下命令安装该工具 -

对于 Windows 操作系统,可以使用 pip 命令直接安装此工具-

推荐使用 Anaconda 环境来实现这个工具。

蟒蛇安装:

要安装 Anaconda,请参阅以下步骤 -

第 1 步:使用此链接下载 Anaconda:https://www.anaconda.com/products/individual#windows

第2步:安装后点击启动。

第三步:点击下一步。

点击下一步

第 4 步:阅读许可条款并单击“我同意”。

第 5 步:为“Just Me”选择安装,然后单击下一步。

选择安装

第 6 步- 选择一个目标文件夹来安装 Anaconda,然后单击下一步按钮。

安装位置

第 7 步:在高级安装选项下。选择注册选项,然后安装。

高级安装选项

第八步:推荐安装Pycharm。

第九步:安装完成后,点击完成按钮。

实现:在一个文本文件中编写一个基本的 C 代码,将一个字符串复制到另一个变量中。

C
// C program to demonstrate 
// Flawfinder
#include 
#include 
  
// Driver code
int main()
{
    char temp[100];
    char str[] = "hello";
    strcpy(temp, str);
    printf("%s", temp);
    return 0;
}


输出:

第 1 步:将扩展名为 .c 的代码保存在安装了漏洞检测器的文件夹中。

第 2 步:从“开始”菜单打开 Anaconda Prompt。

第 3 步:窗口打开后,导航到保存代码文件的目录。这里的路径是ffectfinder\Test

第 4 步:运行此命令

探伤仪输出

该工具产生两个影响,即潜在风险。

  1. 一是由于使用了strcpy函数。复制到目标时,它不检查缓冲区溢出。该工具还提出了替代方案,例如使用 snprintf、strcpy_s 或 strlcpy 等内置函数。
  2. 另一个漏洞是使用 char 数组。静态大小的数组可能会受到不当限制,从而导致潜在的溢出或其他问题。相反,可以使用函数来检查限制长度并确保大小大于最大可能长度。

Flawfinder 工具的优点:

  • 确定风险级别 - Flawfinder 呈现按风险排序的潜在安全漏洞列表。代码中使用的函数和参数决定了风险级别。例如,与可变字符串相比,常量字符串值的风险较小。在某些情况下,FlawFinder 可能能够确定该构造根本没有风险,从而减少误报。
  • 提供分析摘要 -它生成分析摘要作为输出并提及编号。命中数,即代码中发现的漏洞。
  • 代码未编译- 源代码从未编译,因此即使代码不工作,该工具仍将几乎立即呈现漏洞列表。

FlawFinder 工具的缺点-

  • 不保证找到所有漏洞 - 产生的每个命中并不意味着存在安全漏洞,也不是每个漏洞都被发现。例如,在一个简单的除法程序中,一个数字除以 0。理想情况下,该工具应该将除以 0 显示为命中,但它没有这样做。这是因为该工具无法理解程序的逻辑。
  • 无法检测恶意代码- Flawfinder 会查找应用程序代码中已知为常见错误的特定模式。因此,它在分析可能包含恶意代码的程序时可能不太有效。