如何查找漏洞代码?

执行代码审查有助于发现应用程序中的漏洞。 静态分析是发现应用程序中大多数漏洞的最有效方法。

执行源代码审查是发现应用程序中安全问题的最佳方法之一。 但是你怎么做呢?

在本教程中,我将介绍一些对您的应用程序执行安全代码检查的策略。

1.先决条件

在开始检查代码之前,请了解目标应用程序类型最常见的漏洞。 熟悉这些漏洞的指标和签名将有助于您在源代码中识别相似的模式。 例如,XXE漏洞的签名是在不禁用DTD或外部实体的情况下将用户提供的XML传递给解析器。 (有关XXE的更多信息,请点击此处。)

尽管漏洞在代码中具有常见的模式,但是这些模式在不同的上下文中看起来可能完全不同。 了解正在使用的编程语言,框架和库将帮助您更准确地发现易受攻击的模式。

2.一些代码分析术语

在继续之前,您需要了解一些概念:“源”,“接收器”和“数据流”。 用代码分析来说,“源”是允许漏洞发生的代码。 而“接收器”是漏洞实际发生的位置。

以命令注入漏洞为例。 在这种情况下,“源”可以是接受用户输入的功能。 而“接收器”将是执行系统命令的功能。 如果未经适当的清理或验证就可以将不受信任的用户输入从“源”转移到“接收器”,则存在命令注入漏洞。

通过跟踪从适当来源到相应接收者的“数据流”,可以识别许多常见漏洞。

3.开始查找代码漏洞

如果您时间不多,那么专注于一些问题可以帮助您发现最常见和最严重的问题。

从搜索字符串,关键字和代码模式开始,已知这些字符串,关键字和代码模式是漏洞或配置错误的指示器。 例如,可以通过grepping诸如“ key”,“ secret”,“ password”之类的关键字或正则表达式搜索十六进制或base64字符串来发现诸如API密钥,加密密钥和数据库密码之类的硬编码凭据。 别忘了在git历史记录中搜索这些字符串。

未经检查地使用危险功能和过时的依赖关系也是大量漏洞的来源。 Grep用于危险功能,并查看用户控制的数据是否可以访问它们。 例如,您可以搜索诸如“ system()”和“ eval()”之类的字符串以进行潜在的命令注入。 搜索您的依赖项以查看它们是否过时。

4.深层发掘

如果您有时间,可以通过更广泛的源代码审查来补充上述策略。

专注于处理用户输入的代码区域。用户输入位置(例如HTTP请求参数,HTTP标头,HTTP请求路径,数据库条目,文件读取和文件上传)为攻击者提供了利用应用程序漏洞的入口点。从这些功能到相应的接收器跟踪数据流可以帮助您找到常见的漏洞,例如存储的XSS,SQL注入,shell上传和XXE。

然后,查看在应用程序中执行关键功能的代码。这包括处理授权,身份验证和其他对业务功能至关重要的逻辑的代码。查看已实施的保护机制,看看是否可以绕过它们。同时,检查业务和用户数据的传输方式。敏感信息是否安全运输和存储?

最后,注意特定于您的应用程序的配置问题。确保您的应用程序根据最佳实践使用安全设置。

4.如何减轻手工代码审核?SAST可以帮到您

如您所见,手动代码审查可能非常繁琐且耗时。使用SAST(静态分析安全测试)工具是加快此过程的好方法。好的SAST工具可以为您识别易受攻击的模式,以便您可以专注于分析此漏洞的影响和可利用性。

自动化还可以帮助您进行安全审查的其他组件。例如,SCA(软件组成分析)工具使依赖项跟踪过程自动化。 SCA工具会跟踪应用程序的依赖关系,并在发现新的CVE时提醒您。

代码扫描工具不是百分百准确的。因此,构建安全软件的最佳方法是使用工具查找可能的漏洞,然后进行手动代码审查来验证它们。这样,您可以确保尽可能少的错误出现在生产环境中。

SO资源郑重声明:
1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!3187589@qq.com
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理,有奖励!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!

SO资源 » 如何查找漏洞代码?