Raspberry Pi 是否容易受到 SD 卡以外的注入?

信息安全 BIOS 树莓派
2021-08-19 18:52:13

我了解为给定的硬件/固件编写的代码可能会注入无法通过擦除硬盘删除的病毒。视频卡和 BIOS 是此类恶意软件可能存储的目标示例。

但是Raspberry Pi是否具有这种可能的漏洞?假设没有物理篡改,是否可以安全地假设更换 SD 卡时设备是干净的?

本身没有 BIOS,但我们确实支持引导裸机代码......

没有实时时钟。除了基础之外,几乎没有任何东西。另一方面,包括 GPU/视频功能。

所以这个问题出现在我的脑海中,我想知道是否有人有答案。

4个回答

我们使用的 BCM2835 应用处理器板载没有持久存储,因此您描述的那种攻击是不可能的。零级引导加载程序存储在芯片上真实的、诚实的 ROM 中,因此无法被覆盖。

原则上,您可以通过上传新的恶意固件来修改 SoC(片上系统)的固件(例如,最初告诉芯片读取 SD 卡以启动真实固件映像的简单引导加载程序)更换 SD 卡后。

但是,我不确定 Raspberry Pi 的 SoC 固件是否(容易)可修改。我相信它是工厂预编程的,可能不可重写;尽管老练的攻击者总是可以用恶意工厂编程的芯片替换芯片。

SOC 上有您无法触摸的固件。它是从工厂预编程的。是的,它需要启动,这就是为什么第一个分区必须是 FAT,因为这就是固件的设计方式。您只需要一个足够大的 FAT 分区来容纳某种类型的引导加载程序。

也来自http://elinux.org/RPi_Software

这些板不包括 NAND 或 NOR 存储 - 一切都在 SD 卡上,它有一个带有 GPU 固件和内核映像的 FAT32 分区,以及一个带有 rootfs 的 EXT2 分区。

我们目前没有使用引导加载程序——我们实际上是通过 GPU 引导的,它包含一个专有的 RISC 核心(古怪的架构)。GPU 安装 SD 卡,加载 GPU 固件并调出 display/video/3d,加载内核映像,重置 SD 卡主机并启动 ARM。您可以用引导加载程序映像替换内核映像,这样就可以正常工作。

暗示 SoC 中有一些简单的代码在启动时挂载 SD 卡并读取固件,原则上可以用恶意代码替换。虽然这可能需要用最初加载恶意代码的芯片工厂中创建的东西物理替换芯片。

我无法具体回答 Raspberry PI,但我会参考这篇文章据此,可以编写无法通过“典型”程序清除的恶意代码。

由于为这些项目做出贡献的程序员的努力,Rakshasa 在 230 种不同型号的主板上工作。

IIRC,Pi只有2个芯片;一个用于 CPU/内存/视频,一个用于 USB 和 LAN。如果这些都不支持写作,那么这几乎就结束了。

然而,值得指出的是,Pi 没有单一的硬件配置——不同的迭代使用了不同的供应商和型号的芯片。因此,理论上答案可能取决于您获得的修订版本。您必须检查特定芯片的数据表。

以下是此硬件的修订列表以及两个芯片的相关型号:

树莓派板