由「微盟删库」事件引发的一些思考


=Start=

缘由:

最近的「微盟删库」事件比较火,事情刚一出来的时候就已经有各种分析猜测文章了,现在事情已经过去一周多了,微盟的数据也已经全部都恢复了,很多文章也已经进行了深度复盘,事件的很多细节也已经很清楚了,这里也不细谈(有需要的可以去参考链接中查阅),只讲一讲我想到的和企业安全相关的一些点,方便以后参考。

正文:

参考解答:

关于微盟系统故障的通告

2020年2月23日,18:56分,微盟研发中心运维部核心运维人员通过VPN登入服务器,并对线上生产环境进行了恶意破坏;

2月23日 19 时,微盟内部系统监控报警,出现大面积服务集群无法响应;

2月25日7 时,生产环境和数据部分恢复,预计25日晚24点完成生产环境修复,新用户恢复业务。老用户预计到2月28日晚上才能恢复。

微盟事后对恶意破坏生产环境的嫌疑人进行追踪分析,成功定位到嫌疑人登录账号及IP地址,并于24日向宝山公安局报案。目前犯罪嫌疑人已被宝山区公安局刑事拘留,承认了犯罪事实。

2月28日,微盟恢复了所有业务的线上生产环境,并且开放了老用户登录,以及恢复了微站产品的所有数据。

截止到3月1日晚8点,在腾讯云团队的协助下,经过7*24小时的努力,微盟已经全面找回数据。由于此次数据量规模非常大,为了保证数据一致性和线上体验,微盟将于3月2日凌晨2点至8点,进行数据恢复上线演练,在此期间微盟的系统将会停止服务,演练完成后系统数据回滚到3月2日的数据。

微盟将于3月2晚上10点至3月3日上午9点,正式进行数据恢复上线,微盟将恢复2月23日之前的数据,同时将2月23日与3月2日的数据进行合并,届时微盟所有的数据恢复完成。

以上是从微盟官方发出的文章中整理的一个大概的事故发生和处理时间线,下面大致整理一下当前想到的『教训』和分别针对大小公司可以采取的一些规避措施。

总结的一些教训

  • 部分运维权限过大;
  • 敏感操作没有双重审核、确认机制;
  • 普法宣传、安全宣导做的不好;
  • 不关注员工身心健康。。。

以及针对小公司和大公司可以采取的一些规避措施、手段:

小公司如何防范规避

  • 全面上云,借助云数据库产品(因为云厂商具有相对比较完善的自动备份和恢复机制);
  • 对所有重要/敏感操作双重确认机制;
  • 定期进行普法宣传,安全宣导;
  • 最好能有定期演练(即便是全面上云了之后最好也要进行定期演练以验证实际情况,避免云服务商挂了你也受影响,起码要能达到快速切换云服务商以保障业务连续性的效果);

大公司如何防范规避

  • 备份,全量备份、增量备份、异地备份,而且还要定期执行备份可用性测试,避免备份文件不可用;
  • 快速恢复,其实算是BCM(业务连续性管理)中的一部分,事前做好规划,定期进行演练;
  • 权限最小化、隔离、审批、冷权限自动回收,定期审计;
  • 流程,对所有重要/敏感操作执行多重审批确认机制,而且最好还要能够支持快速回滚的功能;
  • 工具,减少线上必须要登录机器才能进行的操作,尽量减少人工干预,支持多重审批确认机制的系统;
  • 定期进行普法宣传,安全宣导;
  • 需要有针对(敏感职位)员工心理健康监控、干预机制;

参考链接:

微盟删库事件的深度复盘报告
https://mp.weixin.qq.com/s/xNjAI2MMo4P1-zpnFDY15A

从微盟36小时故障,谈谈数据安全和备份这个事
https://mp.weixin.qq.com/s/kIv2R-HI5xljY8EX4H4naw

程序员“删库跑路”,一己之力蒸发公司市值超10亿,300万商铺遭瘫痪
https://mp.weixin.qq.com/s/BPdnuSGF-hFXjDEfMjT92g

安全以人为本:解读微盟删库事件
https://mp.weixin.qq.com/s/CTnYJ8G1hSrcGdrYP84ftg

微盟事件带来的启示:企业内鬼如何防?
https://mp.weixin.qq.com/s/Rz6VnFXqN19jI70iUpFbKg

微盟删库事故启示录
https://mp.weixin.qq.com/s/VVB2ebC_x3eVHux83D_sZA

微盟创始人回应桃色传言;程序员老友由删库事件想到的往事
https://mp.weixin.qq.com/s/n8OEKJKdfL91d-OfJ3wuJQ

员工“删库”戳破“技术公司”泡沫,微盟单日市值蒸发11亿
https://mp.weixin.qq.com/s/yzQtqlFeTJKVufbkpmZW0Q

微盟瘫痪:一个程序员引发的20亿血案
https://mp.weixin.qq.com/s/Bcvf7kcRDgpBdrWyN3kdwA

