使用此命令行工具查找代码中的安全漏洞

Graudit 具有广泛的语言支持,允许您在开发过程中审核代码的安全性。
72 位读者喜欢这个。

测试是软件开发生命周期 (SDLC) 的重要组成部分,并且包含多个阶段。今天,我想谈谈在代码中查找安全问题。

在开发软件时,您不能忽视安全性。这就是为什么有一个术语叫做 DevSecOps,它从根本上负责识别和解决应用程序中的安全漏洞。有一些开源解决方案可以检查 OWASP 漏洞,并通过创建源代码的威胁模型来获得洞察力。

处理安全问题有不同的方法,例如,静态应用程序安全测试 (SAST)、动态应用程序安全测试 (DAST)、交互式应用程序安全测试 (IAST)、软件成分分析等。

静态应用程序安全测试在代码级别运行,并通过揭示已编写代码中的错误来分析应用程序。这种方法不需要代码运行,这就是为什么它被称为静态分析。

我将专注于静态代码分析,并使用一个开源工具来进行实践体验。

为什么使用开源工具检查代码安全性

选择开源软件、工具和项目作为您开发的一部分有很多原因。它不会花费任何钱,因为您使用的是由志同道合的开发者社区开发的工具,他们希望帮助其他开发者。如果您有一个小型团队或初创公司,那么找到开源软件来检查您的代码安全性是很好的。这可以避免您必须聘请单独的 DevSecOps 团队,从而降低您的成本。

优秀的开源工具始终以灵活性为目标而制作,并且应该能够在任何环境中使用,涵盖尽可能多的情况。这使得开发人员更容易将该软件与他们现有的系统连接起来。

但是,有时您可能需要某个功能,而该功能在您选择的工具中不可用。那么您可以选择 fork 代码,并在其基础上开发自己的功能,并在您的系统中使用它。

由于大多数时候,开源软件是由社区驱动的,因此开发速度往往对该工具的用户来说是一个优势,因为他们会根据用户反馈、问题或错误发布来迭代项目。

使用 Graudit 确保您的代码安全

有各种可用的开源静态代码分析工具,但正如您所知,该工具分析的是代码本身,这就是为什么没有适用于任何和所有编程语言的通用工具。但其中一些工具遵循 OWASP 指南,并尝试涵盖尽可能多的语言。

在这里,我们将使用 Graudit,这是一个简单的命令行工具,允许我们在我们的代码库中查找安全漏洞。它支持不同的语言,但具有固定的签名集。

Graudit 使用 grep,这是一个 GNU 许可的实用工具,还有类似类型的静态代码分析工具,如 Rough Auditing Tool for Security (RATS)、Securitycompass Web Application Analysis Tool (SWAAT)、flawfinder 等。但它的技术要求非常低且非常灵活。尽管如此,您可能有一些 Graudit 无法满足的要求。如果是这样,您可以查看此 列表 以获取其他选项。

我们可以将此工具安装在特定项目下,或全局命名空间中,或特定用户下——无论我们喜欢什么,它都很灵活。让我们先克隆 repo

$ git clone https://github.com/wireghoul/graudit

现在,我们需要创建 Graudit 的符号链接,以便我们可以将其用作命令

$ cd ~/bin && mkdir graudit
$ ln --symbolic ~/graudit/graudit ~/bin/graudit

将别名添加到 .bashrc(或您正在使用的任何 shell 的配置文件)

#------ .bashrc ------

alias graudit="~/bin/graudit"

并重新加载 shell

$ source ~/.bashrc # OR
$ exex $SHELL

让我们通过运行此命令来检查我们是否已成功安装该工具

$ graudit -h

如果您得到类似这样的结果,那么您就可以继续了。

Graudit terminal screen showing help page

图 1 Graudit 帮助页面

我正在使用我的一个现有项目来测试该工具。要运行该工具,我们需要传递相应语言的数据库。您将在 signatures 文件夹下找到数据库

$ graudit -d ~/gradit/signatures/js.db

我在我的现有项目中的两个 JavaScript 文件上运行了这个,您可以看到它在控制台中抛出了易受攻击的代码

JavaScript file showing Graudit display of vulnerable code

JavaScript file showing Graudit display of vulnerable code

您可以尝试在您的一个项目上运行它,并且它们在项目本身中包含了一个很长的 数据库列表 ,用于支持不同的语言。

Graudit 的优点和缺点

Graudit 支持多种语言,这使其成为许多不同系统上的用户的不错选择。由于其易用性和广泛的语言支持,它可以与其他免费或付费工具相媲美。最重要的是,它们正在开发中,社区也支持其他用户。

虽然这是一个方便的工具,但您可能会发现很难将特定代码识别为“易受攻击”。也许开发人员将在该工具的未来版本中包含此功能。但是,始终使用这样的工具来关注代码中的安全问题是好的。

结论

在本文中,我只介绍了多种安全测试类型之一——静态应用程序安全测试。从静态代码分析开始很容易,但这仅仅是开始。您可以在应用程序开发管道中添加其他类型的应用程序安全测试,以丰富您的整体安全意识。

接下来阅读什么

Linux 防火墙入门

防火墙是您计算机抵御网络入侵的第一道防线。下载我们的速查表以确保您的安全。

(团队,红帽)
2020 年 2 月 28 日
User profile image.
充满热情的 InfoSec 倡导者和网络安全分析师

1 条评论

很棒的文章。在今天的 DevSecOps 世界中非常有用。我猜它是 Coverity 等专有产品的良好开源替代品?

© . All rights reserved.