什么是CSRF攻击?

跨站点请求伪造是一种攻击,在这种攻击中,对手可以代表受害用户提交恶意请求。在具有跨站点请求伪造(CSRF)漏洞的应用程序中,恶意用户可以提交未经授权的命令,因为应用程序信任源用户帐户。CSRF攻击也被称为会话骑乘、XSRF、会话固定、恶意链接或一键式攻击,主要针对导致服务器状态改变的合法请求,使攻击者能够继承受害者的身份和特权。

什么是CSRF 攻击?

CSRF攻击是通过强制用户登录到攻击者控制的帐户来策划的。为了达到这一目的,黑客使用他们的凭证向网站伪造一个状态改变请求,并将表单提交到受害者的浏览器。服务器对浏览器请求进行身份验证,并将用户登录到攻击者的帐户。当受害者向攻击者的帐户提交正在登录的敏感信息时,攻击者可以利用这些信息执行一些不必要的操作,包括身份盗窃。

策划CSRF攻击通常涉及两个步骤:

  1. 使用漏洞利用脚本构建恶意链接
  2. 通过策划社会工程攻击,欺骗受害用户提交敏感信息

根据暴露的用户帐户和信息,攻击的影响范围从轻微到严重。

成功CSRF攻击的一些后果包括:

  • 未经授权的金融交易
  • 数据泄露和敏感信息泄露
  • 部署恶意代码
  • 完成帐户接管

攻击者可以利用多种技术欺骗用户,让他们登录到黑客控制的帐户。除了在登录页面上执行的攻击外,CSRF登录攻击几乎与经典的CSRF攻击相似。

在一些主要的网站和服务中,CSRF登录漏洞也已被识别和修复。最近发现的一些影响各种流行服务的缺陷包括:

eBay

2013年8月,eBay网站上报告了一个登录CSRF漏洞(并进行了进一步修补),允许对手修改受害者的送货地址为其选择的一个地址。为了利用这个安全漏洞,攻击者强迫一个活动用户会话向ebay.com/intended-address-page发送请求。由于服务器是脆弱的,它更新送货地址为指定的恶意链接。这种攻击很容易实施,因为攻击者只需要填写表单字段,而无需猜测受害者的合法凭证。

PayPal

2016年,PayPal修复了其PayPal.me 网站上的一个CSRF漏洞。该漏洞允许黑客滥用合法用户的帐户信息。由于用户必须注册信用卡或银行帐户才能为PayPal帐户提供资金,因此攻击者通过以下步骤利用登录CSRF漏洞发起攻击:

受害者使用电子商务网站并在结账时选择PayPal

弹出一个窗口,要求用户提供他们的PayPal凭证

黑客使用一个隐藏的表单字段将用户登录到黑客的帐户

受害者注册了他们的信用卡,但它被登录到黑客的帐户

目前上面列出的所有漏洞都已修复,仅作为真实世界攻击示例的表示形式进行概述。

一些常见的防止登录CSRF攻击的方法包括:

内置CSRF防御

大多数编程框架都内置了同步器令牌模式。建议开发人员和安全专家在实现自定义CSRF令牌生成器之前,研究一下默认情况下用于中继身份验证令牌的框架。虽然框架可以生成会话令牌,但软件团队负责进行适当的配置,以确保防止登录CSRF攻击。

尽管同步器令牌模式强制服务器端令牌验证,但为了实现健壮的登录CSRF保护,应该为每个状态更改请求生成一个随机令牌。当客户端发出请求时,web服务器将请求令牌与为用户会话存储的令牌进行比较。这种技术被认为是防止攻击的最简单方法之一,因为如果没有有效的令牌,对服务器的登录请求将被拒绝。

双重提交Cookies

当实现CSRF令牌的服务器端验证具有挑战性时,双重提交cookie技术提供了另一种CSRF防御。该技术在请求参数中发送一个随机值,并将其作为会话cookie属性。在提交登录表单期间,站点生成一个伪随机值,设置为客户端浏览器上的cookie。这些随机值与会话标识符分离,应该包含在每个后续请求头的隐藏字段中。在身份验证和加密cookie中包含这种方法可以成倍地增强应用程序的登录CSRF保护。

基于用户交互的CSRF防御

这种技术要求用户防止不必要的操作。可以用于阻止登录CSRF尝试的基于用户交互的技术的例子包括:

重新认证授权机制

使用验证码机制

一次性请求令牌

posted @ 2022-10-28 11:45  中科天齐软件原生安全  阅读(396)  评论(0编辑  收藏  举报