当前位置: 首页 > 科技观察

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

时间:2023-03-13 15:12:16 科技观察

测试是软件开发生命周期(SDLC)的重要组成部分,它分为多个阶段。今天,我想谈谈如何发现代码中的安全问题。在开发软件时,您不能忽视安全问题。这就是为什么会有一个叫做DevSecOps的术语,其基本职责是识别和解决应用程序中的安全漏洞。有一些用于检查OWASP漏洞的开源解决方案,它们将通过创建源代码的威胁模型来得出结果。有不同的方法来处理安全问题,例如静态应用程序安全测试(SAST)、动态应用程序安全测试(DAST)、交互式应用程序安全测试(IAST)、软件组合分析等。静态应用程序安全测试在代码级别运行,通过在编写良好的代码中查找错误来分析应用程序。这种方法不需要运行代码,所以称为静态分析。我将专注于静态代码分析并使用开源工具进行实践体验。为什么要使用开源工具来检查代码安全性?选择开源软件、工具和项目作为开发的一部分有很多原因。它不花任何钱,因为您使用的是一个由志同道合的开发人员社区开发的工具,他们希望帮助其他开发人员。如果你有一个小团队或初创公司,最好找开源软件来检查你的代码安全性。这使您不必聘请单独的DevSecOps团队,从而降低成本。好的开源工具总是考虑灵活性,它们应该能够在任何环境中使用,覆盖尽可能多的情况。这使开发人员更容易将软件与他们现有的系统连接起来。但有时,您可能需要您选择的工具中没有的功能。然后你可以选择fork它的代码,在上面开发你自己的功能,并在你的系统中使用它。由于在大多数情况下,开源软件是由社区驱动的,因此开发速度对于该工具的用户来说通常是一个加分项,因为他们会根据用户反馈、问题或错误报告对项目进行迭代。使用Graudit保护您的代码有多种开源静态代码分析工具可供选择,但正如您所知,工具分析代码本身,这就是为什么没有适用于所有编程语言的通用工具。但其中一些遵循OWASP指南并尝试覆盖尽可能多的语言。在这里,我们将使用Graudit,这是一个简单的命令行工具,可以让我们找到代码库中的安全漏洞。它支持不同的语言,但有一组固定的签名。Graudit使用的grep是GNU许可下的工具。类似的静态代码分析工具还有RoughAuditingToolforSecurity(RATS)、SecuritycompassWebApplicationAnalysisTool(SWAAT)、flawfinder等。但Graudit的技术要求极低,非常灵活。不过,您可能有Graudit无法满足的要求。如果是这样,您可以查看此其他选项列表。我们可以把这个工具安装在特定的项目下,也可以安装在全局命名空间下,也可以安装在特定的用户下,或者任何我们喜欢的地方,非常灵活。让我们先克隆存储库。$gitclonehttps://github.com/wireghoul/graudit现在我们需要创建一个指向Graudit的符号链接,以便我们可以将其用作命令。$cd~/bin&&;mkdirgraudit$ln--symbolic~/graudit/graudit~/bin/graudit添加一个别名到你的.bashrc(或者你使用的任何shell配置文件)。#------.bashrc------aliasgraudit="~/bin/graudit"重新加载shell:$source~/.bashrc#or$exex$SHELL让我们通过运行这个来检查安装是否成功工具。$graudit-h如果你得到这样的结果,那没关系。图1Graudit帮助页面我正在使用我现有的项目来测试该工具。要运行该工具,我们需要传递相应语言的数据库。您将在签名文件夹下找到这些数据库。$graudit-d~/gradit/signatures/js.db我在现有项目的两个JavaScript文件上运行它,你可以看到它在控制台中抛出易受攻击的代码。JavaScriptfileshowingGrauditdisplayofvulnerablecodeJavaScriptfileshowingGrauditdisplayofvulnerablecode你可以尝试在你的一个项目上运行它,它本身有一长串支持不同语言的数据库。Graudit的优点和缺点Graudit支持多种语言,这使其成为许多不同系统上的用户的理想选择。由于其易用性和广泛的语言支持,它可以与其他免费或付费工具相媲美。最重要的是,它们正在开发中,并且社区支持其他用户。虽然这是一个方便的工具,但您可能会发现很难将一段特定的代码识别为“易受攻击的”。也许开发人员会在该工具的未来版本中包含此功能。但是使用这样的工具来关注代码中的安全问题总是好的。总结在本文中,我只介绍了众多安全测试中的一种:静态应用程序安全测试。从静态代码分析入手很容易,但这仅仅是个开始。您可以将其他类型的应用程序安全测试添加到您的应用程序开发管道中,以丰富您的整体安全意识。