对开发人员来说,需要了解Web应用安全漏洞哪些内容?

136 阅读5分钟

自动化安全测试工具使我们能够更早、更快速地识别Web应用程序的漏洞,在漏洞被识别之后,通过为开发团队提供修复漏洞所需的信息,可以更快确定威胁的优先级并进行修复。

对开发人员来说,有用的漏洞相关信息包括(但不限于):

  • 漏洞类型
  • 工作原理
  • 恶意行为者通过利用漏洞可以实现什么
  • 缓解的方法

以下提供了五种常见的Web应用程序安全漏洞的信息,以便开发人员在开发生命周期早期减轻安全问题,在不影响软件交付的情况下显著改善安全状况。

SQL 注入

当攻击者通过用户控制的数据将恶意代码注入应用程序的数据库时,将执行 SQL 注入攻击。虽然这些类型的攻击可以完成许多不同的事情,但有几种常见的结果。SQL注入攻击可以使攻击者未经授权访问存储在数据库中的敏感数据,并且在很大程度上取决于特定数据库中存储的数据,可能导致访问身份验证信息,财务信息和个人数据。第二个关键结果是操作或删除数据。然后,恶意行为者可以利用此结果访问更大的基础架构并查找更敏感的信息。

为了防止SQL注入攻击,组织不应该默认信任一切,并始终验证用户输入,并尽可能使用输入编码、预处理语句、参数化查询或存储过程,而不是动态SQL语句。通过结合前端和后端标准来防止SQL注入的发生。

跨站点脚本 (XSS)

另一种常见的 Web 应用程序攻击是跨站点脚本 (XSS),它涉及将恶意代码或脚本插入网站。然后,该网站将在给定的脚本上执行,使攻击者能够窃取敏感的用户数据,例如会话令牌和cookie。

我们经常遇到三种主要类型的XSS攻击:反射式、存储式和DOM。反射式XSS攻击将恶意代码插入立即执行的网站,而存储式XSS攻击则将恶意代码注入到稍后存储和执行的网站中。DOM XSS是一种攻击模式,更多地用于单页面应用程序,但其行为类似于反射XSS。如果成功,跨站点脚本攻击可能导致窃取用户会话ID或网站污损,并导致重定向到恶意站点,从而实现网络钓鱼攻击。

与SQL注入攻击类似,为了防止跨站点脚本攻击,组织不应该默认信任一切,并始终验证用户输入和使用输出编码技术,同时使用自动清理库并实施内容安全策略。

跨站点请求伪造 (CSRF)

跨站点请求伪造(CSRF|XSRF)攻击欺骗用户在不知情或未经其同意的情况下在网站上执行操作。这通常是通过在用户已经通过身份验证的网站中插入恶意链接或表单来实现的。当用户单击链接或提交表单时,将代表用户执行该操作,从而导致潜在的数据丢失或未经授权的访问。

缓解这些类型的攻击需要利用内置于正在使用的框架中的 CSRF 保护(如果适用)。使用 CSRF 令牌(与用户会话相关联的唯一随机值,可以验证请求的真实性)也将有助于迁移攻击。此外,SameSite cookie设置可以帮助阻止攻击者以受害者的名义发送请求。

不安全的直接对象引用 (IDOR)

当应用程序公开直接对象引用(如 URL 或数据库密钥)时,会发生不安全的直接对象引用 (IDOR),这允许攻击者通过操纵这些引用来访问受限数据。

防范 IDOR 需要实施适当的访问控制和会话管理,确保只有授权用户才能访问某些资源或数据。此外,避免使用可预测引用,而是使用全局唯一标识符 (GUID)来防止攻击者猜测访问受限数据所需的直接对象引用。

重要的是要记住,基于 IDOR 的漏洞不会单独发生,而是与其他漏洞相结合,成为有效的攻击媒介。

远程代码执行 (RCE)

远程代码执行(RCE)使攻击者能够在服务器上执行任意代码,这可能导致整个系统的危害,并提供对高度敏感数据的未经授权的访问。RCE攻击可以通过多种方式发生,包括利用代码库中的漏洞或通过用户输入字段注入恶意代码。正如2021年12月在Java日志库Log4j中发现的关键零日漏洞所示,RCE可能是一个决定性的漏洞。

成功的RCE攻击可能导致拒绝服务(DoS)攻击,暴露敏感数据,导致非法加密货币挖掘和恶意软件的执行。在更严重的情况下,成功的RCE攻击可以允许攻击者完全控制受感染的计算机。

好消息是,组织可以实施用于防止 SQL 注入和 XSS 的相同策略 — 从不默认信任用户数据,并遵守强大的用户输入清理和验证。

在日常软件开发流程中,静态代码检测工具不但可以及时查找由编码问题引起的安全漏洞,而且检测报告给出的修复建议有助于开发人员更快修复安全漏洞,加快交付更安全的应用程序。

来源:

devops.com/communicati…