历史上的今天
返回首页

历史上的今天

今天是:2026年02月28日(星期六)

正在发生

2023年02月28日 | STM32安全固件更新的安全挑战

2023-02-28 来源:zhihu

固件更新是我们软件生命周期中必须面临的问题。软件生命周期中有多种原因让我们需要固件更新,而固件更新也会带来安全问题,如使用固件更新来攻击电子钱包。

STM32 已经提供了很多的安全技术来应对固件更新的安全挑战。在这里和大家一起探讨,如何利用 STM32 安全技术,软件以及硬件安全技术,进行安全的升级固件。

讲座内容既包括了固件更新的一般原理,以及安全固件更新的额外设计。


安全固件更新离不开安全启动。STM32 安全启动为 STM32 安全固件更新提供了安全的运行环境。


什么是安全固件更新?

固件更新是指部分或者完全替换设备上的软件的操作,包括添加新应用,修改已有功能,或者去修复软件里的问题。安全固件更新,则是以安全的方式去实施固件更新。安全,也就是是防止固件在更新实施过程中被修改,被假冒以及被窃取的威胁。安全的三要素是保密,完整,可用,需要在安全固件更新的准备以及实施过程得到保证。完整可靠属于我们谈到的安全属性里的完整属性。

- 保密

- 完整

- 可靠


新功能带来新弱点,为什么需要固件更新

“离开软件,芯片就是一堆沙子”( Silicon Without Software is Just Sand)。芯片确实是从沙子中来。芯片需要晶圆,晶圆就是纯化的硅,需要从沙子中提炼。但是芯片有了软件,就可以执行各种各样的输入输出与计算,如同黄金般的珍贵。这句话还可以加一句,“离开固件更新,芯片就在回归沙子的路上"。因为,如果没有固件更新,软件不再适合应用场景,或者停止工作,那么这个芯片也可以说重新变成了沙子。


固件更新很重要,可以从以下几个方面理解:

① 固件更新可以解决系统的功能缺陷或者安全漏洞。

软件总是人开发的,人总是不完美的。人类要想在软件中一个Bug 都没有,那几乎是不可能的事情。所以固件更新的一个最重要的用途,就是给开发人员一个修改的机会,在这个产品生命周期内修复系统缺陷。这些缺陷也可以包括安全弱点。

② 固件更新可以给系统提供新功能新价值。

我们的安卓手机,在硬件不变的情况下,新的功能可以通过安装新的App 获得。同样,对于MCU 来说,固件更新可以提供先前所没有的价值。

③ 固件更新可以帮助产品加快进入市场的进度。

完全可以先实现一个最小的完备系统,支持基础性功能,同时带有固件更新的能力。那么 ,产品就可以进入工厂进行制造,不需要等待所有功能完成。这样可以加快进入市场的进度。

④ 固件更新可以降低设备的维护成本

有了固件更新,可以要求所有的设备都运行在某一个版本或者该版本之上。那么,支持的版本个数就减少了 ,从而支持多个版本的成本就可以显著降低。


为什么需要安全固件更新?

固件更新作为一个系统的修改入口,是可以被恶意的攻击者利用。同时,对安全来说,新功能总会带来新弱点,固件更新的自身的功能设计也可能带来新的安全弱点。黑客可以有多中手段对固件更新进行攻击 。

① 攻击固件本身

黑客可以在更新的起点替换固件。如果固件来源不可靠,则固件轻则不能运行,重则运行起来破坏这个设备。同样如果这个固件是不完整的 ,被破坏了,则固件更新了,还能不能运行就是个问号 。如 果固件一部分被注入了恶意软件,则固件更新之后系统就有了后门 ,也就相当于家里进了小偷或者强盗。

② 攻击固件传输的过程

如果在固件传输过程中,没有做到保密,则固件可以被所有人获得。同样,固件在传输过程中也可能被人为修改。

③ 攻击固件烧写的过程

即使我们在固件传输过程采取了固件加密措施,如果设备在烧写固件时,不采取相应的安全防护 ,那么固件的内容还是通过固件更新的过程泄密了。

④ 攻击固件的存储位置

固件的 存储位置对固件更新的安全也有影响 。当然 ,即使没有固件更新,用户固件存储的位置也会对系统安全的作用也不可忽视。

a. 存储在MCU 内部

用户固件可以存储在MCU 内部。存储在MCU 内部,可以很方便的使用MCU 自带的硬件安全技术来保护固件。例如,使用STM32 的RDP 级别2 来防止外部攻击,保护固件的保密,以及固件的完整可靠性。

b. 使用外扩Flash

外扩Flash 会带来极高的风险。攻击者可以将Flash 吹掉,放在读写器上读出Flash 里的内容。同时,外扩Flash 的引脚,会暴露在攻击者的枪口之下,即使固件得到验证后,也不应该直接从外扩Flash 直接执行。攻击者完全可以欺骗安全启动,在执行的一刹那,将外扩Flash 换成不安全的内容(hot-swapping)。

- 攻击固件的版本

就像我们提到的,新的版本可以解决系统的bug。这些bug 可以包含系统可能被攻击者利用的安全弱点。理论上新的版本总是比旧的版本要安全。而攻击者则反其道而行之,他们可以利用旧的版本来替换新的版本,从而降低系统的安全性。

a. 旧的版本

