测试是软件开发生命周期 (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
如果您得到类似这样的结果,那么您就可以继续了。

图 1 Graudit 帮助页面
我正在使用我的一个现有项目来测试该工具。要运行该工具,我们需要传递相应语言的数据库。您将在 signatures 文件夹下找到数据库
$ graudit -d ~/gradit/signatures/js.db
我在我的现有项目中的两个 JavaScript 文件上运行了这个,您可以看到它在控制台中抛出了易受攻击的代码


您可以尝试在您的一个项目上运行它,并且它们在项目本身中包含了一个很长的 数据库列表 ,用于支持不同的语言。
Graudit 的优点和缺点
Graudit 支持多种语言,这使其成为许多不同系统上的用户的不错选择。由于其易用性和广泛的语言支持,它可以与其他免费或付费工具相媲美。最重要的是,它们正在开发中,社区也支持其他用户。
虽然这是一个方便的工具,但您可能会发现很难将特定代码识别为“易受攻击”。也许开发人员将在该工具的未来版本中包含此功能。但是,始终使用这样的工具来关注代码中的安全问题是好的。
结论
在本文中,我只介绍了多种安全测试类型之一——静态应用程序安全测试。从静态代码分析开始很容易,但这仅仅是开始。您可以在应用程序开发管道中添加其他类型的应用程序安全测试,以丰富您的整体安全意识。
1 条评论