来自德国Saarland University和SAP SE公司的研究人员Giancarlo Pellegrino等提出一种用动态分析和属性图来检测CSRF攻击的工具——Deemon 。

* 本文作者:ang010ela,本文属FreeBuf原创奖励计划,未经许可禁止转载

来自德国Saarland University和SAP SE公司的研究人员Giancarlo Pellegrino等提出一种用动态分析和属性图来检测CSRF攻击的工具——Deemon 。

背景

与XSS,SQL注入相比,针对CSRF的研究较少,目前主流的CSRF检测还是以手动为主。但是,Gmail、Netflix、Google、Skype等主流网站都发现过CSRF漏洞,CSRF漏洞的利用导致用户财产损失、账户被接管、远程命令执行等。

CSRF 是伪造请求,冒充用户在站内的正常操作。我们知道,绝大多数网站是通过 cookie 等方式辨识用户身份(包括使用服务器端 Session 的网站,因为 Session ID 也是大多保存在 cookie 里面的),再予以授权的。所以要伪造用户的正常操作,最好的方法是通过 XSS 或链接欺骗等途径,让用户在本机(即拥有身份 cookie 的浏览器端)发起用户所不知道的请求。

要完成一次CSRF攻击,受害者必须依次完成两个步骤:

1.登录受信任网站A,并在本地生成Cookie。

2.在不登出A的情况下,访问危险网站B。

图片.png

Deemon

Deemon对操作行为进行动态追踪和特征图分析的方法进行CSRF攻击检测。

Deemon关键部分

监测程序执行过程的状态变换和数据流信息,包括网络交互、服务端执行和数据库操作;

用property graph的边来代表不同模型之间的关系;

用图的遍历来找出与安全相关的状态变化;

增强web应用的执行环境,然后复制用户动作来监测服务端程序的执行;

利用虚拟环境来测试web应用。

图片.png

Deemon的检测过程

Deemon的输入是用户动作的集合,包括鼠标点击、HTML表单提交等。经过检测, 会输出一个漏洞报告,列出可能会被用来执行CSRF攻击的状态发生变化的HTTP请求。

图片.png

对web应用的测试流程如下:

如果HTTP请求含有anti-CSRF参数,就生成一个不含该参数的HTTP请求;

如果HTTP请求不含有anti-CSRF参数,那么就生成一个抓取的HTTP请求;

两种请求中,都通过重放用户的登录动作来更新请求的session cookie。

研究人员用Deemon测试了10个主流的开源web应用,并检测到29个安全相关的状态改变请求,其中17个属于CSRF漏洞,(其中14个之前未被发现)。 
图片.png

目前的Deemon 版本支持检测使用MySQL数据库的PHP web应用,随后的版本会支持其他程序语言和数据库。

Deemon git地址:https://github.com/tgianko/deemon/

参考来源:https://arxiv.org/pdf/1708.08786.pdf

* 本文作者:ang010ela