近日,腾讯安全玄武实验室发布了一项命名为“BadPower”的重大安全问题研究报告。报告指出,市面上现行大量快充终端设备存在安全问题,攻击者可通过改写快充设备的固件控制充电行为,造成被充电设备元器件烧毁,甚至更严重的后果。保守估计,受“BadPower”影响的终端设备数量可能数以亿计。 这是继“BadBarcode”、“BadTunnel”、“应用克隆”、“残迹重用”、“BucketShock”等在业内引起广泛关注的安全问题之后,腾讯安全玄武实验室发布的又一影响深远的安全问题报告。
报告显示,腾讯玄武安全实验室对市面上35款支持快充技术的充电器、充电宝等产品进行了测试,发现其中18款存在安全问题。攻击者可利用特制设备或被入侵的手机、笔记本等数字终端来入侵快充设备的固件,控制充电行为,使其向受电设备提供过高的功率,从而导致受电设备的元器件击穿、烧毁,还可能进一步给受电设备所在物理环境造成安全风险。攻击方式包括物理接触和非物理接触,有相当一部分攻击可以通过远程方式完成。在玄武实验室发现的18款存在BadPower问题的设备里,有11款设备可以通过数码终端进行无物理接触的攻击。
(某受电设备遭BadPower攻击时芯片烧毁的情况)
这18款存在BadPower问题的设备涉及8个品牌、9个不同型号的快充芯片。玄武实验室表示,不同的快充协议本身没有安全性高低的差别,风险主要取决于是否允许通过USB口改写固件,以及是否对改写固件操作进行了安全校验等。玄武实验室也针对市面上的快充芯片进行了调研,发现至少近六成具备成品后通过USB口更新固件的功能。使用这些芯片制造产品时需要在设计和实现上充分考虑安全,否则就可能导致BadPower问题。
腾讯安全玄武实验室已于今年3月27日将“BadPower”问题上报给国家主管机构CNVD,同时也在积极地和相关厂商一起推动行业采取积极措施消除BadPower问题。小米和Anker是玄武实验室的紧密合作伙伴,对这次研究工作做出了贡献,在未来上市的快充产品中也会加入玄武安全检测环节。
玄武实验室表示,大部分BadPower问题可通过更新设备固件进行修复。未来,厂商在设计和制造快充产品时可通过提升固件更新的安全校验机制、对设备固件代码进行严格安全检查、防止常见软件漏洞等措施来防止BadPower发生。同时,玄武实验室也建议相关部门将安全校验的技术要求纳入快速充电技术国家标准。
“BadPower不是传统安全问题,不会导致数据隐私泄露,但会给用户造成实实在在的财产损失,甚至更糟糕的情况。BadPower再次提醒我们,随着信息技术的发展,数字世界和物理世界之间的界限正变得越来越模糊。之前我们知道工业控制系统、车联网系统的安全可能会影响物理世界,但这些似乎距离大多数人比较遥远,而BadPower让我们意识到即使这种家家都有的不起眼的小东西也可能打破数字世界和物理世界之间的结界。“ 腾讯安全玄武实验室负责人于旸说到,“要实现万物互联,就需要考虑万物安全。BadPower是设计过程引入的问题,我们这些年一直在呼吁安全前置,要从生产阶段前置到设计阶段,玄武实验室一直在积极研究设计过程中引入的安全问题。这类问题数量不多,但一旦发生就会影响整个行业。”
随着数字化纵深发展,产业全面上云,未来的数字生产生活面临的安全问题将会指数级增加。腾讯安全联合实验室也在进行终端安全、工业互联网、IoT、5G安全、车联网安全等各个细分领域的前瞻性安全研究,为数字经济和数字生活保驾护航。
发布于 07-16
那么,究竟有没有问题呢?
知乎用户李橙认为:
链接:https://www.zhihu.com/question/407265524/answer/1343052434
@腾讯安全联合实验室 的一篇“BadPower”报告,一石激起了千层浪,不仅有质疑声,还有的演变成了对某些品牌的营销或者攻击,纷纷偏离讨论问题的主航道,确实有点问题。
说起充电器,本质上没多大技术含量。那么我们就从最没技术含量的「傻瓜充电器」说起。
何为充电?其实就是给被充电设备一个输出一个电压和电流。如果说一个充电器,只能输出一个恒定的电压和电流,这样的充电器就是「傻瓜充电器」,电路实现也极其的简单。
如果这台充电器,能够感知到被充设备电池的蓄电情况,能够感知到电池内阻的变化,能够调整输出电流,并且在充满之后自动停止充电。那么,这样的充电器就可以说「智能充电器」了。当然,二十多年前的手机充电器,就都是智能充电器。这时候,电路实现就比较复杂了。
如果更进一步,充电器和被充设备之间有「对话」,彼此告知我能提供什么样的电压电流组合,我能接受什么样的电压电流组合,双方「商定」用什么样的电压电流组合。其实,这就是最近几年大家都熟悉的充电协议,并且在手机产品中已经有了普遍性的运用,就把这类充电器称为「智慧充电器」吧(不仅仅是充电头,也包括充电宝,下文不再指出)。
那么,这类智慧充电器,目前主流的是怎么实现的呢?
我们知道,很多厂商都有自己的快充协议,有OPPO的VOOC,华为的SC,小米的CT,vivo的FC;处理器厂家也有自己的快充协议,高通有QC,联发科有PE;还有USB的通用协议PD。其实各个门派是非常复杂的,而且自身的协议也都在不断的迭代。
此外,还有一些更加复杂的充电器:它同时兼容以上多种协议。
那么,它们的充电器是怎么实现的呢?其实现在看,是普遍使用了单片机。
其实很多年前,一些高端的电池充电器,就是使用单片机来控制的。
何为单片机?
简单的说就是一个简单的计算机系统,有自己的CPU,有RAM和ROM,并且运行编写的程序。只是你拆解的时候往往看不到单个的CPU、RAM、ROM,基本都集成在一块芯片上了,都SoC化了。甚至行业普遍性的把这个单片机单元(有的也称MCU单元)也同样集成到一个功能更强大的芯片里面去。
看到一些网友在质疑对充电头固件重写的可能性,认为这么简单的一个充电头,怎么难道还能给它写程序运行?其实是可以的,因为里面用到了单片机,其实就是一个超小型的计算机系统。
而且一般的单片机IC都有自己的USB接口,就是用来编写程序和调试的,而恰好充电头都有自己的USB接口,这样就导致了不少厂家直接把充电USB接口和调试接口二合一了!并且还不涉密!这就是问题所在。
腾讯联合安全实验室就是这么说的:
不同的快充协议本身没有安全性高低的差别,风险主要取决于是否允许通过USB口改写固件,以及是否对改写固件操作进行了安全校验等。
如果采用的是单片机方案(大部分都是),如果供电和调试端口二合一(很多都是),并且还不加密(看来很多也是),这就为腾讯联安实验室说的BadPower事件成为了可能。
关于具体如何实现的问题,其实腾讯说的很隐晦,毕竟现在看这是一个比较普遍存在的安全漏洞,过多的细说具体实现方案,毕竟世界这么大,不能保证没有这种想做坏事好奇心的人。
也可以看出,联安实验室是非常的谨慎的,其实他们早就发现了这里边的问题,并且早在3月27日就上报给国家主管机构了。显然,也早就通知了这些充电产品的厂商。鉴于腾讯联安实验室已经公布了这一安全漏洞,势必也和厂家一起做好了防御,所以我也不妨对具体实现方式(猜测和推到)具体说一说。(如有不合适,请联系我删除。)
其实,就具体实现方面,可以通过专用的设备,包括PC等,连接充电器,对充电器进行编程刷固件。比如联安实验室说的“等一会电压从5V增加到20V”(一般支持PD协议的就能提供20V的输出),都是可以通过对单片机的再编程实现。
很多人在质疑说,手机基本都会有过载保护电路的呀,你这个20V是伤不到手机的!
但是,手机的充电头永远只给手机充电吗?比如充电宝、手环、摄像头等多种设备充电或者供电,这些设备都能承受得了20V的冲击吗?
甚至说,目前已经有手机厂商发布了120W级别的快充,能保证所有的USB充电、供电的设备,都可以抵御的了120W的冲击吗?即便设备承受的了的话,你手里的充电线能够承受得了吗?
我前几天就有某品牌线(注意,是品牌线,不是山寨线,品牌就不说了),用的是手机原装充电器,快充的时候直接把线的C口和手机充电口给“烧”了!(确切的说是冒烟、产生焦味、触片处的塑料热熔,但并未见到火花。)
除了直接用PC等设备连接充电头的方式,也可以在手机中植入程序(可以是手机的升级包,也可以自己特意编写一个,还可以是病毒……),在充电的时候,对充电头的单片机进行编程、刷固件。
本质上,这个问题可以通过手机厂商的升级固件来解决,可以对充电头单片机的编程设定权限或者添加秘钥。
我作为电池老李,其实类似的手机充电安全漏洞也玩过,就是「快充诱骗」。
这个怎么说呢?
比如某某手机不支持快充,或者还是嫌快充的功率不够强悍,那么可以通过在充电头和手机之间,加入一个设备,原本充电头和手机之间的「对话」被这个设备截获,这个设备对充电头说:我可以接收你最大的输出功率,而充电头还以为是手机跟它说的。然后充电头给手机一个比参数要大得多的充电功率。
问题是,不少手机还完全接受这个功率!神奇吧?
但建议大家千万不要尝试,因为一般手机厂商给不接受大功率充电的手机(往往是中低端产品)所配备的电池,都不是高价的真正能够快充的电池,而是性能都很一般的要便宜得多的电池。
这类电池用过高的功率充电,除了明显更加剧烈的发热,也会大大影响使用寿命,甚至有燃爆的风险。
其实对于这类快充诱骗,手机厂家也要做好防御,真正把快充协议做精了,而不是一味的把本不是很难的技术吹得多么牛X。
甚至,如果把充电器和诱骗器合并,组成一个山寨的「Bad快充头」,就可以给不支持快充的手机进行快充,是不是又能把自己宣传成黑科技了
这个腾讯联合安全实验室,从往期揭露的各个问题来看,确实是有几把刷子的,这个必须值得肯定。
但作为手机厂家来说,或者说作为各家的粉丝来说,这个时候真没必要去攻击其他品牌,毕竟联安实验室都没有爆品牌,从出现问题的比例来看,可能真的是普遍存在的。所以,话不要说的太满。
充电器的话,哪怕手机厂家自己吹得多牛叉,其实哪怕是小尺寸的65W充电头,早就多年之前就有大量的第三方公司可以提供方案了,真的没啥,ODM都能做。
对于手机厂家来说,不少型号直接可以诱骗快充,真的太不应该了,因为你不能完全保证充电器端,毕竟用户可能用任何型号的充电器给你充电,甚至不少还是山寨充电器,但你必须要保证手机端的安全啊!
再对其他答友说到的小米65W氮化镓充电头、华为快充电头的情况进行说明。
小米65W氮化镓充电头,一度下架,坊间传闻存在安全问题。
其实现在任何一家主流手机厂家的充电头,网络上都有拆解帖,其中任何一块芯片都是可以看到的。
李橙引用充电头网的拆解图片:
内部使用了赛普拉斯的CYPD3174这枚芯片。
官网对这枚芯片的详解是:
看红框里:集成32位MCU子系统,拥有ARM的CPU核心,有64K的闪存、8K的运存。其实这就是一个单片机。
再看看华为现在已经铺开了的40W快充头,图片同样来自充电头网。
使用的是一枚台湾立锜的芯片,官网的技术详解有:
同样重点关注红框里面,芯片同样集成MCU、ROM(其中OPT-ROM可以一次编程,Mask-ROM不可编程)和RAM,也是一个单片机系统。
其实不仅仅是华为和小米的快充电头使用了单片机来控制,实际上是目前整个行业基本都是用单片机来控制,其他手机品牌、副厂充电头,都是一样的,大家都可以去看拆解帖。我也不是特别针对谁。这事,大家千万不要去站队,说谁有问题、谁没问题,其实这是个行业性的问题。
其实正如腾讯联安实验室说的那样,关键在于充电头是否能够刷固件,而不在于有没有使用可写的芯片,其实开了的口子,也是可以通过后续升级固件去封堵。
作为关注二次电池和充电器十多年的我,确实觉得现在的部分手机厂商在快充方面太过于浮躁了。
这次,我真的站腾讯联安实验室。
来源:腾讯安全玄武实验室,知乎用户李橙