业务安全通用解决方案——WAF数据风控

作者:南浔@阿里云安全

“你们安全不要阻碍业务发展”、“这个安全策略降低用户体验,影响转化率”——这是甲方企业安全部门经常听到合作团队抱怨。但安全从业者加入公司的初衷绝对不是“阻碍业务发展”,那么安全解决方案能否成为“业务促进者”,而非“业务阻碍者”呢?答案是肯定。

安全和业务接耦,对客户透明的安全产品,如防火墙、IDS、WAF等就很少遭受到类似的吐槽。

但回归到互联网业务安全场景,现在业务安全防控常见场景往往如下:

场景一:

安全:“登陆流量报警了,有人在刷库"

业务:“我看下,这是个登录入口是给哪个业务开放的,已经很久没人维护过了”

BOSS:“有什么方法可以快速止血吗?”​

安全、业务:“这个小入口之前都没有接入过风控系统,只能账号回捞事后处置了”

BOSS:……

场景二:

安全:“这个安全策略需要你们把用户登录的IP发给我。”业务开发改造N天上线。

安全:“这里有一部分IP不对啊,是不是取的网关的内网IP。”

业务开发:……

场景三:

业务开发:“安全让我们纪录user-agent、浏览记录,现在业务的响应时间很多都消耗在打日志上了。做这些有业务价值吗?”

安全:……

这些场景核心问题都在于业务安全解决方案通常嵌入业务逻辑中。那互联网业务安全有没有如同防火墙一样通用的解决方案呢?要解答这个问题我们先探究业务安全的“通用安全风险”。

0x01 业务安全通用安全风险

要找到业务安全的通用风险,首先得定义什么状态才算业务“安全”。当安全工程师被客户问到“这个产品是否安全?”,他往往会考虑各种安全细节问题,业务类的是否会被撞库、是否存在信息泄漏,系统类的是否有注入、水平权限控制等问题。但这些安全细节问题,往往并非问题“是否安全”的答案。

客户所需要的“安全”是一个平衡。没有绝对安全的系统,再健壮的系统也有可能因为安全问题而遭受资损,同时为系统提高安全性也并非零成本。 所以客户需要的“安全”是安全成本和安全资损的平衡。为一个DMZ区的博客服务器专门配备一个安全工程师不是客户需要的“安全”。节约安全成本却导致大规模的撞库事件也不是客户希望的“安全”。

回归到业务安全场景,会发现一个共同特征。只有达到一定规模,批量利用,业务安全漏洞才会造成业务影响。一次Web攻击可能就写入webshell导致机器沦陷,但有限次的撞库、垃圾注册、垃圾消息、刷单造成的威胁是企业可以承受的。而攻击者要达到大规模,批量性的目的,都要通过机器来自动化实现。可以得出结论——大规模、批量性的机器风险是业务安全领域面临的通用风险。

0x02 通用解决方案需求分析

上节已经得出大规模、批量性的机器风险是业务安全领域面临的最大痛点,那么要实现通用的“解决机器风险方案”有哪些需求。针对机器风险业界防御手段已经很成熟——针对人类知识(验证码)、针对人类固有特征(行为识别)、消耗机器成本(POW)等。但业界仍无整合这些防御手段提供通用普适的业务安全解决方案,问题主要有两点——无法做到业务透明和快速部署。

业务透明:

现有的人机识别方案,客户需要前端、后端的改造进行接入,甚至于业务需要配合安全方案进行业务逻辑的调整。安全侵入业务主逻辑,有时候安全甚至成为业务的负担。

快速部署:

机器风险防御手段过于复杂,无法快速部署,进而导致业务系统无法通过配置简单的实现全站部署防控。而业务系统往往有无数的小流量入口,这些未进行部署的入口往往成为漏洞。

0x03 通用解决方案具体实现

如何实现“业务透明”、“快速部署”的通用机器风险解决方案呢?核心是能够以中间人的方式介入浏览器和业务服务器之间,实现如下需求:

  1. 在页面注入相应的Javascript脚本;
  2. Javascript脚本采集数据并hook用户所有触发提交操作的事件,将数据在用户发起请求时注入请求中;
  3. 能够代理转发浏览器与业务服务器的请求,并解析请求内容;

现在中间人攻击工具(MITMf)已经相当成熟,而逆向应用中间人攻击工具的思路似乎可以达成这些需求。在业务服务器与浏览器之间部署WAF服务,用户在浏览网站时由WAF注入前端需要数据采集的JS,同时JS在前端hook用户的请求事件,用户发起请求时将采集的风险识别数据注入,请求再次到达反向代理时,由反向代理提取相应风险识别数据提交风控大脑进行综合决策判断是阻断用户请求还是发起二次校验挑战。

