No.0260

Science Partner

Bring you to the side of science

打开网易新闻 查看精彩图片

导 读

大家好,我是恒意。

上周网上的热搜,想必大家应该都刷到了。有位网友发现,自己手机提示:美团删除了照片和视频。刚开始大家都觉得是个段子,或者截图是P的。但接下来两天,类似的反馈陆续在各个平台冒出来。这时候大家才意识到这是真的。

舆论一下就炸了。照片这东西对每个人都很敏感,谁遇到这种事都会火大。美团这波挨骂不冤,毕竟在自家地盘上出了这么大纰漏,没啥可说的。

但作为爱好科学的小伙伴,如果你只把这件事当成”一家大公司干了件蠢事”,跟着骂完就翻篇了,那可能错过了一个更重要的信息。

这件事背后,其实藏着一个数字时代非常普遍、但大多数人没意识到的规律。弄懂这个规律,比单纯骂两句更有用。

走,跟伙伴君来!

今日主笔 | 恒意

美团删照片这件事的真问题是什么?

01. 先问一个最基本的问题

美团为什么要删你的照片?

这个问题听起来是废话,但其实是整件事最重要的起点。删用户私人照片,对美团来说意味着什么?用户愤怒、媒体曝光、品牌受损。一家每天靠几千万用户信任来完成交易的平台,这是疯了吗?

所以,在搞清楚“怎么发生的”之前,“为什么要这么做”这个问题的答案几乎是确定的:非主观意愿。

既然排除了“有人故意使坏”,那剩下的唯一解释,就是一个在工程层面上没兜住底的系统性技术问题了。也是恒意觉得整件事里最值得被每一位小伙伴看懂的部分。

02. 要看懂这个,咱们得先讲一个互联网圈出名的案子

2021年6月的某个普通工作日,全球互联网集体宕机了将近一小时。《纽约时报》、BBC、Reddit、亚马逊、Twitch,同时打不开。数亿用户刷新网页,得到的只有报错界面。

造成这一切的,是一家叫Fastly的CDN公司,全球顶级的基础设施供应商,工程师水平放全世界都是第一梯队。事故原因?一个在代码里安静潜伏了整整两年的bug,被一个用户的完全正常的操作,在某个没有人预料到的条件组合下触发了。

两年里,无数次测试,无数次版本迭代,没有任何一次把它翻出来。

工程世界里有一类bug,有个专门的名字叫Heisenbugs,得名于量子力学的海森堡测不准原理。它的特点是:你单独观测它,一切正常;但当某些特定变量同时出现,它就爆炸,而且几乎不可能在爆炸之前被发现。这不是工程师偷懒,这是复杂系统的基本属性,变量足够多、模块交互足够复杂的时候,总会存在一些只有极端条件才能引爆的隐患。软件工程发展几十年了,这件事从没被彻底解决过,包括在硅谷。

Fastly事后发了一份非常坦诚的技术复盘,整个行业看完之后的反应不是Fastly真坏,而是“这种事,可能发生在任何人身上”。

03. 美团这次,踩的是同一类坑

美团给的解释是:第三方插件在部分安卓系统版本上运行冲突,缓存清理异常,误删了用户文件。

听起来像在甩锅,但这个机制从技术上还确实是成立的,值得花一分钟讲清楚。

现代大型App,本质上是个“联合国”。推送通知、数据分析、广告投放、图片处理,往往各用一个第三方SDK,来自不同公司,被集成在同一个App里,共享同一套系统权限,在你手机上同时运行。平时各跑各的,没有问题。但在某个特定的安卓版本、某个特定的厂商定制层、某个特定的SDK版本组合下,两段代码同时去操作同一个资源。

于是,指令打架了。

缓存清理模块本来应该清理App自己沙箱里的临时文件。但在那个特定条件组合下,路径判断出了错,走到了一个它永远不该走到的地方。

这就是这次事故的物理过程。没有人打开后台盯着你的相册挑着删,一段走错路的代码,在它不该出现的地方,做了一件没有人授权它做的事。

04. 责任是真实的,性质也必须要说清楚

2017年,亚马逊AWS就出过一次影响深远的宕机事故。一个工程师在执行例行运维时,操作自动化工具多输了一个错误参数,触发了远超预期规模的服务器下线,Slack、苹果App Store、数百家企业服务同时中断。AWS的事后复盘直接承认:自动化工具对非预期输入缺乏边界防护,是系统设计上真实存在的疏漏。工程师没有主观恶意,但漏洞客观存在,损失真实发生。

从现在掌握的信息看,美团这次在结构上高度相似。

OWASP的移动应用安全验证标准MASVS,是目前全球移动安全领域被引用最广泛的工程规范。它在本地存储这一章里写得很清楚App 对本地文件系统必须遵循最小权限原则,本地文件操作必须做严格路径隔离,第三方SDK在没有明确边界约束的情况下,不得访问用户私有文件目录。

对照这个标准,美团这次暴露的问题是清晰的:对引入的第三方SDK缺乏精细的权限边界管理,极端系统环境组合下的测试覆盖不足,本地文件操作缺少独立的路径合法性校验。这不是一个bug能解释的,是工程体系在这个具体环节上系统性的疏忽。

责任在,损失真实,用户愤怒完全合理,大家骂也理所当然。但如果你硬要把它当成一家公司在后台偷偷删你照片,那就有点找错靶子了。找错靶子的结果就是:骂完之后,你以为自己安全了,其实真正坑你的那个东西,还在你手机里。

这才是骂声盖住的那个问题。

05. 真问题是,不可替代的东西别放一个篮里

这次事故里有一个细节值得认真想一想:很多受害者说,那些照片是他们唯一的副本。

没有备份。

我们正生活在一个把越来越多不可替代的东西塞进手机的时代。孩子的成长记录、父母留下的旧照片、多年前的旅行视频,这些东西一旦丢失就是真正意义上的永久消失。但我们对它们的保护方式,大多数人还停在“放在手机里应该没事吧”这个判断上。

数字安全领域有一条被NIST写进数据保护基础建议里的原则,叫3-2-1备份法则:

三份数据副本,存在两种不同介质上,其中一份在异地或云端。这不是什么高深技术,数据安全也被挂在嘴上多年,道理并不复杂,难的是大家总觉得“应该用不上吧”,结果哐当一下就赶上了。

Fastly的bug潜伏了两年。AWS的工程师多删了一个参数。美团的某个SDK在特定环境下走错了路。这些故事的共同点,不是某家公司坏,而是,任何一个足够复杂的数字系统,在足够极端的条件组合下,都可能做出让你意想不到的事。这不是世界末日,但这是事实。

面对这个事实,最理性的应对从来不只是骂哪一家公司。更重要的问题,是认真问:

手机里最重要的那些东西,现在在几个地方存着?

如果答案是“一个”,那今天,就是你做备份的最好时机。

我是恒意,咱们下期见~

本文 仅作科普分享使用,欢迎小伙伴们点、收藏、关注,以备不时之需,当然更欢迎您把 介绍给周边可能需要的更多伙伴们呀。

打开网易新闻 查看精彩图片