AI从新定义Web安全

做者简介:php

图片描述

丛磊算法

白山合伙人兼工程副总裁。
丛磊先生2016年加入白山,主要负责云聚合产品的研发管理和云链产品体系构建等。
丛磊2006年至2015年就任于新浪,原SAE(SinaAppEngine)创始人,曾任总负责人兼首席架构师,2010年起,带领新浪云计算团队从事云相关领域的技术研发工做。(注:SAE是国内最大的公有云PaaS平台,拥有70万用户。)
丛磊拥有10项发明专利,现任工信部可信云服务认证评委。安全

云给安全带来的影响

距离2006年Amazon发布EC2服务已通过去了11年,在这11年里,发生的不只仅是AWS收入从几十万美金上涨到100多亿美金,更重要的是云计算已经走进每一家企业。根据信通院发布的“2016云计算白皮书”,目前近90%的企业都已经开始使用云计算(包括公有云、私有云等),这说明大规模云化对于企业而言已经不仅是趋势,更是确凿的既成事实。网络

云化普及的同时也给安全带来不少挑战,主要包括:架构

云化致使以硬件设备为主的传统安全方式失效。我在跟企业交流时,不止一家企业提出了这样的担忧:在上公有云的过程当中,由于没法把已购买的硬件防御搬到云上,因此很是担忧业务安全性。有趣的是,他们对于上云后的流量层攻击反倒不担忧,由于他们认为云上的高防IP等产品能够解决大部分问题。云化致使了业务层的安全空白,这不只发生在公有云环境,在私有云环境也时有发生,以OpenStack Icehouse版本为例,至今仍缺乏可以有效横向扩展的Web安全组件。框架

云化致使攻击/做恶成本大大下降。云是IT领域里“共享经济”的再升级,从最先的IDC租用升级进化到Linux kernel namespace租用,但这种“共享经济”在给企业带来成本下降、使用便利等益处的同时,也顺便给攻击者带来了一样的好处。按目前市场行情,攻击者租用一个公网弹性IP的成本可低至1元/天,租用一个IaaS平台的hypervisor层的计算环境,每日成本也只有几元,若是是container层的计算环境,成本还要更低。如此低的成本,导致攻击者再也不像过去那样花大力气挖掘培养肉机,而是能够在瞬间轻松拥有用于攻击的计算网络资源。以白山服务的某著名互联网招聘领域客户为例,攻击者最多能够在一天内动用上万个IP以极低的频率爬取核心用户简历。机器学习

云化致使业务可控性下降,遭遇攻击的风险大大提升。实际上云客观形成了业务的复杂性和不可控性:大量自身或合做方的业务都跑在同一个云上,其中任何一个业务被攻击,都有可能对其余部分形成影响。不能否认,现有的hypervisor隔离技术很成熟,以CPU为例,经过计算时间片分配进而在执行指令间插入各类自旋锁能够精确控制执行体的CPU分配,其余资源包括内存、IO也均可以恰当的控制。但在全部资源里,隔离性最脆弱的就是网络,尤为是公网,毕竟NAT出口、域名等很难被隔离。函数

因此,咱们不得不面对这样的现实:在享受云计算时代红利的同时,面临的业务层安全问题也愈来愈严重。性能

安全产品须要变革

遗憾的是,不少传统安全产品并无跟上这个时代。最明显的例子,15年前的防火墙就依靠着在命令行设定各类各样的policy工做;而15年后的今天,一切的变化只是由命令行设定policy变成了界面设置policy,这不得不说是一种悲哀!学习

对于传统安全产品,设定policy是一种痛苦

我曾经听某著名安全厂商的布道师演讲,“买了咱们的产品不表明你的业务就安全了,你必须学会怎么配置!”,这话听起来有道理,但遗憾的是,大多数公司的安全人员并非公司的业务开发者,他们不知道业务页面应该从哪一个referer过来、不该该接受哪一个user-agent的请求,也不知道某个接口应该接受哪些参数,甚至不知道业务对于单个用户的合理访问频率区间。更遗憾的是,这些传统安全产品价值不菲,在你花了上百万银子后,极可能毫无做用,而最悲哀之处在于“你觉得它在起做用!”

传统的安全产品由于必需要串接到业务中间,这带来了极大的不稳定性。虽然某些先进的硬件机制能够经过技术下降这个风险,但仍不可避免的是:串接会带来性能延迟+带宽瓶颈。有些企业一开始购买了100Mbps吞吐量的硬件安全产品,但当业务突增时,硬件却没法自由横向扩容。更麻烦的是,串行模式一旦分析的维度变得复杂(如策略变多时),就注定会形成业务的访问延迟;而分析维度一旦少,如退化为只作固定时间内访问频率限制,又会形成识别错误率上升。这是传统安全产品没法解决的永恒矛盾体。

