学习
实践
活动
工具
TVP
写文章
专栏首页天存信息的专栏WEB安全新玩法 [10] 防范竞争条件支付漏洞
原创

WEB安全新玩法 [10] 防范竞争条件支付漏洞

服务器端业务逻辑,特别是涉及数据库读写时,存在着关键步骤的时序问题,如果设计或代码编写不当就可能存在竞争条件漏洞。攻击者可以利用多线程并发技术,在数据库的余额字段更新之前,同时发起多次兑换积分或购买商品请求,从中获取利益。本文将讨论如何简单地使用 iFlow 应用安全加固平台的可编程特性,对竞争条件产生的支付漏洞进行防护。

一、原始网站

这是一个在支付环节存在竞争条件漏洞的站点:用户输入一个支付数值,系统将这个数值与余额比较,如果支付数值小于余额则允许支付,并从余额中减去支付数值。

图1

攻击者编写并执行了一个 Python 攻击脚本,使用多线程并发对支付请求 URL 进行访问。由于未能正确处理竞争条件问题,系统为多个请求同时扣除了余额。我们回到浏览器中刷新页面,可以发现余额变为了 -10 元,如下图所示。

图2

HTTP 交互流程如下:

表1

二、iFlow虚拟补丁后的网站

我们在 Web 服务器前部署 iFlow 业务安全加固平台,它有能力拦截、计算和修改双向 HTTP 报文并具备存储能力,成为 Web 应用的虚拟补丁。本例中,iFlow 使用一个全局唯一的定时标志来阻止对并发请求的同时处理。

每个支付请求到来时,iFlow 都会检查定时标志是否存在。只有标志不存在时才交给 Web 服务器处理这个请求,并同时设置定时标志。在定时期间,如有其他支付请求到来,而 iFlow 检查到定时标志存在,则会放弃处理这个请求,将用户重定向到指定页面。定时结束后,系统则又可以处理下一个支付请求。

HTTP 协议交互过程如下:

表2

代码

iFlow 内置的 W2 语言是一种专门用于实现 Web 应用安全加固的类编程语言。它介于配置和通用语言之间,具备编程的基本要素和针对 HTTP 协议的特有扩展,能为业务系统编写涉及复杂判断和动态修改的逻辑。

考虑到安全产品的使用者通常为非程序员,他们习惯面对配置文件而非一段代码。因此,W2 语言虽包含语言要素,仍以规则文件方式呈现,并采用可以体现层次结构和方便词法校验的 JSON 格式。

用 W2 语言实现上述虚拟补丁的代码如下:

{
	"if": [
		"REQUEST_FILENAME == '/race_condition/pay.php'",
		"REQUEST_METHOD == 'POST'"
	],
    "then": {
		"if": "GLOBAL.pay_time_flag",
		"then": {
			"verdict": {
				"action": "redirect",
                "param": "/retry.html"
			}
		},
		"else": "GLOBAL.pay_time_flag@2=1"
    }
}

示例代码中,当服务器端收到支付请求时,iFlow 拦截此请求。iFlow 会检查全局 (GLOBAL) 存储变量 pay_time_flag 是否存在:如存在,则重定向到页面 /retry.html (向正常用户提示稍后重试);如不存在,则设置一个生命时长为2秒 (数值可根据实际请求处理所需时间调整) 的存储变量 pay_time_flag

注意:上述会话中的 pay_time_flag 是保存在服务器端的 iFlow 存储中的,攻击者在浏览器端是看不到数据更无法进行修改的。

三、总结

使用 iFlow 书写一条规则,即可实现在设定时间内只允许处理一个请求,避免竞争条件带来的异常处理。(张戈 | 天存信息)

原创声明,本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

登录 后参与评论
0 条评论

