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

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

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

安装

在类Unix系统(如Debian、Fedora、Ubuntu等)中,可以找到预打包版本的工具。对于Ubuntu,可以使用以下命令进行安装-

sudo apt-get install flawfinder

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

pip install flawfinder

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

Anaconda安装:

有关安装Anaconda的详细步骤,请参见以下步骤-

步骤1: 从此链接下载Anaconda:https://www.anaconda.com/products/individual#windows

步骤2: 安装完成后,单击启动。

步骤3: 单击下一步。

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

步骤4: 阅读授权条款并单击“同意”。

步骤5: 选择“只为我安装”并单击下一步。

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

步骤6: 选择目标文件夹以安装Anaconda,并单击下一步按钮。

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

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

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

步骤8: 推荐安装PyCharm

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

步骤9: 安装完成后,单击完成按钮。

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

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

// C程序演示
// Flawfinder
#include & lt;stdio.h>
#include & lt;string.h>

// 驱动程序代码
int main()
{
 char temp[100];
 char str[] = “你好";
 strcpy(temp, str);
 printf(“%s”, temp);
 return 0;
}  

输出:

步骤 1: 将代码保存为扩展名为.c的文件,放在 flawfinder 安装的文件夹内。

步骤 2: 从开始菜单打开 Anaconda 命令提示符。

步骤 3: 开启窗口后,导航到文件保存的目录。这里的路径是 flawfinder\Test

步骤 4: 运行此命令:

flawfinder your_program_name.c

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

该工具生成两个命中即潜在风险。

  1. 一个是由于使用了 strcpy 函数。在将内容复制到目标时,该函数没有检查缓冲区溢出情况。该工具还建议使用内置函数,例如 snprintf,strcpy_s 或 strlcpy。
  2. 另一个漏洞是使用 char 数组。静态大小的数组可能会被不适当地限制,导致潜在的溢出或其他问题。相反,可以使用函数检查极限长度,并确保大小大于最大可能长度。

FlawFinder 工具的优点:

  • 确定风险水平- FlawFinder 会列出按风险排序的潜在安全漏洞清单。代码中使用的函数和参数决定风险水平。例如,与可变字符串相比,常量字符串值更不安全。在某些情况下,FlawFinder 可能能够确定该结构根本不会存在风险,从而减少错误报警。
  • 提供分析摘要- 它产生一个分析摘要作为输出,并提到代码中发现的漏洞数目。
  • 代码不编译- 源代码从未被编译,即使代码不起作用,该工具也会立即生成漏洞列表。

FlawFinder 工具的缺点-

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程