不幸的是,虽然传统安全产品存在诸多问题,但不少用户仍在默默忍受,甚至习惯了天天配置策略的工做。但这并不意味着合理。

在不便中,一直蕴藏着技术革新的机会!这时,机器学习来了!

机器学习是解决安全问题的金钥匙

机器学习发展史

机器学习其实早已到来。由上图中能够看出,目前大红大紫的深度学习,其源头-神经网络,早在上世纪70年代就已经被提出。从上世纪80年代到本世纪,机器学习自己经历了几回平淡期和爆发期,随着大数据的发展和一些热点事件(如AlphaGo打败李世石)机器学习又一次进入爆发期。

那么大数据和机器学习具备什么关系呢?这还要和深度学习挂钩,从理论上讲,深度学习本质上是利用多层的神经网络计算,代替传统特征工程的特征选取,从而达到媲美甚至超越传统特征工程进行分类算法的效果。基于这个逻辑,当标注样本足够多时(即所谓“大数据”),经过深度学习就能够构造出很是强大的分类器,如判断一个围棋的棋局对哪方有利。

AI随着目前深度学习的火爆看似很是强大,但不幸的是,坦白讲目前AI的发展成熟度远没有达到能够取代人脑抑或接近人脑的水平。根据图灵测试理论,AI自己要解决的问题无外乎:识别、理解、反馈。

这三个问题逐步递进,真正智能的机器人最终能够跟人脑同样反馈,从而在图灵测试中没法区分它是人仍是机器。

按当前AI发展状况,“识别”的进展目前效果最好,不管是图像、语音仍是视频,目前不少厂商均可以作到很高的识别率;但“理解”就差强人意了,你们都用过苹果的Siri,它还未能达到与人真正对话的程度;而反馈就更难了,这要求在理解的基础上不断地应变,同一个问题可能因对方身份、心情、交流场合不一样,以不一样的语气语调作出不一样反应。

因此,目前应用机器学习效果很是好的领域,几乎都是某个特定领域内的识别问题,并不是通用领域,如人脸识别、人机对弈(人机对弈本质上也是某个棋种领域的识别问题:机器经过学习成千上万的棋局后,就能够自动识别某一棋局在一方走的状况下对谁有利。)

很是幸运的是,安全领域中问题大可能是特定场景下的识别问题,而非通用场景,也并未涉及理解和反馈,你只须要把相关数据交给机器学习系统,让它作出识别判断便可:安全或者不安全,不安全的缘由。

正由于安全问题本质是特定领域内的识别问题,因此从理论上讲,机器学习很是适合应用在安全领域,是解决安全问题的金钥匙。

安全结合机器学习的难点

虽然机器学习早已存在,可是长久以来并未改变安全市场,以“土办法(设定策略)”立足的产品仍旧占据主导地位,究其缘由,主要有如下几点:

1.不一样于其余通用领域,安全领域的样本标注成本较高。对于机器学习而言,拥有海量、完整、客观、准确的标注样本异常重要,标注样本越多、越全面,训练出来的分类器才可能越准确。对于全部行业来说,获取样本(标注样本)都并不容易,而安全领域尤其困难。如对人脸识别的标注,初中生甚至小学生就能够完成,但对于一次安全的威胁事件,就须要极具经验的安全人员才能够完成,二者的成本差距十分巨大。

某个注入攻击

如上图所示,这个注入攻击经屡次复杂编码,非专业人事很难进行样本标注。因此目前在通用场景下,之因此安全领域中深度学习落地并很少,主要缘由也是很难获取海量的标注数据。

2.不一样于通用领域,安全领域的场景特色更加明显,判断攻击的标准会随着业务特色的不一样而不一样。以最简单的CC攻击为例,600次/分钟的访问对于某些企业可能意味着破坏性攻击,但对其它企业则属于正常访问范围。因此,即使有大量的标注样本,某一企业的标注样本可能对于其余企业毫无用处,这也是致使安全领域应用机器学习较为困难的另外一个重要缘由。

3.针对传统的文本型攻击,传统思惟认为简单的特征工程,甚至直接的正则匹配更有效。