WAF数据风控服务在业务服务器与浏览器之间的交互流程如下图:

关键的业务风险防控采用三层漏斗模型进行层层过滤,达到透明阻断业务风险的目标。这三层漏斗模型分别是:阻断机器从而杜绝攻击者批量攻击的风险,异常流量分析识别部分漏网的机器行为及行为轨迹异常的不良用户,征信模型基于对于用户的信誉评分拒绝不良用户,最终达到将服务推送给目标用户的目的。

阻断机器:

  1. 针对人类固有特征进行机器识别,基于JS实现的可信前端采集用户行为数据,通过线上实时模型来发现机器行为进行阻断;
  2. 消耗机器攻击成本从而让攻击得不偿失,基于POW(proof of work)原理,通过服务端下发问题消耗前端的计算量。对于有足够空余CPU资源的普通用户少量的计算并不消耗成本,而攻击者需要达到批量攻击的效果则会占用极大的计算资源,让攻击得不偿失。

流量分析:

通过机器学习对网络流量中的异常流量进行识别,从而拦截一些行为轨迹异常的不良用户,常见思路如下:

  1. 浏览轨迹,比如在互联网金融场景,正常用户会在注册后对比多款理财产品最后进行下单,而“羊毛党”往往在群里得到活动信息就会直奔活动页面薅羊毛;
  2. URL聚类,在网络购物场景,正常用户购买某款商品之前一般会在同类目商品中进行选择;
  3. 浏览频率,在UGC网站上,用户浏览和评论的一般是有一定时间间隔,频繁秒回的用户极有可能是在发垃圾消息。

征信模型:

伴随互联网诞生有一句经典的论断“在互联网上,没人知道你是一条狗”。然而业务安全场景,识别用户身份、评估用户信誉是业务风控的重要依据。
借鉴现实社会成熟的征信系统,且现在互联网已经是一个成熟的生态闭环。通过设备指纹标示用户,基于用户在互联网的活动记录进行信誉评分,并辅以失信用户名单,从而对bypass前两层的高风险用户进行拦截。

0x04 WAF数据风控服务的价值

回归到文章开始的问题,业务安全防控如何成为“业务促进者”,WAF数据风控服务能否达成这个目标?答案是肯定的。

WAF数据风控服务有两大优势,而这两大优势在保障企业业务安全同时也达到了促进业务发展提速的目标。

第一,业务透明,业务开发资源可以专注的投入在业务代码上,降低企业达成安全需求的成本。

第二,快速部署,WAF数据风控服务可以快速进行全站部署,快速实现对网站业务风险的保障。如同安全带的发明保障驾驶员的安全性同时进而让汽车能够更安全的以更高的速度行驶,对全站进行业务风险防控后也可以让企业真正把业务推送给目标用户,从而让企业的业务发展提速。

作者:南浔@阿里云安全,更多安全类文章,请访问阿里聚安全博客

