第一章:安全威胁分析——嵌入式设备面临的安全风险、常见攻击面分析、安全加固的必要性
大家好,我是老李。做嵌入式安全有些年头了。今天咱们聊聊一个很现实的问题:你的嵌入式设备,到底有多不安全?
很多人觉得,嵌入式设备嘛,功能单一,跑在封闭环境里,谁会来攻击?我刚开始做这行时也这么想。直到有一次,我负责的一个智能网关产品,被客户反馈说设备异常重启,日志里全是乱码。一查才知道,有人通过未关闭的调试串口,直接拿到了 root 权限。嗯,从那以后,我再也不敢小看任何攻击面了。
1.1 嵌入式设备面临的安全风险
嵌入式设备不是 PC,也不是服务器。它的安全风险,说白了,是「先天不足」加上「后天忽视」。
我总结了几类最常见的风险,你对照看看自己的项目,中了几条?
- 物理接触风险:设备就在用户手里。拆壳、接串口、读 Flash,都是常规操作。我在项目中遇到过,有人直接用编程器把整个 Flash 镜像读出来,然后反编译固件找密码。
- 资源受限:CPU 跑不了复杂加密算法,内存小得可怜。想上 HTTPS?算了吧,跑个 TLS 握手都能把 CPU 占满。这就导致很多设备干脆裸奔。
- 更新困难:设备部署后,可能几年都不更新一次。漏洞发现了也没法修。我记得有个客户,设备卖出去三年了,连个 OTA 功能都没做。出了安全问题只能召回,成本高得吓人。
- 供应链复杂:芯片、模组、第三方库、操作系统,每一环都可能被植入后门。你想想看,你用的那个开源库,你真的审计过它的代码吗?
核心观点:嵌入式安全不是「要不要做」的问题,而是「什么时候做、做到什么程度」的问题。等到出事再补,代价往往是十倍百倍。
1.2 常见攻击面分析
攻击面,就是攻击者能接触到的地方。嵌入式设备的攻击面,比你想的要多得多。我习惯把它们分成硬件、软件、通信、人四个维度。
1.2.1 硬件攻击面
这是嵌入式设备独有的。PC 你还能锁在机房里,嵌入式设备就在用户眼皮底下。
- 调试接口(JTAG/SWD):很多产品出厂后还留着调试接口。我曾经用一块几十块钱的调试器,直接连上某款路由器,读出了整个 Flash 内容。密码、密钥、固件,一览无余。
- 串口(UART):更常见。很多开发板默认开了串口登录,而且用的是 root 账号,密码都不设。你想想看,这跟把家门钥匙挂在门上有什么区别?
- 存储芯片:SPI Flash、eMMC,直接焊下来用编程器读。如果固件没加密,那就是裸奔。
- 侧信道攻击:通过功耗、电磁辐射分析,窃取密钥。这个门槛高一些,但专业团队完全做得到。
警告:不要以为物理安全不重要。很多攻击都是从物理接触开始的。我建议,所有量产产品都必须禁用调试接口,或者至少加上物理熔丝保护。
1.2.2 软件攻击面
软件层面的攻击,是大家最熟悉的,但也是最容易出问题的。
- 缓冲区溢出:老生常谈,但依然普遍。C 语言的内存操作,稍不留神就出问题。我在项目中遇到过,一个 sprintf 格式化字符串没控制长度,直接导致远程代码执行。
- 命令注入:Web 管理界面、AT 指令、Shell 调用,都是重灾区。用户输入没过滤,攻击者就能执行任意命令。
- 固件逆向:固件没加密、没签名,攻击者拿到后反编译,找漏洞、找硬编码密码。我见过太多设备,密码直接写在代码里,还是明文。
- 不安全的默认配置:出厂时开了 Telnet、用了弱密码、开放了所有端口。用户拿到手,直接暴露在公网上。
1.2.3 通信攻击面
设备要联网,通信过程就是攻击者的机会。
- 明文传输:HTTP、FTP、MQTT over TCP,数据在网络上裸奔。抓包就能看到用户名、密码、传感器数据。
- 中间人攻击:没有证书校验,或者证书校验不严格。攻击者伪造服务器,设备就乖乖把数据交出去了。
- 重放攻击:指令被截获后,重新发送一遍。比如智能锁的开锁指令,被重放一次,门就开了。
- 协议漏洞:CoAP、BLE、ZigBee 等协议本身也有安全问题。我记得有个项目用了某个轻量级协议,结果发现它的加密实现有 bug,密钥空间只有 16 位。
1.2.4 人为攻击面
这个最容易被忽略。人,往往是安全链条中最薄弱的一环。
- 社会工程学:攻击者冒充技术支持,骗取管理员密码。
- 内部威胁:离职员工、不满的员工,可能留下后门。
- 供应链攻击:第三方供应商提供的代码或组件,可能已经被植入恶意逻辑。
1.3 安全加固的必要性
说了这么多风险,你可能会问:真的有必要花这么多精力做安全吗?我的回答是:看场景。
如果你做的是智能灯泡,被黑了顶多关不了灯。但如果你做的是医疗设备、工业控制器、汽车 ECU,那安全就是生命线。我参与过一个工业网关项目,设备被植入挖矿程序,CPU 跑满 100%,导致产线停机。那一天的损失,够买几百台设备了。
安全加固的必要性,我总结为三点:
- 保护用户隐私和数据:设备采集的数据,可能是用户的家庭影像、健康数据、位置信息。泄露了,法律责任跑不掉。
- 防止设备被滥用:被植入僵尸网络、挖矿程序、勒索软件。设备成了攻击者的跳板,你的品牌信誉就毁了。
- 满足合规要求:GDPR、CCPA、等保 2.0、IEC 62443,越来越多的法规要求设备必须具备基本的安全能力。不合规,产品就进不了市场。
我的建议:安全加固不是一锤子买卖。它应该贯穿产品的整个生命周期:设计阶段考虑威胁模型,开发阶段做安全编码,测试阶段做渗透测试,运维阶段做漏洞管理。Buildroot 构建方案,就是帮你从系统层面打好安全地基。
好了,第一章就聊到这里。安全威胁分析是基础,只有知道敌人从哪里来,才能知道怎么防。下一章,我会带你看看 Buildroot 到底能帮我们做哪些安全加固。咱们到时候见。