咱们把Web攻击分为行为型攻击和文本型攻击两类:

  • 行为型攻击:每一个请求看起来都是正常的,但将其链接成请求走势图时,就会发现问题,如爬虫、撞库、刷单、薅羊毛等。以刷粉行为为例:每一个请求看起来都是正常的,但攻击者可能动用大量IP在短期内注册大量帐号,并关注同一个用户。只有咱们把这些行为链接起来一块儿分析时,才能发现问题。
  • 文本型攻击:传统的漏洞类攻击,如SQL注入、命令注入、XSS攻击等,单纯的把一个请求当作是一段文本,经过文本的特征便可识别其是否为攻击。

当特征的维度空间较低,且有些维度的区分度很高时,经过简单的线性分类器,就能够实现不错的准确率,例如咱们简单的制定一些SQL注入的正则规则,也能够适用于不少场景。可是,这样的传统思惟却忽略了召回率问题,实际上也不多有人知道,经过SQL注入的正则规则,能够达到多少的召回率。同时,在某些场景,假如业务的正常接口经过JSON传递SQL语句,那么这种基于正则规则的分类器就会产生极高的误判。

然而传统安全厂商还还没有意识到这些问题。

4.传统安全人员并不了解机器学习。这是一个不争的事实,大量传统安全公司的安全人员精于构造各类漏洞探测、挖掘各类边界条件绕过,善于制定一个又一个的补丁策略,却并不擅长AI机器学习方面的内容,这也说明了这种跨界人才的稀缺和重要。

正是因为以上缘由,AI智能的安全产品迟迟没有出现,但没人能够否定,用户其实早已厌倦policy驱动的规则模式,期待有一种能够适应大多数场景、可以针对行为或文本作深刻分析、不须要复杂配置就能够达到高准确率和召回率的Web安全产品。

因而,咱们用AI从新定义Web安全,由于咱们坚信异常行为和正常行为能够经过特征识别被区分。

用AI从新定义Web安全

那如何解决安全领域的样本标注问题呢?机器学习分为两大类:监督学习和无监督学习。监督学习要求有精准的标注样本;而无监督学习则无需标注样本,便可以针对特征空间进行聚类计算。在标注困难的安全领域,显然无监督学习是一把利器。

应用无监督学习

无监督学习无需事先准备大量标注样本,经过特征聚类就能够将正经常使用户和异经常使用户区分开,从而避免大量样本标注的难题。聚类的方式有不少,如距离聚类、密度聚类等,但其核心还是计算两个特征向量的距离。在Web安全领域,咱们得到的数据每每是用户的HTTP流量或 HTTP日志,在作距离计算时,可能会遇到一个问题:每一个维度的计算粒度不同,如两个用户的向量空间里HTTP 200返回码比例的距离是两个float值的计算,而request length的距离则是两个int值的计算,这就涉及粒度统一归一化的问题。在这方面有不少技巧,好比可使用Mahalanobis距离来代替传统的欧式距离,Mahalanobis距离的本质是经过标准差来约束数值,当标准差大时,说明样本的随机性大,则下降数值的权值,反之,当标准差小的时候,说明样本具备至关的规律性,则提升数值的权值。

无监督的聚类能够利用EM计算模型,能够把类别、簇数或者轮廓系数(Silhouette Coefficient)当作EM计算模型中的隐变量,而后不断迭代计算来逼近最佳结果。最终咱们会发现,正经常使用户和异常聚成不一样的簇,以后就能够进行后续处理了。固然,这只是理想状况,更多状况下是正常行为与异常行为分别聚成了不少簇,甚至还有一些簇混杂着正常和异常行为,那么这时就还须要额外技巧处理。

学习规律

无监督聚类的前提是基于用户的访问行为构建的向量空间,向量空间相似:

[key1:value1,key2:value2,key3:value3...]

这里就涉及两个问题:“如何找到key”以及“如何肯定value”。

找到合适的key本质是特征选择问题,如何从众多的特征维度中,选择最具备区分度和表明性的维度。为何不像某些DeepLearning同样,将全部特征一块儿计算?这主要是考虑到计算的复杂度。请注意:特征选择并不等同于特征降维,咱们经常使用的PCA主成分和SVD分解只是特征降维,本质上DeepLearning的前几层某种意义上也是一种特征降维。

特征选择的方法能够根据实际状况进行。实验代表在有正反标注样本的状况下,随机森林是一个不错的选择。若是标注样本较少或自己样本有问题,也可使用Pearson距离来挑选特征。

最终,用户的访问行为会变成一组特征,那特征的value如何肯定?以最重要的特征——访问频率为例,多高的访问频率值得咱们关注?这须要咱们对于每一个业务场景进行学习,才能肯定这些key的value。

