如何使用简单的实用程序查找程序代码中的漏洞

Graudit支持多种编程语言,并允许您将代码库安全性测试直接集成到开发过程中。





来源:Unsplash(Markus Spiske)



测试是软件开发生命周期的重要组成部分。有很多类型的测试,每种都可以解决自己的问题。今天,我想谈谈在代码中查找安全性问题。



显然,在现代软件开发现实中,确保过程安全很重要。一次,甚至引入了特殊术语DevSecOps。该术语是指旨在识别和消除应用程序中的漏洞的许多过程。根据OWASP标准有专门的开源解决方案来检查漏洞,该解决方案描述了源代码中漏洞的不同类型和行为。





解决安全问题的方法有很多,例如,静态应用程序安全测试(SAST),动态应用程序安全测试(DAST),交互式应用程序安全测试(IAST),软件组件分析(软件组成分析)等等。



静态应用程序安全性测试可检测已编写代码中的错误。这种方法不需要运行应用程序,这就是为什么它被称为静态分析。



我将专注于静态代码分析,并使用一个简单的开源工具来演示实践中的所有内容。



为什么选择开源静态代码安全性分析工具



造成这种情况的原因有很多:首先,它是免费的,因为您使用的是由一群志同道合的人开发的工具,这些人想帮助其他开发人员。如果您的团队很小或刚起步,则有很大的机会通过使用开源软件来测试代码库的安全性来节省资金。其次,它免除了您雇用单独的DevSecOps团队的麻烦,从而进一步降低了成本。



始终在构建良好的开源工具时会考虑增加灵活性。因此,它们几乎可以在任何环境中使用,涵盖了广泛的任务。对于开发人员来说,将这样的工具与他们在进行项目时已经构建的系统联系起来要容易得多。



但是在某些情况下,您可能需要所选工具中不提供的功能。在这种情况下,您将有机会分叉其代码,并根据自己的工具开发所需功能。



由于在大多数情况下,开源软件的开发受到社区的积极影响,因此做出更改决定的决定非常迅速并切入要点:开源项目的开发人员依赖于用户的反馈和建议,错误报告和其他问题。



使用Graudit分析代码安全性



对于静态代码分析,您可以使用各种开源工具,没有适用于所有编程语言的通用工具。其中一些遵循OWASP准则,并尝试涵盖尽可能多的语言。



在这里,我们将使用Graudit(一个简单的命令行实用程序),该实用程序将使我们能够在代码库中查找漏洞。它支持不同的语言,但其设置仍然有限。 Graudit是在grep实用程序的基础上开发的,该实用程序是在GNU许可下发布的。



也有用于静态代码分析的类似工具-安全粗糙审核工具(RATS),Securitycompass Web应用程序分析工具(SWAAT),缺陷查找器等。但是Graudit非常灵活,技术要求最低。但是,您可能会遇到Graudit无法解决的问题。然后,您可以在此列表中找到其他选项



我们可以将此工具集成到特定项目中,或使其提供给选定的用户使用,或在我们的所有项目中同时使用。这也是Graudit灵活的地方。因此,让我们首先克隆存储库:



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


现在让我们为Graudit创建一个符号链接,以命令格式使用



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


向.bashrc(或您使用的任何配置文件)添加别名:



#------ .bashrc ------
alias graudit="~/bin/graudit"


重启:



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


让我们检查安装是否成功:



$ graudit -h




如果您看到类似的内容,那么一切都很好。







我将测试我现有的项目之一。在运行该工具之前,它需要传递与项目编写语言相对应的数据库。数据库位于〜/ gradit / signatures文件夹中:



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


因此,我测试了项目中的两个js文件,Graudit在控制台中的代码中显示了有关漏洞的信息:











您可以尝试以相同的方式测试项目。可以在此处找到不同编程语言的数据库列表



Graudit的优缺点



Graudit支持许多编程语言。因此,它适用于广泛的用户。它可以与任何免费或付费同行竞争。而且非常重要的一点是,仍然需要对该项目进行改进,社区不仅可以为开发人员提供帮助,还可以为其他试图找出该工具的用户提供帮助。



这是一个方便的工具,但是到目前为止,它并不总是能够准确地指出与可疑代码相关的问题所在。开发人员继续完善Graudit。



但是无论如何,使用此类工具注意代码中潜在的安全问题是很有用的。



开始...



在本文中,我仅考虑了发现漏洞的许多方法之一-静态应用程序安全性测试。静态代码分析很容易,但这仅仅是开始。要了解有关代码库安全性的更多信息,您需要将其他类型的测试集成到软件开发生命周期中。






广告



可靠的VPS和正确选择费率计划将使您减少因烦人的问题而对开发产生的干扰-一切都会顺利进行,并具有很高的正常运行时间!






All Articles