由Bot驱动的凭证填充是现代互联网上的一大祸害。这些攻击会试图登录并接管一个用户的帐户,使用大量字典单词和以前被盗的帐户凭证攻击密码表单,其目的是执行欺诈性交易、窃取敏感数据和损害个人信息。
在Cloudflare,我们已经构建了一套技术来对抗Bot,其中的许多都以机器学习为基础。机器学习是当今的一个热门话题,但相关文献往往只是关注于改进其核心技术,而没有关注如何将这些学习机器整合到现实世界中。
鉴于我们在机器学习上拥有丰富的经验(不只是Bot管理,我们还在许多安全性和性能产品中使用了机器学习),我们希望分享有关该技术在实际产品中应用的一些经验教训。
每家企业在将机器学习融入其DNA的生命周期中通常会经历三个阶段。它们分别是:
商业情报
独立机器学习
机器学习产品化
这些概念有点抽象——所以让我们来看看它们如何应用于我们都知道和喜爱的一个具体领域:牙科保险。
商业情报
许多公司已经具备了某种商业情报:对大量数据进行排序、搜索、过滤和执行初步标记。商业情报本身不是机器学习,但它可以作为机器学习的基础。
想象一下你的邻居ACMEDental牙科保险公司会定期收到牙科索赔。对于每一项索赔,经过培训的保险专业人员会对传入的X光片进行评估,以确认牙医的诊断,并将索赔标记为准确或不准确。
从表面上看,这些数据提供了可使用的情报:某个牙医或地区误诊数的增加可能意味着需要专业人员做进一步的调查。但这些数据可以用来做更有趣的事情。
独立机器学习
机器学习模型训练的关键是编译一个带标签的数据集:原始数据与一个描述性标签配对,告诉计算机它看的是什么。正如我们即将看到的,这些数据集通常是商业情报的自然副产品。
ACMEDental的一些天才工程师注意到,通过他们的日常工作,他们已经收集了大量光片结果,这些结果被标记为“准确的”或“不准确的”。
他们手持数千张标记过的X光片,决定训练一种可以自动判断X光片的机器学习算法。他们使用几种开源工具中的一种来进行图像识别,生成了一种机器学习算法,该算法可以扫描X光片并对索赔进行精准分类。
机器学习产品化
一旦有了一个有效的算法,我们就需要把它变成一个产品。这通常涉及工程、产品设计,以及最终的业务开发和销售之间的协作。
ACMEDental发现其新的机器学习算法非常有效,因此其产品经理决定将其提供给X光机制造商。通过集成ACMEDental算法,牙医可以加快他们的工作流程并减少误诊概率。该机器还可以与保险公司联通,以便立即获得索赔批准。
在产品化集成算法后,ACMEDental的业务开发团队与三星(Samsung)等制造商进行了合作。
经ACMEDental算法改进的新型X光机在市场上大受欢迎,这让牙医可以把常规诊断工作交由助手进行。
有了这个框架,让我们来探索如何应用Cloudflare的机器学习。
为了给我们的机器学习模型提供信息,我们依赖于Cloudflare网络上1300万个域名的数据,该网络每天有超过6600亿个请求,每月服务超过28亿人。我们利用海量数据来应对Web上最紧急的安全威胁之一:bot攻击。
商业情报
我们最近分析了Cloudflare全部1300万个域名上一天内出现的(6600亿个)请求,并给每一次潜在攻击打上“bot分数”,分数范围从0到100。Cloudflare已经有大量的工具来帮助我们得到这个分数,但是原则上,我们也可以手动将每个数据点标记为“bot”或“非bot”,类似于上面的牙医示例。
我们的分析得出的最初结论是攻击的地域分布。基本的Bot防护工具依赖于阻止来自通常与恶意流量相关的国家的IP地址。但是,当我们对整个网络中的僵尸程序来源进行排名时,很明显,这种方法是站不住脚的,因为大多数攻击都来自合法流量很大的国家。还有一个更为复杂的解决方案可以使我们在不影响实际用户的情况下防御僵尸程序。
独立机器学习
在编译了从Cloudflare的网络中取样的大型数据集之后,我们的机器学习专家团队开发了一个最先进的模型来预测自动凭证填充和其他Bot攻击。
训练:在我们的训练集内,我们从1万亿个请求(经过几天的编译)开始,每个请求都被附上了之前提到的bot分数,并且我们在CPU/GPU集群上分析了它们的特性,以识别恶意流量的趋势。我们使用了CatBoost,这是一个类似于XGBoost 的梯度增强库。
验证:尽管我们执行了数百个独立的验证测试,但最终要验证的是有多少登录请求会面临验证码测试,而又有多少请求通过了验证码测试(通过验证码很可能代表着假阳性——将真人判为Bot)。
在一周的时间里,我们将我们的解决方案部署到95个带有WordPress登录页面的网站上,发现我们发出了超过66万次验证,其中只有0.32%得到了解决——这意味着我们的算法检测Bot的准确率为99.68%。
尽管这项工作才刚刚开始,但WordPress网站占全球网站总数的32.5%,因此这是非常有意义的一步。与此同时,我们发现超过80%的WordPress登录页面请求都是凭证填充攻击,这说明了这些攻击是多么普遍。
机器学习产品化
部署:一旦我们对我们的算法的准确性有了足够的信心,我们就将其作为众多安全特性之一部署到Cloudflare的全球165个(现今为190+个)服务器设施中,这些服务器设施构成了Cloudflare的网络边缘。如今,它每天评估超过6600亿个请求——从网络上观察到的每一次额外攻击中学习和改进。
但没过多久,我们扪心自问:知道并阻止凭证被篡改的实时攻击就足够了吗?我们还能做得更多吗?
我们利用现有的数据,开始考虑如何开发一种算法来预测哪些公司将会受到攻击。这将使我们能够在攻击发生前主动向企业发出警告,并让它们为最坏的情况做好准备,即使它们目前不在Cloudflare的网络上。
训练:我们使用行业类型、员工人数、收益金额等企业统计结构信息对机器学习模型进行训练,预测登录攻击的百分比。
结果:在众多有趣的发现中,规模较小的公司受到攻击的比例更高。直观地说,这是有道理的,因为机会主义的攻击流量扫描互联网上的所有页面的频次是平等的,而真人流量在流行的网站上超过了Bot攻击流量。因此,即使小公司的流量较小,它们也是最容易受到攻击的。
这些发现是否只影响到我们模型中包含的来自237个国家、拥有28亿访问者的1300万个Cloudflare网站?也许不是。这意味着Cloudflare可以开始考虑帮助所有公司,根据它们独特的风险状况,主动预测攻击。
机器学习对我们下一代产品的开发至关重要,而我们只触及了皮毛。我们希望这篇文章可以帮助您在自己的组织中规划机器学习的发展轨迹:您的机器学习发展道路会与我们的有所不同,但我们希望您会从中看到一些相似的关键节点。
Cloudflare正在积极开发其机器学习功能——如果您有兴趣加入我们或与我们合作,执行我们的使命,请与我们联系。