功能级访问控制缺失及跨站请求伪造

大部分Web应用在界面上进行了应用级访问控制,但是应用服务器端也要进行响应的访问控制才行。如果请求没有验证,攻击者就能够构造请求访问未授权的功能。

功能级访问控制缺失

(1)我容易受攻击吗

尝试手动攻击或针对应用程序运行诸如IBM APPScan 这样的扫描器进行漏洞扫描。 应用程序或API应该识别攻击,阻止任何可行的攻击, 并识别收集攻击者的细节和攻击的特征。 如果在发现关键漏洞时无法快速推出补丁, 则会受到攻击。一定要了解针对攻击的防范措施所能覆盖的攻击类型, 不应该只是XSS和SQL注入。 我们可以通过如 WAFs, RASP, 和OWASP AppSensor 等技术来检测并阻止攻击。

(2)我如何防止

可以利用下面的方法。

1)检测攻击。有没有发生合法用户不可能产生( 例如,正常用户使用客户端无法生成的输入) 的情况?应用程序是否以普通用户永远不会做的方式运行( 例如,请求频率太高,非典型输入,异常使用模式,重复请求)?

2)对攻击的响应。日志和通知对及时响应至关重要。考虑是否自动阻止请求,并确定阻止的IP地址或IP段。考虑禁用或监控不良行为的用户帐户。

3)快速修复。如果你的开发或运维团队无法在一天内推出关键修补程序,请部署一个可以分析HTTP流量,数据流和/或代码执行的虚拟补丁,并防止漏洞被利用。

4)可以用特殊的智能合约来判断不正常的用户行为并且在发现紧急安全问题时,容许智能合约的拥有者停止智能合约的运行。或者容许智能合约自动采取措施停止运行。

(3) 攻击案例

案例 #1:攻击者使用自动化工具(如OWASP ZAP或SQLMap)来检测漏洞并可能利用它们。

攻击检测应该以识别应用程序的异常请求和巨大流量为目标。 自动扫描应易于与正常流量区分开来。

案例#2:熟练的攻击者使用仔细挖掘潜在的漏洞, 最终确认了一个难以发现的缺陷。虽然难以检测,但这种攻击仍然包含正常用户永远不会发送的请求,例如UI不允许的输入。 跟踪这个攻击者可能需要建立一个时间表现恶意的案例。

案例#3:攻击者开始利用应用程序中的一个漏洞,但当前的攻击保护无法阻止。我们可以快速部署一个真正的或虚拟的补丁来阻止对此漏洞的持续利用。

跨站请求伪造(以下简称CSRF)攻击强制一个已经登入的受害者浏览器,向带漏洞的Web应用发送伪造的HTTP请求,但是使用的是受害者正确的会话Cookie,以及其他的认证信息,这样攻击者就可以让Web应用认为这是受害者自愿发送的请求。

跨站请求伪造

(1)我存在CSRF漏洞吗

检测应用程序是否存在该漏洞的方法是查看是否每个链接和表单都提供了不可预测的CSRF令牌。没有这样的令牌,攻击者就能够伪造恶意请求。另一种防御的方法是要求用户证明他们要提交请求,比如通过重新认证的方式。重点关注那些调用能够改变状态功能的链接和表格,因为他们是跨站请求伪造攻击的最重要的目标。由于多步交易并不具备内在的防攻击能力,因此我们需要 检测这些交易。还要注意,服务器端请求伪造(SSRF)也可以通过欺骗应用和API来生成任意HTTP请求。

注意

会话cookie、源IP地址和其他浏览器自动发送的信息不能作为防攻击令牌,因为这些信息已经包含在伪造的请求中。 OWASP的CSRF测试工具有助于生成测试案例,可用于展示 跨站请求伪造漏洞的危害。

(2)我如何防止CSRF

首选方案是使用现有的CSRF防御措施。许多框架现在包括内置的CSRF防御,如Spring,Play,Django和AngularJS。一些Web开发语言,如.NET也是如此。OWASP的CSRF Guard可以自动将CSRF防御添加到Java应用程序。OWASP 的CSRFProtector对于PHP或Apache有着相同的过滤作用。否则,阻止CSRF通常需要在每个HTTP请求中包含不可预测的令牌。并且这种令牌在每个用户会话中都是唯一的。

1)最好的方法是将独有的令牌包含在一个隐藏字段中。这将使得该令牌通过HTTP请求体发送,避免其包含在URL中从而被暴露出来。

2)该独有令牌同样可以包含在URL中或作为一个URL参数。但是这种方法的巨大风险在于: URL会暴露给攻击者,这样秘密令牌也会被泄漏。

3)考虑在所有Cookie中使用“ SameSite = strict”标志,这在浏览器中越来越受到支持。

(3)攻击案例

应用程序允许用户提交不包含任何保密字段的状态改变请求,如:

http://example.com/app/transferFunds?amount=1500

&destinationAccount=4673243243

因此,攻击者构建一个请求,用于将受害用户账户中的现金转移到自己账户。然后攻击者在其控制的多个网站的图片请求或iframe中嵌入这种攻击。

amount=1500&destinationAccount=attackersAcct#“

width="0" height="0" />

如果受害用户通过example.com认证后访问任何一个攻击者的网站,伪造的请求将自动包含用户的会话信息,授权执行攻击者的请求。

下一章我们将介绍使用已知易受攻击组件及未验证的重定向和转发

感谢机械工业出版社华章分社的投稿,本文来自于华章出版的著作《区块链安全技术指南》。

作者简介:

黄连金

硅谷Dynamic Fintech Group管理合伙人

吴思进

33复杂美创始人及CEO

曹锋

PCHAIN发起人,中物联区块链协会首席科学家

季宙栋

Onchain分布科技首席战略官,本体联合创始人,

马臣云

北京信任度科技CEO、信息安全专家、产品管理专家

李恩典

美国分布式商业应用公司董事与中国区总裁

徐浩铭

CyberVein数脉链项目技术负责人

翁俊杰

IBM 10余年开发及解决方案经验,批Fabric应用开发者,NEO核心开发者之一

扫描上方微信

备注“入群”,小助手拉你进群

活动多多,交流多多

矩阵财经出品

转载请注明:矩阵财经(矩阵数字经济智库)

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180726G0748N00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励