靳晓飞(secsky)|VIPKID 安全部

本文主要从背景介绍和VIPKID在数据安全建设方面的探索实践经验两方面展开:

一、数据安全为什么这么火?

二、在线教育企业对于数据安全的关注点和目标

三、我们为什么关注用户手机号安全保护

四、用户手机号安全保护目标

五、用户手机号安全保护整体思路

六、用户手机号生命周期关键节点流转简化图

七、手机号泄露风险评估与解决方案

八、手机号泄露数据安全监控实践

九、数据泄露溯源分析

背景介绍

01、数据安全为什么这么火?

现在数据安全非常火,无论是在一些安全交流群,还是各大安全会议,数据安全都是热点话题。但数据安全并非一个新词或新的领域,而是在很早之前就存在的。那么问题来了,为什么现在数据安全会变得这么火?背后的原因是什么?我们可以从以下几个方面来一起分析下。

时代变化

首先是时代的变化。我们已经从IT时代进入DT时代,而且正在快速步入万物互联的物连网时代。现如今数据产生的速度越来越快,数据量也越来越大。同时,数据价值也越来越高。甚至之前一些看起来无用的数据经过关联分析和整合以后,都有可能会成为新的有价值的数据。

行业变革

在这样大的时代背景下,除了互联网行业,一些传统行业也纷纷将业务扩展至线上。数据成为公司资产,并且在流动中产生价值。越来越多的攻击者也将攻击目标锁定为窃取目标系统/企业的核心数据。如何保障数据全生命周期和在流动过程中的安全,成为企业安全团队面临的全新安全挑战。

合规驱动

与此同时,随着GDRP、个人信息安全保护规范等一系列法律法规的落地实施,无论是国内还是全球范围内,对于数据安全和隐私保护的合规和监管要求的趋势也是越来越严格。如果发生数据泄露事件,不仅会给企业带来经济损失,公司业务发展和商务合作都可能会受到影响。

用户意识

现在用户对于个人信息和隐私保护的重视程度和维权意识也在不断提升和增强。另外,由于自媒体的发展,信息传播速度越来越快。一起信息泄露事件很有可能会在短时间内发展成为PR事件。

受整个大环境的影响,越来越多的企业开始意识到数据安全的重要性,数据安全建设也被提升到了一个新的高度。但企业数据安全建设与传统攻防对抗的做法和对安全人员的技能要求有明显差异。为此,有一些互联网企业开始组建专职数据安全团队来负责公司整体数据安全工作,VIPKID是其中一家。VIPKID数据安全团队隶属于安全部,和业务安全、基础安全团队平行。

02、在线教育企业对于数据安全的关注点和目标

由于每家企业所处的发展阶段、业务特性和所属行业的不同,这样就导致每家企业对于数据安全的关注点和风险容忍度有明显差异。对于在线教育企业而言,数据安全建设的核心目标是为了保障以下几方面数据在数据全生命周期和流动过程中的安全。

用户数据

家长、学生、老师的帐号、密码、手机号、邮箱、地址、上课音视频及其他个人敏感和隐私数据

企业数据

公司运营、财务、合同、核心算法、代码等敏感数据

员工数据

组织架构、内部通讯录、简历、offer等

供应链数据

外包、上下游合作过程中一旦泄露可能导致企业自身存在安全风险的数据

其他数据

其他如果泄露可能对公司正常运营、发展、品牌带来负面影响或引发安全事件的数据

VIPKID数据安全实践

上面是一个简单的背景介绍,在下面VIPKID数据安全实践部分我会主要分享VIPKID在保护用户手机号安全方面所做的一些努力和实践经验。

03、我们为什么关注用户手机号安全保护

我们为什么要重点关注用户手机号安全保护呢?主要基于以下几点原因:

公司利益

用户手机号是VIPKID核心数据资产,一旦泄露,会给公司带来直接或间接经济损失。

企业义务与责任感

保护用户数据和隐私安全是企业的义务,作为一家有责任感和重视安全的企业,我们需要保护好用户数据安全。

安全合规与法律风险

前面已经提到,无论是国内还是全球范围内,对于数据安全和隐私保护的合规和监管要求趋势是越来越严格。所以我们需要提前布局,做好数据安全工作,尽可能避免因数据安全事件使企业处于被动地位。

品牌形象

一旦发生数据安全事件,会对企业品牌形象造成极大负面影响,进而造成用户投诉和流失。尤其是在企业发展的关键阶段,影响会更大。

04、用户手机号安全保护目标

既然数据安全这么重要,那么我们在保护用户手机号安全方面的目标是什么呢?

事前

数据不被泄露,这也是终极目标。

事中

具备可及时、主动发现数据泄露行为,并快速响应止损的能力。

事后

具备数据泄露溯源分析能力,能够定位到数据泄露人、系统和还原数据泄露过程。

05、用户手机号安全保护整体思路

目标有了,那我们该如何去做呢?思路是什么?可以分为四个阶段来看:

主动发现、确认发布

这个阶段的目标是要确认和梳理出所有存在手机号的数据库、系统、API接口的分布情况,以及每个地方对应的数据量是多少,为下一阶段的风险评估提供目标和依据。

风险评估、制定方案

基于上一阶段的产出,评估每个地方的数据安全风险,并制定出可落地的数据安全方案。

方案实施、持续监控

推动和实施上一阶段制定的安全方案,并建立持续的数据安全监控、应急手段和预案。

持续运营、不断优化

设定运营指标,通过持续的安全运营来不断发现新的风险点和持续优化现有方案以适应业务的发展。

06、用户手机号全生命周期关键节点流转简化图