相关文章

  • 沉睡一年的“脏牛”又被攻击者利用,Android用户你们还好吗?

    还记得 2016 年那个著名的 Linux 内核级漏洞 Dirty Cow(脏牛)吗?2016 年 10 月,研究人员发现 Linux 内核的内存子系统在处理写...

    FB客服
  • 企业安全体系建设之路之Web安全篇

    目前的网络攻击主要还是以WEB攻击为主流,毕竟这是与外界沟通获取知识和了解世界的主要桥梁。

    HACK学习
  • 这可能是最适合萌新入门Web安全的路线规划

    最近在后台经常收到粉丝问,Web安全有没有什么路线。确实,Web安全的范围实在太大,哪些先学,哪些后学,如果没有系统的路线会降低大家效率,对于刚入门的同学们来说...

    贝塔安全实验室
  • 微信早报 | 西瓜足迹回应指控,有借鉴没抄袭;越南澄清禁用微信支付、支付宝

    知晓君
  • 国内十二大网络安全研究机构盘点

    网络安全技术研究,意味着团队、企业甚至是国家在网络安全方面的核心竞争力,安全牛整理编辑了目前国内较有影响力的安全研究机构名单,并简要列出其研发成果及相关信息,供...

    安恒信息
  • 重磅 | 安恒信息“永恒之蓝”勒索病毒安全事件报告

    1.背景 北京时间2017年05月12日,安恒信息监测到黑客利用NSA黑客武器库泄漏的“永恒之蓝”工具发起的网络攻击事件:大量服务器和个人PC感染病毒后被远程控...

    安恒信息
  • 胡传平:“大数据”时代考问网络安全

    大数据文摘
  • 条件竞争(Race condition)漏洞挖掘技巧及实战案例全汇总

    条件竞争漏洞(Race condition)官方概念是“发生在多个线程同时访问同一个共享代码、变量、文件等没有进行锁操作或者同步操作的场景中。” 这个漏洞存在于...

    Jayway
  • 互联网金融:十大信息安全风险与十大最佳安全实践

    ? 编者按:中国互联网信息中心发布《第35次中国互联网络发展状况统计报告》显示,2014年中国网民规模6.49亿,手机网民5.57亿。其中使用网上支付的用户规...

    安恒信息
  • Java安全编码实践总结

    Java作为企业主流开发语言已流行多年,各种java安全编码规范也层出不穷,本文将从实践角度出发,整合工作中遇到过的多种常见安全漏洞,给出不同场景下的安全编码方...

    FB客服
  • 信息安全初学者必学的各类靶场环境

    对于初学者而言,漏洞靶场环境是一个非常不错的学习资源,有非常多优秀的前辈,为了方便学习信息安全技术,免费开源自己涉及的学习靶场环境,有专门针对 web 应用程序...

    信安之路
  • PHP文件包含漏洞攻防实战(allow_url_fopen、open_basedir)

    PHP是一种非常流行的Web开发语言,互联网上的许多Web应用都是利用PHP开发的。而在利用PHP开发的Web应用中,PHP文件包含漏洞是一种常见的漏洞。利用P...

    全栈程序员站长
  • SonarQube漏洞导致源码泄漏,开源网安代码审核平台实现国产化替代

    开源的代码质量管理平台 SonarQube 日前被黑客攻破,使得很多公司和机构开始紧急排查其设备或系统是否集成了 SonarQube,其中不乏一些国家机关单位,...

    大尚
  • 简析移动客户端安全

    风起云涌的高科技时代,随着智能手机和iPad等移动终端设备的普及,人们逐渐习惯了使用应用客户端上网的方式,而智能终端的普及不仅推动了移动互联网的发展,也带来了移...

    FB客服
  • [网络安全] 一.Web渗透入门基础与安全术语普及

    最近开始学习网络安全和系统安全,接触到了很多新术语、新方法和新工具,作为一名初学者,感觉安全领域涉及的知识好广、好杂,但同时也非常有意思。所以我希望通过这100...

    Eastmount
  • [网络安全] 一.Web渗透入门基础与安全术语普及

    最近开始学习网络安全和系统安全,接触到了很多新术语、新方法和新工具,作为一名初学者,感觉安全领域涉及的知识好广、好杂,但同时也非常有意思。所以我希望通过这100...

    Gcow安全团队
  • 从面试题中学安全

    根据 Github 上的面经总结的一些安全岗面试的基础知识,这些基础知识不仅要牢记,而且要熟练操作,分享给大家,共勉。

    信安之路

扫码关注腾讯云开发者

领取腾讯云代金券