学习的规律主要包括两大类:

  1. 行为规律:自动找出路径的关键点,根据状态转移几率矩阵,基于PageRank的power method计算原理,网站路径的状态转移矩阵的最大特征值表明的就是其关键路径(关键汇聚点和关键发散点),而后顺着关键点,就能够学习到用户的路径访问规律。
  2. 文本规律:对于API,能够学习出其输入输出规律,如输入参数数量、每一个参数的类型(字符串or数字or邮箱地址等)、参数长度分布状况,任何一个维度都会被学习出其几率分布函数,而后就能够根据该函数计算其在群体中的比例。即使是最不肯定的随机分布,利用切比雪夫理论也能够告诉咱们这些值异常。例如:假如GET /login.php?username=中的username参数,通过统计计算得出平均长度是10,标准差是2,若是有一个用户输入的username长度是20,那么该用户的输入在总体里就属于占比小于5%群体的小众行为。
    经过特征选择和行为、文本规律学习,咱们就能够构建出一套完整且准确的特征空间将用户的访问向量化,进而进行无监督学习。

让系统愈来愈聪明

若是一个系统没有人的参与,是没法变得愈来愈聪明的,强大如AlphaGo也须要在同人类高手对弈中不断强化本身。在安全领域,虽然彻底的样本标注不可能,可是咱们能够利用半监督学习的原理,挑选具备表明性的行为交给专业的安全人员判断,通过评定校订,整个系统会愈加聪明。安全人员的校订能够与强化学习和集成学习结合实现,对于算法判断准确的状况,能够加大参数权重,反之则能够适当减小。

相似的想法出现于国际人工智能顶级会议CVPR 2016的最佳论文之一,“AI2: Training a big data machine to defend”,MIT的startup团队,提出了基于半监督学习的AI2系统,能够在有限人工参与的状况下,让安全系统更安全更智能。

从新定义Web安全

基于上述几点,咱们基本能够勾勒出基于AI的Web安全的基本要素:

AI Web安全技术栈

从图中能够看到,全部算法均包含在实时计算框架内。实时计算框架要求数据流的输入、计算、输出都是实时的,这样才能够保证在威胁事件发生时系统迅速作出反应。可是,实时计算的要求也增长了不少挑战和难点,一些传统离线模式下不是问题的问题,在实时计算下会忽然变成难题。如最简单的中位数计算,要设计一套在实时流输入的状况下同时还能保证准确性的中位数算法并不容易,T-digest是一个不错的选择,能够限定在O(K)的内存使用空间。还有一些算法能够实如今O(1)内存占用的状况下计算相对准确的中位数。

综上所述,咱们能够看出利用AI实现Web安全是一个必然的趋势,它能够颠覆传统基于policy配置模式的安全产品,实现准确全面的威胁识别。可是,构造基于AI的安全产品自己也是一个复杂的工程,它涉及特征工程、算法设计和验证,以及稳定可靠的工程实现。

ATD深度威胁识别系统

白山一直在基于AI的Web安全方面探索,并于2017年7月正式推出ATD(Advanced Threat Detection,深度威胁识别)产品,能够准确识别并拦截各类行为或者文本攻击,包括爬虫、恶意注册、撞库、刷单刷票、薅羊毛、各类注入攻击脚本攻击等,短短半年内已经积累了30余家大中型企业客户。实践证实,机器学习确实在Web安全方面收效颇佳,如:

  • 国内某Top3招聘网站,长期以来一直被爬取简历,这些恶意爬虫很是智能,在User-agent、referer等字段上彻底模拟正经常使用户,并内嵌PhantomJS,能够执行JavaScript脚本,使传统的JS跳转防护方式彻底失效。这些爬虫动用大量弹性IP,以极低频率抓取,据统计,单个客户端天天最低能够低至十次如下,传统的安全产品对此彻底丧失防护能力。而基于机器学习的 ATD则能够经过特征向量建模,准确区分低频爬虫与正经常使用户行为。经验证,准确率高达99.98%。
  • 国内某Top3直播平台,存在大量的恶意刷分刷排名状况,这种行为破坏了平台的公平性,本质上损害了平台利益。做恶团伙事先批量注册大量小号,在须要时冲排名。这些行为显然传统安全产品无能为力,某些新兴安全产品虽然能够解决,但须要大量定制化规则,通用性较差。机器学习算法正好弥补了以上不足,经过行为分析能够计算出关键路径和规律,而后利用子图识别等算法分析出做恶团伙,最终输出ID帐号。经用户验证,ATD的准确率高达99%以上,召回率比传统安全产品提升10倍以上。

总之,基于AI的Web安全是新兴的技术领域,虽然目前还处于发展期,但最终必定会取代以policy为驱动的传统安全产品,成为保证企业Web安全的基石。

相关文章
相关标签/搜索