跨站点请求伪造(CSRF, XSRF)

CSRF攻击是一种常见的web应用程序漏洞,它利用了网站已经授予用户及其浏览器的信任.

2023年中威胁报告

什么是CSRF?

跨站点请求伪造(CSRF)攻击 常见的web应用程序漏洞 利用网站已经授予用户及其浏览器的信任. 在CSRF攻击中, 攻击者通常使用社会工程技术操纵经过身份验证的用户在用户不知情或不同意的情况下执行恶意操作. 只需点击电子邮件或聊天信息中看似合法的链接, 用户可能会在不知情的情况下给攻击者提供窃取其身份和访问权限的能力.

从那时起, 攻击者可以冒充受害者,并使用他们的账户对毫无戒心的用户进行无害的恶作剧,或者非法转账,耗尽受害者的银行账户. 如果目标用户是具有广泛访问权限的web管理员, CSRF攻击可以危及整个web应用程序. 

当成功, CSRF攻击对运营站点的企业和访问站点的用户都是有害的. 这样的 利用 是否会对客户关系产生负面影响, 损害客户信心, 并导致欺诈或盗窃财务资源的情况. CSRF攻击已经被用来攻击Gmail和Facebook等主要服务和网站, 等. 

CSRF还有许多其他名称, 包括XSRF, “海上冲浪,“会议骑行”, 跨站点引用伪造, 敌意链接. 微软在其威胁建模过程和在线文档中的许多地方将这种类型的攻击称为一键攻击. CSRF被认为是OWASP Top 10中的A5类缺陷.

CSRF是如何工作的?

当用户试图访问站点时, 他们的浏览器通常会自动包含与站点相关的任何凭据以及他们的请求,以便登录过程更加方便. 这些凭证可以包括用户的会话cookie, 基本身份验证凭据, IP地址, Windows域凭据, 等等......。. 一旦用户通过了站点的身份验证, 然而, 该站点无法区分伪造请求和合法用户请求. 

通过CSRF攻击盗用受害者的身份和访问权限, 攻击者可以让用户执行意想不到的操作. 通常, 攻击者通过电子邮件使用社交工程技术说服受害者点击链接, 聊天信息, 或者类似的交流方式. 用户可能会在不知情的情况下在电子邮件消息中或在加载请求特定任务URL的站点页面后遇到恶意HTML或JavaScript代码. 然后执行任务,可以直接执行,也可以使用跨站点脚本缺陷执行. 用户通常不知道发生了什么,直到发生了恶意操作. 

CSRF攻击通常针对导致服务器状态改变的函数,但也可用于访问敏感数据. 在对受害者的账户执行成功的CSRF攻击后, 恶意行为者可以发起资金转移, 购买一件物品, 将产品放入购物车, 更改帐户信息,如送货地址, 修改密码, 或使用易受攻击网站上提供的任何其他功能. 

存储的CSRF缺陷及其影响

在某些情况下,可以将CSRF攻击直接存储在易受攻击的站点本身. 这种漏洞被称为存储CSRF漏洞. 攻击者可以通过在接受HTML的字段中存储IMG或IFRAME标记来创建存储的CSRF漏洞, 或者通过一个更复杂的 跨站点脚本攻击. Samy MySpace蠕虫是XSS技术大规模破坏网站的一个著名案例.

如果攻击者能够在目标站点上存储CSRF攻击,则影响可能会严重得多. 在这种情况下, 由于包含恶意负载的页面现在包含在站点内,因此看起来完全合法, 受害者更有可能查看和信任包含攻击的页面,而不是互联网上的随机页面. 鉴于受害者已经通过了现场的身份验证, 攻击者将有更好的机会以CSRF攻击为目标. 

防止CSRF攻击的三个技巧

有几种方法可以增强你的记忆力 Web应用程序安全性 程序,使您不那么容易受到潜在的CSRF攻击. 与其他web应用程序安全措施一样, 最好的防御包括定期扫描和测试web应用程序的安全性:

确保您的web应用程序具有CSRF保护

如果您的web应用程序目前没有CSRF保护, 它很容易受到这种形式的攻击. Web应用程序安全工具可以帮助您快速确定Web应用程序中是否存在此类漏洞,并为您提供修复该问题的步骤.

使用先进的验证技术来减少CSRF

通过为可能访问您站点上页面的任何人设置高级验证技术,您可以帮助降低CSRF攻击的可能性, 特别是如果你经营一个社交媒体或社区网站. CSRF令牌, 有时也被称为反CSRF令牌,因为它们旨在转移CSRF攻击, 有这样一个例子吗?. 通常由一个大的, 对单个会话和用户都唯一的随机数串, 它们使攻击者更难以猜测创建有效请求所需的正确令牌. 

通过在表单提交和副作用url中实现CSRF令牌, 您可以更好地确保每个表单提交或请求都与经过身份验证的用户绑定,并屏蔽潜在的CSRF攻击. 在涉及高度敏感操作的情况下, OWASP 请注意,您可能还需要考虑实现基于用户交互的保护(重新身份验证/一次性令牌)以及基于令牌的缓解技术.

定期进行web应用程序安全测试以识别CSRF

即使在您成功解决了web应用程序中可能导致CSRF攻击的漏洞之后, 随着应用程序的更新和对其代码的更改,将来仍然有可能出现漏洞. 出于这个原因, 明智的做法是不断扫描和测试您的web应用程序,以查找它们可能包含的任何安全漏洞, 包括与CSRF攻击相关的漏洞, 使用web应用程序安全工具. 

尽管CSRF攻击仅针对当前通过站点身份验证的用户, 这些攻击一旦成功,可能是毁灭性的. 然后,冒充用户的攻击者可以在用户不知情或不同意的情况下继续执行一系列操作, 偷钱或诈骗.

一家公司可能会发现自己的声誉因此受到严重损害, 失去客户信任,在某些情况下甚至面临监管罚款. 通过积极主动的全面实施 应用程序安全程序,您的企业可以减少这种攻击的可能性.