基于以上思路,我们以业务视角来看下用户手机号在全生命周期和流动过程中会涉及到哪些节点,以及每个节点面临的数据安全风险和对应的安全方案是什么。

注:为避免内部数据泄露,这里只列出通用的关键节点,实际业务场景远比这个要复杂的多。

07、手机号泄露风险评估与解决方案

08、手机号泄露数据安全监控实践

上面很多地方提到了数据安全监控,那么我们要监控哪些地方?监控的目标是什么?如何实现有效和持续的安全监控呢?

监控哪些地方?

简单来讲,所有可以查看和返回完整手机号的接口都应该被监控和覆盖到。

常见的有注册、登录、找回密码、订单详情、收货地址等。另外中间件访问日志(比如access log)和业务日志也应该重点关注,这里面通常会有大量敏感数据,有些危害基于比拖库更加严重,一定要引起重视。

监控目标

当有人尝试利用这些接口批量获取手机号时可实现分钟级感知和与安全防护联动,实现自动化安全防护。

如何实现?

通常有两种实现方式:1.流量分析;2.日志分析;

这两种方式相比,理论上流量分析的方式更好,因为通过流量可以从HTTP请求和响应数据包中获取到更多的信息,可以支持更多维度的分析,效果更好。但有时由于客观条件限制,无法镜像流量或镜像流量的成本较高,也可采用日志分析方式来进行数据安全监控。

目前我们采用的就是日志分析的方式。

先来看下整体的架构:

1.在接入层nginx利用FlumeNG agent采集日志->2.发送至kafka消息队列->进入ES集群->利用Grafana实现可视化安全监控

以上都是目前业界主流和成熟的架构,这里不再详谈。感兴趣的可以自行百度,网上这块资料非常多。

利用Elastalert从ES集群提取日志,基于建立的数据安全监控策略,进行实时或近实时日志分析。

Elastalert官方网站:

https://github.com/Yelp/elastalert

Elastalert官方文档:https://elastalert.readthedocs.io/en/latest/elastalert.html#

主配置文件:config.yaml

具体的安装和配置这里不再详谈,这个不是本文重点。

数据安全监控策略分析可以基于IP、useragent、referer、访问频率、用户、响应码等维度,根据具体的攻防场景建立相应的安全监控策略,可以通过多条策略组合来达到更好的识别和防护效果。

当发现有攻击命中安全策略,Elastalert会产生一条安全告警,通过配置,可以将此告警详情以json格式发送给后端自己开发的安全告警发送程序。

安全告警程序接收告警详情并解析和从中提取相关字段,按照定义好的格式组合成为一条安全告警消息,并发送至指定接收端,我们这里使用企业微信作为安全告警接收端。也可以换成手机短信、钉钉、邮件或其他方式,这个看自己的实际需求。

与此同时,安全告警程序会自动调用自动化安全防护程序,通过WAF API将攻击IP拉入黑名单。这里还有很多细节,比如通过增加异常处理、HTTP请求中各字段的合法性校验、同一IP触发安全策略的次数来动态调整拉黑时间等方式增加程序的稳定性、强壮性和防护效果。

ES集群敏感数据安全审计

前面我们说过每个公司应用系统的访问日志和业务日志中可能会包含大量敏感数据,所以我们做了另外一件事,通过开发一个日志审计工具来实现ES集群中日志的周期性自动化安全审计,目的是以自动化的方式来主动发现日志中包含的敏感数据,然后及时推动各业务部门整改,降低这个地方的数据泄露风险。

这个审计工具的实现思路是先获取每个ES集群中索引的数量和名称,然后遍历,根据事先设定好的敏感数据规则去分析确认每个索引中是否存在定义的敏感数据,如果存在,记录敏感数据条数并提取样本,完成后会生成一份审计报告自动发送至定义好的接收邮件,由安全人员根据问题项目确认负责人,跟进解决。

09、数据泄露溯源分析

前面介绍的是一些事前和事中的做法和实践,那么对事后,也就是数据泄露事件发生后我们该如何进行溯源分析呢?要进行数据泄露溯源分析和还原泄露过程有两个前提:

1.明确或怀疑有数据泄露,这是一个基本前提,否则也就没有溯源分析的理由和必要性了。

2. 溯源过程涉及到的系统、设备等要有完整和正确的日志记录,这一点至关重要。很多数据泄露或安全事件溯源失败的直接原因就是日志不完整甚至根本没有记录日志。

泄露情报获取

收集和获取数据泄露情报的渠道和途径主要有以下几种:

数据泄露溯源分析

数据泄露溯源分析其实是一件比较困难的事情,思路通常分为正向和反向两种,如上图所示:

正向分析首先要调研、梳理清楚存在目标数据的业务系统有哪些,列出清单逐个分析和排查。这个说起来简单,但实际情况要复杂的多。原因在于企业的业务场景非常复杂,尤其是大型企业更是如此。目标数据可能会在很多个业务系统中流转和存在,由于历史或其他一些原因,很难有人能够准确和清楚的说出目标数据究竟存在于哪些业务系统,这个可能是正向分析过程中遇到的最大挑战。而且这种方式还有个特点就是工作量大,周期长。

反向分析的思路不太一样,这种方式第一步要做的是收集到一些泄露数据的样本,进行共性分析,尝试从中提取特征,根据定位到的特征来锁定嫌疑比较大的一个或几个目标系统,然后进行分析确认,定位到人,最终还原整个数据泄露过程。这种方式要想溯源成功有一点至关重要,那就是泄露数据样本的数量和有效性。

声明:本文来自VIPKID安全应急响应中心,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。