攻击者可以故意利用旧版本来替换新版本。旧版本带有明显的安全漏洞,则攻击者会利用该漏洞作为入口对系统进行攻击。

b. 介于新旧之间的版本

对于离线设备,攻击者可以利用一个有弱点的中间版本,来攻击设备。该中间版本,比设备上的版本新;但是又不是厂 家的最新版本。在这种情况下,设备是很难分辨是否应该要升级。


推荐阅读

史海拾趣

General Electric Company公司的发展小趣事
详细查阅所选型号的数据手册,了解其主要特性、极限参数和使用注意事项。
科通(COMTEK)公司的发展小趣事

为了进一步扩大市场份额,科通技术积极实施国际化战略。公司在全球范围内设立了多个办事处和分公司,加强了与国际市场的联系和合作。同时,科通技术还积极参加国际电子展会和论坛等活动,展示公司的最新产品和技术成果,提升了公司的国际知名度和影响力。

FUJITSU(富士通)公司的发展小趣事

面对快速变化的电子行业市场,科通技术始终坚持以技术创新为驱动,不断推动公司的转型升级。公司加大在研发方面的投入,积极引进先进的技术和设备,提升产品的技术含量和附加值。同时,科通技术还不断拓展业务领域,从单一的元器件分销逐渐发展到提供全方位的技术整合方案和应用方案,为客户提供更加全面、专业的服务。

BOOKLY公司的发展小趣事

BOOKLY公司非常重视人才培养和团队建设。公司不仅为员工提供优厚的福利待遇和广阔的职业发展空间,还积极开展各种培训和学习活动,提升员工的专业技能和综合素质。同时,BOOKLY还注重团队文化建设,倡导团结协作、创新进取的精神。这些举措使得BOOKLY的团队凝聚力不断增强,为公司的发展提供了有力的人才保障。

Autonics公司的发展小趣事

上世纪60、70年代,韩国经济蓬勃发展,工业自动化需求迅速增长,但传感器与控制仪表的国内市场仍是一片空白。Autonics的创始人看到了这个巨大的市场机会,于1977年创立了Autonics公司。公司初创时期,面临着资金短缺、技术落后等诸多挑战,但创始人凭借着对技术的执着追求和对市场的敏锐洞察,带领公司逐步走上正轨。

Habia Cable公司的发展小趣事

Autonics始终将产品质量放在首位,建立了严格的质量管理体系。公司引进了先进的生产设备和检测设备,确保产品的生产和质量控制达到国际先进水平。同时,Autonics还积极申请并获得了多项国际产品质量认证,如ISO9001、UL、CE等,进一步提升了产品的竞争力和市场认可度。

问答坊 | AI 解惑

大家帮忙分析此看门狗的工作原理

对不起,附件搞错了,现修改过来了;感觉此电路的工作状况不太清晰 [ 本帖最后由 panhaojie123 于 2009-6-24 10:46 编辑 ]…

查看全部问答>

请问C#中如何识别当前PPC操作系统是WinMobile还是WinCE?

各位好,     请问C#中如何识别当前PPC操作系统是WinMobile还是WinCE?最好能把当前版本号读出来,有什么能用程序或类库么?…

查看全部问答>

怎让passthru接收所有包?

最近调试passthru的时候,发现所有收到的包都是跟本机相关的包,能不能让passthru像Sniffer一样收到所有包呢?…

查看全部问答>

招聘: 软件工程师 (Windows Mobile, WindowsCE, 嵌入式, C语言)

以下职位长期有效,请有意者将简历发至(不要贴附件,简历粘贴到邮件末): huawei.pda@gmail.com   另,本周六,日本公司将在成都进行现场招聘,有意者请提前联系我. 1.1 招聘职位:         驱动软件开发工 ...…

查看全部问答>

求助:怎样写硬件架构?

刚毕业到公司,老总就叫写个硬件架构,但我只听说过软件架构,硬件架构书一般由几部分组成呀?各位大哥帮帮忙呀.…

查看全部问答>

问一个弱弱的问题

用MAX232来做RS232接口,是不是必须用51单片机的RX,TX脚,用其他的可不可以?…

查看全部问答>

IC41C16256-25K功能测试仪

你好: 简单的操作即可判断芯片好坏! IC41C16256-25K功能测试仪,是CECCLab最新推出的专用芯片测试仪,具有操作简单、实用 性强,可信度高的特点。特别适合IC分销商,一次性投资可以降低你的测试成本。 产品型号:IC41C16256-25K测试仪(适 ...…

查看全部问答>

【原创】]讲一讲BIT__BAND

看见cm3的BIT_BAND很有意思,仔细琢磨了一下,和大家一起分享!首先追溯到51,51单片机RAM内从从20H往后到3FH是位访问区,每一个字节的每一个位也对应有从00h开始的的每一个字节的最后一位,例如20H.0对应00h,20H.1对应于01h,.....其中00h,0 ...…

查看全部问答>

梦之旅同学LM3S811系列学习笔记之GPIO

  5月18号收到的板子,一直以来没有时间弄,现在弄好了串口,LED灯和AD,接下来的1602和12864也弄好了,先上三期日记,希望各位能够顶下。今天匆忙完成的,比较简陋,大家别见笑。   拿到板子,首先看下芯片资源和引脚,如下 = ...…

查看全部问答>

发现Quantus 11.0一个bug

貌似不能执行TCL脚本…

查看全部问答>