以微盟故障来细说数据安全
https://mp.weixin.qq.com/s/zc1G0Xm9rUp4nFaDzJRdLg

微盟“删库”144小时:痛的不是股价,是信任
https://mp.weixin.qq.com/s/CQEs5YfP5z0DDKSnffEC9Q

员工拿VPN在家办公,公司数据被毁,微盟市值一天蒸发9亿
https://www.toutiao.com/i6797248837078483467/

微盟系统被员工删库,这事到底有多严重?相关各方将会面临什么样的处境 ?
https://www.zhihu.com/question/374518368

微盟员工为什么删库?
https://www.zhihu.com/question/374781631

微盟数据已经全面找回 并公布商家赔付计划
https://mp.weixin.qq.com/s/vZP5JHnjUk8GcwXahqflBw

微盟七天七夜找回删库数据,决定赔付商家1.5亿,痛定思痛全面上云
https://mp.weixin.qq.com/s/9MHMxt6LskF942JpQV-CgA

=END=


《“由「微盟删库」事件引发的一些思考”》 有 3 条评论

  1. 微盟数据被删的幕后故事
    https://mp.weixin.qq.com/s/2C_0V9zc3q8pWcRBo6leWQ
    `
    作为一名技术人员,接下来会从技术和技术管理的角度来谈谈他们的改进措施。

    措施一:数据安全管理机制全面加固与整改,加强运维平台治理
    关于这一点,个人认为管理是一项长期工作,包括细粒度权限分级和授权管理短期来说肯定能得到落实,但是时间久了,人也就疲了,最终很容易流入形式,长期而言,是否有效我持怀疑态度。

    措施二:加强灾备体系的建设,做到多云异地冷备
    这一点原则上我认同的,但是有一点我也有疑问,方案中的多云指的是在腾讯云的多个region中做多云异地灾备,那如果腾讯云也挂了呢?反正这也不是没有发生过。(腾讯云的小伙伴不要介意,没有哪一家云服务供应商能提供SLA100%的服务,Google也是一样)。
    我所理解的多云应该是异构多云,这是未来的趋势,多家云厂商多活互联(相关案例可以参考《多云管理,恺英实战之道》),也许微盟这么选择的主要原因是基于腾讯生态的影响,以及腾讯云的大力支持,投桃送李的考量罢了。

    措施三:基础设施全力上云
    这一点基本等同于措施二,不再复述。

    除了这几点,我觉得还有几点是需要做的,主要如下:
    第一点:权限分离,备份数据的写入权限与删除权限分离,做备份的人或者工具只能追加,不能删除;
    第二点:备份系统和备份数据的可用性校验,需要周期性校验和采样确保备份真正可用,而不是备份了就万事大吉;
    第三点:加强自动化建设,减少人对线上体系的手动干预,通过工具固化流程,隔离风险;
    第四点:chaos monkey,平时不练兵,指望战时打胜仗那是不可能的;

    第五点也是最重要的一点,发生这种事情,归根到底一定是管理问题。很多公司在业务发展停滞的时候,很容易把技术和技术人员当做成本,而不是财富,总希望再多砍点人,再减少一些IT支出,这里需要管理层,特别是CEO和CTO把持好尺度,做好利润和成本的balance,同时确保人员招聘质量,通过一些测试,避免一些思想异常的人员进入公司(对此我有深刻的体验,以后有机会可以和大家聊聊),严进宽出,适度加大技术投入,建立起人才梯队,避免人员单点,同时加强人文关怀,对技术人员,特别是一线技术人员好一点,多些关心和交流。

    写到这里,基本上完成了此次微盟事件的复盘,希望其他的公司能真正的吸取教训,避免类似的事情再次发生,也希望所有技术的小伙伴能有所收获。
    `

  2. 微盟数据被删后的七天七夜
    https://mp.weixin.qq.com/s/MFhnc4qPpxxxZY1O-uTk1g
    `
    技术团队很快对修复方案达成一致:鉴于数据库服务器上文件数量多,类型复杂,文件的提取和确认难度很大,而备份服务器上文件类型单一,数据集中,且微盟数据被删后,硬盘没有被二次写入,理论上里面可能存在相对完整的备份数据,团队决定从备份服务器入手,尝试恢复数据。

    他们很快面临了第一个艰难的抉择——

    通常来说,数据修复的第一步是对源数据进行镜像拷贝,以避免修复过程中源数据受损的风险。如果采用网络传输进行拷贝,以微盟的数据体量,光是数据拷贝过程就至少需要2天以上,会让数据修复的时间进一步加长。“微盟和商家们都等不起。”

    另一种惯用的处理方式是将原来服务器上的硬盘拆装后挂载到新服务器上,以并行的方式进行“硬盘对拷”。这样可以节约时间,但风险是一旦中途出现故障,源数据可能会因此完全丢失。“对于仅有一次这样修复机会的微盟来说,这样做风险太大。”

    两难之下,在征得微盟同意后,团队做了一个大胆的决定:越过镜像拷贝的步骤,同时不将微盟的数据盘从原有服务器上拔下来,而是将另外一块系统盘安装到原有服务器上,通过新系统盘加载OS和数据恢复软件,直接扫描提取数据盘中的“隐藏”数据。

    这样做的依据是,数据硬盘的健康度良好,且腾讯云技术团队有丰富的硬件处理经验,有较大把握在源数据不损伤的前提下进行扫描。这相当于借助一根体外供血管在体内完成这场手术,通过完美的技术,实现效率与完整性兼顾。

    ==
    徐勇州彻夜未眠。思量再三,决定两条腿走路:一是尝试对磁盘的每一块(block)进行二次扫描;二是让腾讯云的操作系统团队从OS底层入手,制定数据恢复方案PlanB,这需要极其庞大数量的尝试和数据验证,“方案一能成功是最理想的,方案二就意味着数据恢复的时间不确定,业务停摆,继续失血。”

    周四上午,第一台服务器的第一块扫描成功,导回数据库查看是完整的。“方案一可行!大家信心一下子又起来了。”

    从可行到成功,中间仍有艰难险阻。数据公司提取出来的单一的块,从体积来看还是达不到微盟核心文件的大小。这意味着,要获得完整数据,需要进行数据“拼接”。

    就好像整块拼图被打散扔进了大海里,一块一块打捞上来是第一步,拼接是第二步。不同的是,拼图时还能够根据形状来判断哪些可以放在下一块,而拼接数据块,根本无法通过肉眼识别,只能靠一块块去扫描,寻找相似度高的拼接到一起,再重新扫描看断点是否能重合。

    庆幸的是微盟的备份机制较为完备,数据的覆盖度和完整性检查等工作非常细致。徐勇州发现,文件类型只有一种,那么就能很容易判断出哪块是开头,拿着开头去找剩下的块,把工作量从“N*N”降低到“1*N”。

    但“1*N”的工作量也不小。最大的一个文件,由7块碎片组成。找到开头以后,工程师开始扫描其他有相似性的块。运气好的时候,相似度可能只有一块,运气不好的时候 ,有二三十块。每进行一次拼接,都需要把数据块从头到尾扫描一遍,验证是否匹配。这需要大量的计算力。为了加快扫描和验证,腾讯云服务器团队还临时从上海机房调拨了100多台服务器进行算力支持。

    徐勇州已经不记得这样的“打捞、拼接、扫描、验证,重新打捞、拼接、扫描、验证”进行了多少次,只记得每一次都是四五个小时的煎熬。“大家每隔一会儿就在腾讯会议上吼,好了没,好了没,快看看!”

    终于,一块又一块的数据被拼接出来,核心数据逐渐被修复。“太不容易了,心情真的跟过山车一样。”

    2月28日,深夜,数据修复胜利在望。
    `

  3. 链家40岁员工删除公司9T数据,被判7年
    https://www.4hou.com/posts/Yq49
    `
    根据中国裁判文书网的消息,原链家网(北京)科技有限公司数据库管理员韩冰因犯破坏计算机信息系统罪一审被判处有期徒刑七年,二审驳回上诉,维持原判。

    回看 2020 年,删库事件接二连三:

    1、2020 年 2 月 23 日 18 时 56 分许,贺某酒后因生活不如意、无力偿还网贷等个人原因,在其暂住地上海市宝山区逸仙路 XXX 弄 XXX 号 XXX 室,通过电脑连接公司虚拟专用网络、登录公司服务器后执行删除任务,将微盟服务器内数据全部删除。

    导致微盟自 2020 年 2 月 23 日 19 时起瘫痪,300 余万用户(其中付费用户 7 万余户)无法正常使用该公司 SaaS 产品,经抢修于 3 月 3 日 9 时恢复运营(故障时间 8 天 14 个小时)。

    截至 2020 年 4 月 30 日,造成微盟公司支付恢复数据服务费、商户赔付费及员工加班报酬等经济损失共计人民币 2260 余万元。

    最终,贺某犯破坏计算机信息系统罪,判处有期徒刑六年。

    2、2020 年 4 月 13 日,王某因某网络科技有限公司 驳回其开发的 OBS 对象存储服务代码的奖金要求,心怀不满,便产生了报复公司的想法。

    当日 11 时许,王某在该公司使用 root 超级管理员账户登录至华为云服务器的 FTP,修改了其开发的 obs 对象存储服务代码,导致 2020 年 4 月 14 日 8 时至 9 时 35 分,某平台运行异常,该公司代发的政府电子消费劵领取受阻,直至当日 10 时 43 分,11225 名会员才领取完当日电子消费劵,给该平台声誉及会员收益造成严重影响。

    最终,王某被判处拘役五个月、缓刑六个月。

    这些事情告诉所有打工人:删库或许容易,但跑路是不可能的。最后,希望所有公司做好安全方案的同时善待打工人。
    `

发表评论

您的电子邮箱地址不会被公开。