业务安全通用解决方案——WAF数据风控的更多相关文章

  1. 一个方便且通用的导出数据到 Excel 的类库

    一个方便且通用的导出数据到 Excel 的类库 起源: 之前在做一个项目时,客户提出了许多的导出数据的需求: 导出用户信息 导出业务实体信息 各种查询都要能导出 导出的数据要和界面上看到的一致 可以分 ...

  2. Tech 助力Fin ,大数据风控系统赋能掌众金服!

    胡亚海 首席技术官  CTO 北京航空航天大学  博士 深耕互联网领域近20年,先后任职于普天信息技术研究院.摩托罗拉.宇龙酷派.百度等知名企业,曾主导宇龙酷派公司全员从WinCE向Android转型 ...

  3. BAT、网易、京东等如何做大数据风控的?

    大数据风控目前应该是前沿技术在金融领域的最成熟应用,相对于智能投顾.区块链等还在初期的金融科技应用,大数据风控目前已经在业界逐步普及,从BATJ这样的大企业,到交易规模比较大的网贷平台,再到做现金贷. ...

  4. 量化派基于Hadoop、Spark、Storm的大数据风控架构--转

    原文地址:http://www.csdn.net/article/2015-10-06/2825849 量化派是一家金融大数据公司,为金融机构提供数据服务和技术支持,也通过旗下产品“信用钱包”帮助个人 ...

  5. 亿级用户下的新浪微博平台架构 前端机(提供 API 接口服务),队列机(处理上行业务逻辑,主要是数据写入),存储(mc、mysql、mcq、redis 、HBase等)

    https://mp.weixin.qq.com/s/f319mm6QsetwxntvSXpKxg 亿级用户下的新浪微博平台架构 炼数成金前沿推荐 2014-12-04 序言 新浪微博在2014年3月 ...

  6. 人物传记Kyle Tedford:数据环境生变,银行大数据风控怎么办?

    数据是金融业务的基石,监管集中清查大数据公司,很多东西在发生根本性改变,资金方做"甩手掌柜"的好日子不会重现.那些缺乏自主风控能力的金融机构,在未来的行业竞争中,恐无以立足了.近日 ...

  7. Web自动化框架之五一套完整demo的点点滴滴(excel功能案例参数化+业务功能分层设计+mysql数据存储封装+截图+日志+测试报告+对接缺陷管理系统+自动编译部署环境+自动验证false、error案例)

    标题很大,想说的很多,不知道从那开始~~直接步入正题吧 个人也是由于公司的人员的现状和项目的特殊情况,今年年中后开始折腾web自动化这块:整这个原因很简单,就是想能让自己偷点懒.也让减轻一点同事的苦力 ...

  8. EAIntroView–高度可定制的iOS应用欢迎页通用解决方案

    简介 高度可定制的应用欢迎页通用解决方案,可高度定制,不要仅限于现有的demo. 项目主页: EAIntroView 最新示例: 点击下载 入门 安装 安装后,引入” EAIntroView.h”并设 ...

  9. tableZen maxHeight 解决方案 如果数据条数小于N,不进行高度设置,超过N条,直接设置高度,解决原生iview Table 对于右侧固定列,不能计算出正确数值的解决方案

    tableZen maxHeight 解决方案 如果数据条数小于N,不进行高度设置,超过N条,直接设置高度,解决原生iview Table 对于右侧固定列,不能计算出正确数值的解决方案 if (thi ...

随机推荐

  1. 用python DIY一个图片转pdf工具并打包成exe

    最近因为想要看漫画,无奈下载的漫画是jpg的格式,网上的转换器还没一个好用的,于是乎就打算用python自己DIY一下: 这里主要用了reportlab.开始打算随便写几行,结果为若干坑纠结了挺久,于 ...

  2. 第三十四篇:在SOUI中使用异步通知

    概述 异步通知是客户端开发中常见的需求,比如在一个网络处理线程中要通知UI线程更新等等. 通常在Windows编程中,为了方便,我们一般会向UI线程的窗口句柄Post/Send一个窗口消息从而达到将非 ...

  3. CozyRSS1.0 - 有可用性版本

    bin:还是不提供了,有兴趣的加QQ群373862115讨论 src:https://github.com/zpublic/cozy/tree/a202ae0944936c1ca56c2c3f4b73 ...

  4. 进击的Python【第五章】:Python的高级应用(二)常用模块

    Python的高级应用(二)常用模块学习 本章学习要点: Python模块的定义 time &datetime模块 random模块 os模块 sys模块 shutil模块 ConfigPar ...

  5. 1.Linux常用命令

    命令名称:ls 格式: ls  [-选项] [参数]  注:中括号表示可选 命令路径:/bin/ls 功能描述:显示信息 例如: 选项 -a 显示所有的文件,包括隐藏文件,(以 . 开头的文件) -l ...

  6. Python3使用urllib访问网页

    介绍 改教程翻译自python官网的一篇文档. urllib.request是一个用于访问URL(统一资源定位符)的Python模块.它以urlopen函数的形式提供了一个非常简单的接口,可以访问使用 ...

  7. css定位学习经验记录

    之前了解到css的定位position属性,常用的三种: position:absolute 1.当父元素定位为relative时,以父元素为起始坐标定位. 2.当父元素没有定位时,以body为起始坐 ...

  8. 向上滚动或者向下滚动分页异步加载数据(Ajax + lazyload)[上拉加载组件]

    /**** desc : 分页异步获取列表数据,页面向上滚动时候加载前面页码,向下滚动时加载后面页码 ajaxdata_url ajax异步的URL 如data.php page_val_name a ...

  9. 每天一个linux命令--批处理

    简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. 创建批处理脚本wanghy.sh: #!/bin/sh cd /opt/virgo-tomcat-se ...

  10. Hoops随便记的

    段 包含图形的段·几何·属性:颜色,可见性,选择功能等等·子段:更低层的段段的名称·段可以进行命名·可以像文件系统一样表示路径:绝对路径.相对路径.通配符当前段(激活的段)·你可以在任何一个时间来处理 ...