作者简介:王润辉,携程技术中心信息安全部高级经理。2015年加入携程,负责携程业务安全。个人专注在:安全漏洞,数据分析建模,业务安全,风控系统整体架构等。
作为国内第一大OTA企业,业务安全一直是携程所面临的重要安全风险之一。
在面对各类从散兵作战到越来越专业化的黑产,以及技术从单一到持续自动化的工具化下的攻击时,我们也根据不同的业务安全风险,建立了相应的系统进行防护,并和黑产进行持续的技术和思维上的攻防。
其中经历了从业务驱动技术(被动式防御),到技术驱动业务(主动式防御)的过程,不断结合新技术的应用,新系统的开发以及注重用户体验和安全的平衡,并最终关注用户安全感知,不断完善业务安全的各方面,为用户提供一个安全、可信的环境,同时减少企业在安全上的损失。
携程的业务当前面临了大多数互联网企业都面临的相关业务安全风险:
1、垃圾注册,但发现有较多难点:手机号码;秒拨ip;行为工具化;打码平台等;
2、扫号也是重大安全风险之一,威胁账号安全的关键点:资金盗用;信息泄漏;恶意欺诈。同样发现也有很多难点如:IP使用量巨大,可以做到1号1IP;使用外部社工库,密码正确率高;可以根据安全措施及时更换策略;设备指纹基本伪造,无明显特征;
3、薅羊毛(羊毛党)是当前电商,金融类公司重大的安全风险。对企业产生较大影响,包括影响活动实际收益和到达率;侵占有限的活动资源。发现难点:牟利方式多样化,各种形式组合;模拟真人或直接真人操作;黑色产业链发达,集团化模式;
4、爬虫,企业的价格策略被掌握;扰乱PV/UV,无法做出正确营销判断;发现难点:频次低,特征不明;不会对业务方造成明显感知;
面对上述四大业务风险,携程设计了三大系统进行应对。
各应用验证码难度解耦;自动调节难度和类别;各参数独立可变配置;服务响应在10ms之内;
系统概况:
应对场景:扫号,薅羊毛,接口遍历;
效果:数字英文易识别成本低,中文输入成本高;
体验:用户每天需要一定时间输入,英文数字在5s左右,中文大于10s;
成功率:成功率优化后保持在90%;
架构图:
后端验证码配置界面:
问题:
类别单一,易于破解(机器识别,人工打码);体验较差,输入验证码时间长;识别率存在上限;
实时配置规则;异步响应; A/B testing
系统概况:
应对场景:扫号,薅羊毛;
效果:日均响应请求 1000w+次;
性能:平均响应耗时5ms;
系统架构图:
问题:
非实时响应;非多参数响应;无法支持多数据源;规则引擎服务写死
基于离线规则运算;数据迭代,分钟级别计算结果;与外部黑产数据结合;
系统概况:
应对场景:垃圾注册,扫号,薅羊毛,爬虫;
对扫号近实时拦截,目前成功账号/IP已经达到了0.7:1;
反爬主要提供对恶意爬虫的检测,经过A/B测试日均拦截爬虫行为10w次;
薅羊毛和异常注册识别月均识别超过10w次;
案例:
本次事件持续40分钟,平台发现异常并介入使用了8分钟,随后20分钟进行了中文验证码干预,效果比较明显,且无需人工进行干预,实现了快速全自动化响应,让扫号无所遁形。
问题:
Sql+DB;数据量瓶颈;运算效率
携程的业务安全实践,通过业务驱动技术,解决了相关问题的同时,也带来了一些系统上的瓶颈,并在业务的快速发展和攻击者的不断更新中,呈现了不少问题。为此,我们也正在寻求一条新的道路:技术驱动业务,来更好的支持业务,从被动到主动。
数据层:
数据层负责对各种结构化以及非结构化数据进行统一的数据收集,清洗,预处理操作。目前来说,这种清洗注重点一般在区分正常用户和异常用户的注册,登录到账户各种重要操作,浏览PV数据,到最后购买旅游产品的一个行为区别,以及用户存在是否批量操作的相关数据抽取,这也被称为用户的社交网络区分。
规则引擎层:
规则引擎层负责将清洗及预处理完成的数据,使用实时流或者迭代作业按照定义好的规则或者模型进行数据计算,将计算完成的数据,存放在数据仓库内,以供分析层或者应用层调用。
分析模型层:
分析模型层负责将目前已有的清洗完成以及计算完成的结果数据再清洗和归类,进行后续的规则分析,补充,调整,模型的建立,以及离线+实时评分卡的数据权重比例调整等。
应用层:
应用层主要负责将综合得到的实时+离线的评分卡形式的得分结果通过SOA接口返回给业务方,告知业务方请求是否存在风险,并提供操作建议,同时会将相关请求数据全部记录,以供后续分析。
系统优势:
•支持各类不同源数据方式,DB,api接口,kafka消息等
•支持分钟级到年的离线海量数据计算,支持storm流式和hive离线方式
•实现比drools更优化的实时规则引擎计算逻辑,支持实时配置及四则运算,评分卡等
•高效的计算效率,千条规则毫秒级响应,整体接口内部平均响应10ms内
•分层架构设计,灵活应用spark,impala,presto等新技术的引入
•账户安全,反欺诈,反爬,接口防刷均可以使用规则引擎实现防护,能在各类场景应用
主要涉及bu前端js,验证码后端服务及bu后端,其中bu前端js,验证码后端均是业务安全开发,作为一个产品化的产品推广到bu后端接入,bu后端只需要监听js事件及验证码的校验,大大减少的bu的开发量工作,并简化了相关流程,风控和验证码在一个流程中实现。同时js也兼顾其他相关功能,大大提高了安全防护能力。
在图片验证码体验的瓶颈及安全性防护的提升角度,安全开发了2类新的验证码:滑块和选字验证码,从兼顾体验和安全性出发,同时也使用了上面的架构,引入了风控进行防护。滑块在测试中,用户输入在1~2秒左右,大大提高了4位验证码的体验。选字验证码则兼顾了一些其他很好的作用(保密),同时所有字体位置随机,且后端只校验坐标位置,大大提高了破解难度,在体验上并不输于滑块,破解难度更高,成为我们后续的引入重点。
携程未来在业务安全上还会继续应难而上,在技术和业务上共同发展,包括底层spark,presto,impala的引入,安全用户画像,惩罚中心,挑战服务的系统上线等等。
携程作为国内互联网旅游企业的标杆,体验和安全的平衡一直是业务安全所追求的,在有了技术支撑的前提下,这块也将进行持续的优化和改进。
同样,信息安全一直是全社会关注的话题之一,用户的安全感知,即如何提高用户自身的安全思维和对信息的敏感,保护自己账户,信息和个人资产的意识,也是我们需要进行不断改进所需要展示给用户的。
安全之路,任重而道远。