让手机“坐电椅”?一群较真儿的人制止了真实世界的残酷攻击
作者| 史中
本文由公众号浅黑科技(ID:qianheikeji)授权转载。
(零)充电器引发的血案
在美国曾经流行一种死刑的执行方式,坐电椅。
2000伏特的高压电穿过犯人,十几秒钟就会让这个倒霉蛋凉透。
这种刑罚给犯人带来怎样的痛苦不得而知(截止目前,尚未有犯人晚上托梦告诉其他人这是什么感受),但那景象和味道却能给行刑人带来一生难以抹去的心理阴影。
能被高压电摧毁的,不只有碳基生命,还有硅基生命。
一个不支持快充的设备,默认只能接受5V的充电电压,这时候,如果你用一个快充充电头(20V的电压)强行为它充电,这个设备就如同“坐了电椅”,光速去世。
就像图中的这样。
你可能会问:不对吧,我用快充充电头给普通的手机充过电,没有去世啊!
没错,这是因为充电器领域的大佬早就考虑到了这个问题,当快充充电器遇到受电设备时,双方会进行一次简单沟通:
充电器:我这边最高支持20V,你要多少V啊?
受电设备:对不起小兄弟,我是2015年的老手机了,年轻人的新东西我都接受不了,你就给我标准的5V电压吧。
充电器:得嘞,那就5V!您慢慢充。
你看,虽然这个沟通虽然简单,但却很“暖心”。事实上,这些沟通都是由快充充电头里内置的一系列代码来实现的。
充电器和受电设备大体就是这么沟通。
有人的地方就有江湖,有代码的地方就有漏洞。
谁能想到,半个巴掌大的快充充电头,里面只有几百行代码,只有几Kb存储空间,却有可能被黑客改变代码,从“暖男”秒变“杀手”,向受电设备发起大电压攻击,直接让手机或电脑报废。
就在2020年,这个漏洞被腾讯玄武安全实验室的技术宅们发现了,他们给它起名为“BadPower”(坏电源)。
这里说个小八卦,“Bad”字辈的漏洞,很多都是玄武实验室命名的。例如实验室的负责人 TK 之前发现的 BadBarcode(坏条形码)漏洞,可以用伪造条码欺骗扫描器,直接导致商户金钱损失,整个行业折腾了好几年才基本完成了修复。
你可能有感觉了,这类漏洞往往不像第一眼看上去那么简单,它们背后都有一个巨大的“盗梦空间”,当有人抽掉那根顶梁柱时,整个世界就开始晃动。
这被称为“设计类安全问题”,听上去就挺带劲的。
于是,我跑到腾讯北京总部,找到了 TK,请他讲了讲这个“BadPower”漏洞背后的世界。
我在 JD 上搜索了一下快充充电器,还是有很多品牌的。(图片仅做展示,并不意味着图内品牌的充电器都存在问题。)
(一)感觉哪里有问题
2018年春天,TK 坐在办公室里,他的电脑屏幕里闪烁着一份密密麻麻的技术文档。
彼时,快充技术刚刚普及,高通、MTK、苹果、OPPO 等等好多厂家分别开发出了一套自己的快充标准。一时间各阵营群雄逐鹿,混战不停。
但这带来一个问题:大家的标准不同,A阵营的充电器遇见B阵营的设备,虽然理论上都支持快充,但就像一个说日语,一个说西班牙语,他们就是没办法“相认”,A阵营的充电器只好降到5V给B阵营的设备慢充。
长此以往,问题大大的。
于是,一个叫做“USB标准化组织”的组织,组织大家讨论出了一套“根正苗红”的快充技术标准。从那以后,不管你是哪个阵营的,都要给“USB标准化组织”一个面子,兼容这个版本的快充标准。
TK 当时看的,正是“USB标准化组织”发布的快充技术白皮书。
最下面两个就是标准充电和快充的认证标志。
可是看着看着,老江湖的直觉告诉他,哪里不对。
首先,根据标准,充电器内部代码不能是写死的,而必须是可编程的。
其次,标准还规定,充电器出厂之后,要预留一个升级接口。
这就相当于房地产开发商把房子卖给你,但是却留了一把钥匙,可以随时打开你家房门,给你添置点家具什么的。
当然,在现实生活中,法律是不会允许房地产商预留这样的钥匙的。但是在智能硬件领域,这却是一个可接受的标准操作。
TK 给我讲了一个例子:
苹果的耳机刚出来的时候,因为降噪性能太好,会意外导致一些人头疼。苹果于是紧急升级耳机固件,把降噪性能稍微降下来一点儿。但是耳机已经卖出去那么多,不可能一个个召回修改。所以,这个升级就是通过预留的升级接口下发的。
当耳机连接 iPhone 的时候,手机就把升级代码传送给了耳机。当然这一切都是静默完成的,普通用户并没有感觉。
你看,一个产品出街,鬼知道会碰到什么幺蛾子问题,如此说来,在销售的硬件上预留一个升级接口,好像也合情合理。
但正是这个机制的设计,让 TK 感觉“有机可乘”,当时他脑海里出现了一个“火刑攻击模型”。
布鲁诺:???
首先,想办法搞出一段攻击代码,植入目标充电器。
然后,在充电器连接手机的时候,让攻击代码流入手机。
再然后,攻击代码可以破坏手机充电保护机制,让手机在已经充满电的情况下继续充电,直到电池燃爆。
最后,这个攻击代码还可以在不同的手机和快充充电器混插的时候交叉传播,就像艾滋病一样。
给你画张图方便理解。(字太小的话就点击放大)
如果真的能达成这样的攻击路径,那么黑客就有可能制造出一种病毒感染全球大多数快充设备,甚至能让全世界的手机在同一时刻烧毁,想想都让人毛骨悚然。
不过,目前为止这一切都只是理论中的推演,这其中每一步都有可能卡住,具体能不能做到,还要事实来验证。
玄武实验室只有不到30人,人力实在有限,当时绝大多数人又都扑在另一个漏洞——用残留的指纹痕迹解锁手机——上,所以真正开始研究快充充电器的问题,已经到了2019年的春天。
不过,即使是在玄武实验室内部,这个研究都是绝密的,只有包括 TK 在内的六个人知道,颇有几分“曼哈顿计划”的意思。
因为我们曾经发现了很多影响行业的安全问题,锻炼出了敏感性。这个漏洞的危害可能非常大,把它限制在实验室的范围内,一切都能控制,一旦扩散,后果就无法预料了。所以我们非常谨慎。
TK 换上了一副严肃脸。
就这样,TK 指派玄武实验室研究员马卓带领着四人小分队开始了长达一年的“地下研究工作”。
(二)成为充电专家
这件事,比想象中更艰难。
原因在于:快充这个领域极其封闭,从网上根本找不到相关的技术文档。
手机究竟怎么和快充充电器建立连接?他们俩用什么语言沟通所需要的电压和电流?这些通通不知道。
你可能会说,找个做充电器的厂家问一问不就行了?
这里有一个行业知识:大多数充电器厂商只负责最后的整合制造,主体方案都是从上游的方案集成商购买的。而你去问一个充电器制造商他们的方案是从哪里买的,人家能告诉你才见了鬼。
感觉整个行业的人,无论是快充芯片生产商、方案集成商、充电器生产商还是受电模组生产商都“躲在暗处”,像卖驴一样在袖口里就把一切都商量好,悄悄地就把这些东西给生产出来了。
进入这个领域,就像是摸进了一栋漆黑的房子,你不知道里面的陈设和结构如何,也不知道里面究竟有多大,甚至连房子里面是人是鬼都不知道。
这可咋办?研究员们只好先硬着头皮先从市场上买回来几个销量不错的充电头,看着桌子上这几个“硬核桃”发楞。
要我说,一个顶级的安全研究员,得跟顶级的特工不相上下。
你看詹姆斯邦德,无论是汽车还是飞机坦克,连航空母舰他也是必须上去就能开,强烈怀疑他的驾照是宇宙交管局给他发的。
玄武实验室这群技术宅也不含糊,他们决定,就用死磕的方法,掰掉充电器外壳,然后直接把芯片给焊下来,引脚接到自己开发的调试设备上,一顿逆向分析。
就这样,几个月过去了,他们用缓慢但却有效的方式把“快充”这间黑屋子的运作原理摸得七七八八。
这就像二战时盟军破译了德国的密电码,别提多高兴了:充电头向手机发出一串信号,研究员就知道,这是在建立快充连接;手机又向充电头发出一串信号,研究员也能秒懂,这是在协商电压。
不是吹牛,现在我们团队的几位同学对于快充的信号涵义和运作机制,比大多数充电器厂商理解得都要深刻。
TK 说。
可是,充电器原理研究明白了,问题也来了。
就在2019年夏天,马卓他们四个垂头丧气地走进 TK 的办公室:“老板,失败了。。。”
原来,随着研究员对快充技术越来越了解,甚至可以任意修改固件,但他们确信 TK 之前设想的那个攻击模型是无法达成的。
我们来回忆一下最初 TK 设计的“火刑攻击模型”,其中有两个关键难点:第一,攻击代码要能破坏掉电池的充电保护机制;第二,攻击代码要能在手机和充电器之间来回横跳传播。
这两个关键点在现有的条件下都是无法突破的。
首先,无论是电脑还是手机,起码有三层机制在保护电池不过热燃烧,有的甚至是纯硬件机制,这个基本没有可能绕过。这也就是说:烧电池做不到。
其次,一般的快充充电器里能用来存储的空间太小了,只有几Kb,完全放不下能自我传播的那种高级的攻击代码。而且被充电的设备模块逻辑也很简单,难以被控制。这也就是说,让攻击代码在充电器和手机之间横跳也做不到。
听完了同学们的描述,TK 猛然问了个问题:“既然已经能修改固件,应该就可以控制输出的电压和电流了吧?”
同学们回答:“这。。。应该是可以的。”
“那你们已经成功了啊!”TK笑了。
(三)柳暗花明
这世界上真爱不好找,攻击模型可有的是,尤其是“猥琐流”的黑客总能想出各种千奇百怪的攻击模型。
这不,TK 一秒钟就又想到了另一种攻击模式:
1、通过手机把攻击代码传输进快充充电器里。
2、被感染的充电器只做一件事,瞬间输出最强的电压,击穿受电设备的芯片,让它报废。
这么一来,原来电池着火的“火刑”就变成了高压电击穿芯片的“电刑”,反正不把受电设备弄死,这群技术宅是不会死心的。。。
同事们根据这个思路一试,发现果然走得通。
于是,一套详尽的攻击方式被火速构建起来。
具体来说,攻击分这么几种情形:
1、面对非快充设备。
前面说过,正常的快充充电头会询问设备,你要的电压电流是多少。如果受电设备回答是5V,或者是不回答(一般的非快充设备根本没有“回复”充电头的能力),都会统一按照5V去输出。
这下可好,前面已经商量好了5V,结果充电头给出去的真实电压直接就是20V(一般快充充电器所能达到的最高电圧),结果设备就会直接被击毁,甚至芯片都有可能燃烧。
2、面对傻白甜的快充设备
同样,在接通充电器后,充电器和受电设备会先沟通一个充电电压,例如是12V。这时,充电头里的恶意代码故技重施,让实际输出的电流仍然是最高的20V。
由于这里超出的电压并不像第一种情况那么悬殊,所以这里给芯片造成的损失是未知的。有很大可能被烧毁,也有一定可能可以扛一阵,但是芯片寿命会大大缩短。
“就像有的人挨一拳就倒了,有的人被打一个小时才倒,这个看体质。”TK笑。
手机的“遗照”
3、面对鸡贼的设备(快充不快充都包含)
不得不说,有一些硬件还是做了一些保护的。他们首先跟充电器协商一个充电电压,但是也会回过头来验证你有没有说谎。一旦判断不对劲,就马上断开连接。这时,这个充电头就被拉黑了,再也无法为设备充电了。
面对这种鸡贼的设备,研究员的反制招数就是:“天下武功,唯快不破。”
他们会提前判断这个设备多久会进行一次电压验证,只要抢在对方验证之前迅雷不及掩耳直接把高压电给安排上,就妥了。。。
研究员用这个套路,成功击毁了一部笔记本电脑。
就是这台电脑,为科研献出了生命,音容犹在。
后来 TK 他们在给笔记本电脑验尸的时候发现,被烧坏的不只是充电模块,连主板上的核心芯片都被烧毁了。
结论有二:
第一、高压电不长眼,电到哪块芯片连薛定谔都不知道。
第二、做个安全研究是真费钱啊,一个手机一个电脑地往里扔。
说到这,你是不是感觉这帮人有点疯狂博士的意思?
TK 告诉我,为了研究这个课题,他们还专门买了很多“护具”,就差给每个人都上个意外险了。
例如,他们一开始就买了一个准防弹级别的聚碳酸酯圆筒,把要攻击的设备放在里面,然后跑开十米远,躲在桌子后面按动“攻击按钮”。这感觉怎么看都有点像微缩版的核武器试爆。
后来研究员发现,好像也没危险到那个地步,于是渐渐胆大了起来。
一个有些惊险的事情也就此发生了。
有一次,他们用20V电压测试攻击了一个充电宝(充电宝作为受电设备),结果充电宝的灯一下子就灭了。这意味着芯片被烧毁了。大功告成,团队就去吃饭了。
没想到,隔了一会儿回来,有一位同学无意中想挪动一下那个充电宝,结果他的手“嗖”地一下就缩回来了,原来充电宝已经非常烫,连塑料外壳都软了。
这是我们完全没有料到的结果。一般的想法都是芯片烧毁后各个引脚之间就都断路了,但在真实的物理世界,高压电还可以让一些本来不连接的电路连通起来。
这个充电宝就是被电击连通了某条线路,导致内部电池的能量释放了出来。
TK 说。
从那以后,团队买了一只超大号的铁桶,一个人都能蹲进去的那种,凡是测试过的设备,不论什么结果,都先扔在里面,安全防火,人人有责。。。
就这样,团队陆陆续续从市面上几百款快充充电头、快充充电宝、车载快充充电器里买来了35个设备,实锤发现问题的就有18款,多于一半儿。当然因为这些充电器都是头部品牌,所以如果按照销量占比的话,会占到市面上绝大多数。
这里要提醒你注意,说到充电器生产商,它可能不仅生产充电器,它还有可能生产手机。所以,你正在使用的手机附赠的快充充电器也很可能是有问题的。
较真的浅友可能会问,那不还有17款做得很好么?它们为什么不受这个 BadPower 攻击的影响?
我就喜欢较真的你,因为我也是这么问 TK 的。
不过,结论有点荒诞,剩下的这些厂商,所选用的解决方案商在设计的时候没按照套路出牌,阴差阳错地关闭了调试端口,或者芯片由于一些无厘头的原因,被搞得无法执行攻击命令。就好像一个听力障碍者没办法感受到别人恶语相向那样。。。
总之,客观上的结果是,他们无法被 BadPower 攻击。
从攻击者的角度来看,这就好像一个开锁专家遇到了一个把铁门焊死的对手,再厉害的开锁专家也没办法徒手拆电焊,还是作罢。
不过,到目前为止,既有的信息其实已经暴露了非常大的攻击面。
注意,此时玄武实验室在实践上可以做到的最强攻击如下:选定一台目标手机,先远程入侵这部手机,再利用手机向快充充电器下发攻击代码,之后,这个充电器就能电毁它充电的几乎所有设备。
于是,2020年初,玄武实验室决定把这个问题的详情告知相关部门——CNVD(国家信息安全漏洞共享平台)。
CNVD 立刻把问题转达给所有相关的充电器生产厂家。
在预估大多数厂家都完成相关修复工作后,2020年7月,玄武实验室选择对外公布 BadPower 的消息,提醒电视机前的朋友们多多注意。(玄武并没有公开具体攻击技术,所以黑客无法根据现有信息进行攻击)
玄武实验室这帮技术宅本来准备拯救世界以后归隐山林,然而,后续的事情却并没完全向 TK 他们预计的那样发展。。。
有国外媒体报道 BadPower 时,还做了一个颇为夸张的宣传图,给你感受一下。
(四)不能做“无害假设”
一些头部的充电器厂家从 CNVD 得到了 BadPower 漏洞详情,第一时间就进行了修复。
他们的修复方法分为两类:
第一类,一些厂商对手机和充电器之间的通信做强验证,保证非法代码没办法进入充电器。
第二类,一些厂商干脆关闭充电器的升级端口,等研究明白再在下一代产品中改进。
“采用第一类修复更好一些,‘可编程’毕竟还是个趋势嘛,一堵了之不是长久之计。”TK说。
但是,除了屈指可数的头部厂商,剩下八成的厂商态度却不容乐观。
2020年9月,TK 他们假扮客户,肉身探访了一些充电芯片厂商,询问他们知不知道有个“很事儿”的团队研究出了快充充电器的漏洞。
得到的回答分三类:
1、这个团队估计是造假了,弄了个视频哗众取宠。
2、这可能是下游充电器生产厂商使用不当,跟我们芯片没关系。
3、知道这件事儿,但是没关系,你以为真的有人来攻击充电器吗?
其实我觉得,这里面除了第一种回答有点不厚道以外,另外两种态度并不算离谱。毕竟这年头做生意都不容易,芯片模组的利润薄,如果修改代码,还要额外的技术成本。
但是 TK 完全不这么认为:
工业控制设备,以前所有人都不相信它们还会感染病毒。可是2010年的时候人们发现了震网病毒,这个时候,美国已经利用震网病毒攻击伊朗核设施好几年了,这直接拖慢了伊朗的核计划。一个攻击,只要理论上存在可能,就会有人打它的主意。
攻击可能正在发生,唯一的问题就是你还不知道。
未来也许每个人都有快充充电器,那时候,对这些设备的攻击方法也许还会进步,造成大规模攻击的可能性完全存在。如果拖到那个时候整个行业再回过头来收拾摊子,那成本就非常大了。
震网病毒经过几层设备转跳进入相关设施。
伊朗时任总统内贾德视察核设施时,已经可以从对面的屏幕上看到红点,推测这是被病毒摧毁的离心机。
其实,TK 所说的逻辑,还有一个例证。
那就是他在2015年发现的 BadBarcode 漏洞,攻击扫码器可以盗刷支付金。当时绝大多数人还处在出门带钱包的现金社会,人们恐怕难以想到,仅仅几年后,扫码支付就会在中国爆炸式地普及,成为叔叔阿姨日常买菜的操作。
TK 告诉我,因为看到了问题,腾讯支付从2015年就开始注意扫码支付环节的漏洞,所有微信支付所采购的扫码器型号都要经过玄武实验室的检测才行。(下次出去吃饭你可以拿起饭店的扫码器研究一下,2019年以后微信支付采购的扫码器上会印有玄武实验室的认证 LOGO)
这些拯救世界的事儿,都让他颇为骄傲。虽然他没披斗篷,还穿着拖鞋。
TK 手上拿着的,就是他们最初用来探索充电原理的“秘密武器”。
(五)较真儿的人
说到玄武实验室的认证,TK 还给我讲了一个小故事。
当年发布 BadBarcode 漏洞之后,有一家扫码器厂商的 CEO(首席执行官)带着 COO(首席运营官)直接杀到了玄武的办公室,把 TK 吓一跳。
问清楚才知道,他们的扫码设备行业地位很高,而且很快就要买到海外,所以请这个漏洞的发现者玄武实验室对设备的安全性进行一个鉴定,这样挑剔的老外也就无话可说了。
玄武实验室欣然接受,这就是他们第一次为别人做认证。
结果,这家企业直接把玄武实验室的认证 LOGO 给挂到了官网首页上,还是挺拉风的。
而到了这一次,玄武实验室发公布了 BadPower 漏洞,又有好多人通过私下关系找到 TK 和实验室其他成员,询问他们到底测试了哪一款,买哪个牌子的充电器是安全的。
没办法,TK 他们又想到了做认证的方式。
此时此刻,他们就在给一些充电器做认证测试,估计过几天你就能买到修复了 BadPower 漏洞的充电器了。这里中哥本想把这些已经通过认证测试的充电器品牌公布出来,但是征求了厂家的意见,他们还是腼腆地表示:下次。
“测试认证会成为你们的商业模式吗?”我问 TK。
目前为止(2020年9月),所有的测试认证都是免费的,如果我们做得过来,会一直免费下去。现在看起来相关工作量还不算太大,没有影响到我们日常研究工作。
TK 笑。
讲真,玄武实验室在很多不理解他们的人眼里确实挺“较真儿”的。动不动就“鸡蛋里挑骨头”找到一个行业的设计类问题,搞一个大新闻,搅得这一行“鸡犬不宁”。
但从另一个角度讲,世界上又不能缺少这么“较真儿”的人。
一个普通的漏洞,就好比按照图纸施工的工人一不留神干错了;而设计类问题,是图纸从一开始就画错了,影响面是行业性的。
而画图纸的人,肯定是那一行顶尖的人物,显然他们犯错的概率会更小。但也正因为如此,这些设计类问题一旦发现就更加猝不及防。我们就是想做最先发现这些问题的人。越早发现,修复的成本就越小。
TK 如是自白。
这倒让我想起了一个故事。
19世纪英国霍乱纵横,原因就是废水污染饮用水。
伦敦排水系统设计师巴瑟杰在巨大的当局压力下,仍然坚持他庞大而前瞻的下水道改造计划。这些看不见的工程绵延六年才基本完工,耗资巨大,又几经修改。百年间它究竟从瘟疫中救起来多少人,成为了一个无法计算的数目。
多年后,人们回忆往事,都会想起这句话:下水道是一个城市的良心。
而在我看来,玄武实验室这些较真的人,大概也和巴瑟杰相似。我想起来 TK 曾用了很久的一个签名:尔曹身与名俱灭,不废江河万古流。
值得庆幸的是,人的功过,从来都是由后人评说。
最后附上玄武实验室 BadPower 完整的演示视频。
声明:文章仅代表原作者观点,不代表本站立场;如有侵权、违规,可直接反馈本站,我们将会作修改或删除处理。