随着新太空时代的到来,卫星的部署数量呈爆炸式增长。尽管卫星安全至关重要,但是关于星载固件安全的研究却很少。本文提供了针对卫星固件的威胁分类,并对三个现实中的卫星固件映像进行安全分析,并在固件映像中发现了几个关键漏洞。评估结果表明,现代的在轨卫星存在着不同的软件安全漏洞,且缺乏适当的访问保护机制。
0x01 简介
卫星是复杂的技术设备,放置在外太空用于研究目的或为地面应用提供服务,覆盖范围为地球表面。虽然第一颗卫星 Sputnik 的历史可以追溯到1957年,但人类正处于被称为“新太空时代”的航天复兴之中,特别是近年来地球轨道卫星数量的巨大增长。根据联合国外层空间事务办公室(UNOOSA)的数据,其数量几乎翻了一番,从2019年的4,867个增加到2022年的9,350个。这些卫星中的绝大多数形成了像
Starlink 这样的人造巨型星座,预计在未来几年将发射超过40,000颗卫星。
小型卫星是新太空时代的核心,商用现成品或技术(COTS, Commercial off-the-shelf)组件使得它们甚至对于小型机构来说也负担得起。此外,它们涵盖了广泛的领域,从商业应用(如地球观测、机对机通信和互联网服务)到研究应用,例如技术测试、天气和地震预报,甚至星际任务。
尽管小型卫星的应用差异很大,但它们通常由无线电设备和微控制器板组成。从最广泛的意义上来说,它们是连接到地球地面站的计算机系统,有时甚至连接到其他卫星。由于它们依靠无线连接进行命令和控制,并使用微控制器,因此它们可能与地球上任何其他互联IT 平台一样容易受到攻击。
在过去,这个问题并不是很重要,因为接入地面站的费用昂贵,且仅限于大型卫星运营商。然而,近年来情况发生了根本性变化。如今,地面站甚至对个人来说也可以负担得起,并且随着地面站即服务(GSaaS,Ground Station as a Service)模型的出现,例如由Amazon Web Services和Microsoft Azure提供的模型,这使得行业准入门槛变得更低。过去在移动网络安全领域,供应商综述认为相关攻击成本太高且攻击者无法触及设备,但这个假设已被证明是错误的。同样,经济实惠的地面站创造了一个新颖的攻击面,攻击者可以在其中与卫星通信并利用软件漏洞。如果成功破坏了卫星的固件,那就可以访问卫星并有可能完全控制系统。
虽然缺乏卫星安全标准和复杂的供应链使情况变得复杂,但主要原因是卫星固件的不可访问性。从历史上看,卫星开发商一直通过隐匿来实现安全,即所谓的隐蔽式安全性(security by obscurity)。铱星网络的开发人员甚至提到他们的系统对于攻击者来说过于复杂。由于固件的不可访问性,围绕单个卫星的讨论通常缺乏卫星和现实世界基础的技术细节。
0x02 背景知识
人造卫星是放置在外太空并绕另一个天体(例如地球)运行的物体。卫星设计用于在恶劣的太空条件下运行,其中包括每天发生十多次的约200°C的极端温度变化、接近真空和宇宙辐射。然而,为了向地球提供源自太空的服务,通常需要将它们部署到太空中。常见的卫星应用包括通信、地球观测和科学研究。虽然大多数卫星部署在低地球轨道(250-2000公里),但根据卫星的用途,可能需要选择其他轨道,例如地球静止轨道(GEO)(距离地球约35,786公里)。
A. 卫星运维
如下图所示,卫星的运维围绕三个主要组成部分展开:地面部分(运营基于卫星的服务)、太空部分(由所有太空资产组成)以及用户部分(接收全球定位系统等卫星服务) (GPS) 或通信。
(1)地面部分
地面部分是卫星整个生命周期中的运行中心。运营商团队使用地面站 (GS,Ground Station) 与卫星进行通信,向卫星发送新的指令,称为远程命令(TC,Telecommand)。反过来,卫星将遥测数据 (TM,Telemetry) 发送回地面站,提供有关卫星状态、错误和其他指标的信息。远程命令和遥测数据的组合被称为TC/TM流量,使用太空协议进行传输。
(2)太空部分
太空部分包括所有参与卫星运行的航天器,可能是单个卫星或整个卫星星座。这些卫星最初通过运载火箭(例如火箭)被发射到轨道上,然后经历轨道部署阶段,以启动与地面部分的通信。在常规服务操作的标称运行阶段,卫星可以通过卫星间链路 (ISL, Inter-Satellite Link) 相互通信。
(3)用户部分
用户部分中的终端设备,例如甚小孔径终端 (VSAT,Very Small Aperture Terminal) 或 GPS 接收器,可以接收太空部分提供的服务。需要注意的是,某些卫星(例如地球观测卫星)只与其地面部分通信,不包括用户部分。
B. 卫星架构
上图展示了现代卫星中常见的组件,这些组件可以分为卫星有效载荷和卫星总线。卫星有效载荷由任务特定的设备组成,例如用于地球观测的高分辨率相机或用于电信通信的强大无线电硬件。卫星总线包含了运行和维护卫星所需的所有组件。它被设计为独立于有效载荷的运行,但相反,有效载荷依赖于总线的功能。这种分离被称为总线有效载荷分离。在安全分析中,我们特别关注卫星总线,因为与许多有效载荷不同,它使攻击者能够完全控制卫星。
(1)命令和数据处理系统
总线以命令和数据处理系统(CDHS,Command and Data Handling System)为中心,负责管理卫星并控制航天器的所有功能。CDHS 使用星载控制器 (OBC,On-Board Controller),该控制器采用计算平台,即微控制器和存储器,类似于地面嵌入式设备。在该系统上执行的软件称为星载软件(OBSW,On-Board Software),这是研究的主要重点。它实现远程控制服务器,通常基于实时操作系统(RTOS, Real-Time Operating System),类似于地面实时应用程序。OBSW的主要任务是处理TC/TM流量、提供数据存储、调度命令、执行自主操作以及更新程序代码。至关重要的是,与任何软件一样,OBSW很容易受到常见软件故障的影响,攻击者可能会利用这些故障来获得对 CDHS 的未经授权的控制。
(2)通讯模块
卫星与地面站的通信由通信模块 (COM,Communications Module) 处理,该模块由天线和无线电设备组成,有时还包括用于处理解码、协议实现和访问投影的计算设备。此外,通信模块通常专门用于处理 TC/TM流量,而高带宽流量(例如有效负载数据下行链路)通常由更强大的无线电设备处理。由于通信模块直接与命令和数据处理系统耦合以处理 TC/TM流量,因此它也是攻击者主要的入口点,从而产生了重要的攻击面。此外,通信模块中的协议实现可能与安全性相关,因为它可能是第一道防线。
(3)姿态确定和控制系统
卫星使用姿态确定和控制系统(ADCS,Attitude Determination and Control System)来确定和调整它们的姿态,以便将天线指向地球,将太阳能电池板指向太阳。此外,ADCS还执行自主翻转,以防止卫星在从运载火箭释放后旋转,这对建立初始通信链路至关重要。此外,卫星还可以使用推进器来实现姿态和轨道控制系统(AOCS,Attitude and Orbit Control System),用于进行微小的轨道变化,这尤其重要。AOCS使卫星成为网络物理系统,因为它们可以通过与其他物体碰撞来影响其物理环境,从而导致毁灭性的轨道级联反应。
(4)电力系统
电力系统(EPS,Electrical Power System)是卫星的电源,通常由太阳能电池板产生并存储在电池中,以在没有光照的情况下(例如绕地球飞行时)提供电力。此外,保持电池永不完全耗尽也至关重要,因为一旦电池耗尽,卫星将无法重新启动。因此,电源管理对于卫星的生存能力至关重要,因为攻击者可能会利用电池的深度耗尽来永久禁用卫星。
(5) 有效载荷
虽然有效载荷主要部署任务特定的设备,但通常还会部署类似于CDHS的有效载荷数据处理系统(PDHS,Payload Data Handling System)。PDHS可以接收来自有效载荷通信模块(PLCOM,Payload Communication Module,可以是有效载荷上的任何接收器)的控制流量,并处理来自有效载荷设备的一般数据处理任务。由于有效载荷的高度定制化,PDHS和PLCOM的确切术语可能在其他卫星描述中有所不同。
C. 卫星通信协议
卫星的TC/TM流量通过卫星通信协议进行通信,被称为太空协议(Space Protocal)。空间数据系统咨询委员会(CCSDS)是发布此类太空协议的主要组织,由许多航天机构共同制定标准。CCSDS提供了丰富的协议标准,用于与卫星运行中涉及的所有组件和各方进行通信。这些标准覆盖了OSI模型的所有层,并且每个层通常有多个选项。本文提到的协议包括用于数据链路层的空间数据链路安全(SDLS,Space Data Link Security),它还实现了安全扩展,以及用于网络层的空间数据包协议(SPP,Space Packet Protocol)。需要注意的是,CCSDS协议集合更像是互联网上常用的各种网络协议的集合,而不是特定协议的集合。
0x03 卫星固件威胁
A. 威胁分类
针对卫星的固件的威胁如上图所示,可以分为三个层次。最高层是控制层,也是攻击者的最终目标。为了实现这些目标,攻击者必须攻击组件层中的某个卫星组件。为了与组件进行通信,攻击者必须首先访问接口层上的一个接口,并控制组件与外部参与者(如地面站)之间的交互。
图中使用实线来描述这些元素的层次结构(例如,总线是卫星的一部分,CDHS 是总线的一部分),并使用一组点线箭头来描述攻击路径(例如,攻击者必须先访问通信模块,然后才能在命令和数据处理系统中发出远程命令)。
(1)控制层
如果攻击者要实现最终目标,那么他们需要实现中间目标,并区分两个目标组件:总线和有效载荷。总线控制着有效载荷,从而允许攻击者通过控制总线来实现对有效载荷的目标,但反过来则不成立。这种总线和有效载荷的分离在卫星中非常常见,出于安全考虑,以防止有效载荷设备故障的传播。接下来,将详细说明攻击者的目标以及他们如何与总线-有效载荷分离相关。
拒绝服务/控制:拒绝服务(DoS)是当前卫星面临的最常见攻击方式,威胁着卫星的可用性。这可以通过攻击总线和有效载荷上部署卫星服务的设备来实现。然而,拒绝控制只能通过攻击总线来实现。
恶意数据交互:攻击者可能希望提取或操纵针对总线或有效载荷的卫星数据。控制数据交互涉及对关键飞行数据和总线上的访问进行保护,攻击者需要通过攻击总线来实现。另一方面,攻击者可以从有效载荷访问有效载荷数据,例如来自摄像机或其他有效载荷实验的数据。
夺取控制权:最终,攻击者可能想完全控制卫星。通常,总线提供的远程命令(TC)不足以执行任意操作,而是提供一组预定义的交互。因此,攻击者需要找到漏洞来允许在总线上执行任意代码。
失去对卫星的控制权不仅会给卫星所有者带来问题,还可能对整个太空生态系统造成毁灭性的后果。如果卫星配备了推进器,攻击者可能会试图引发凯斯勒效应(Kessler Syndrome)或碰撞级联效应。凯斯勒效应是指一颗坠毁的卫星产生的碎片与其他卫星相撞,摧毁它们并释放出新的碎片,从而导致连锁反应。这些碎片可能会在太空中形成密集的碎片场,使得太空几十年都无法安全进入。然而,业界往往忽视一次成功的卫星黑客攻击可能带来的这些潜在后果,尽管它们可能对太空飞行造成严重影响。
(2)组件层
组件层由相关的通用卫星组件、总线有效负载链路和不可信数据处理系统(UDHS,Untrusted Data Handling System)组成。实际上,这些组件可以是单独的硬件组件,也可以组合在单个固件映像中。根据安全三要素对威胁进行分类:完整性、可用性和机密性。此外,将稳定性视为完整性的一个子类别,用于描述卫星中设计存在的威胁。
a. COM/PLCCOM
COM通过远程通道(例如无线电)接收传入的远程命令(TC),而PLCOM接收有效载荷数据或用于有效载荷的远程命令。由于我们只考虑针对卫星固件的攻击,因此将针对COM和PLCOM的威胁总结为绕过访问控制。这包括一般的射频威胁(例如中间人攻击)和加密威胁(例如时序侧信道攻击),此外,还包括针对微码解调或解码远程命令的威胁。
b. CDHS
CDHS通过执行卫星固件中的相关功能来处理传入的远程命令,这些固件在卫星上直接或预定地执行操作。它存在以下威胁:
-
完整性:脆弱性远程命令(vulnerable TC)可能导致攻击者访问私有数据、劫持控制流或泄露信息。这还包括在处理TC时发生的各种内存损坏漏洞,例如缓冲区溢出、格式字符串漏洞或使用已释放内存的漏洞。
-
稳定性:一些危险远程命令(dangerous TC)可以使攻击者仅通过发布相应的TC就能够接管卫星的访问控制、固件更新机制、控制流或关键数据。这类TC的存在通常是为了调试目的。不应该实现提供任意内存写入功能的工具(例如,用于调试目的),也不应该实现可以任意更改访问控制密钥的TC。对固件映像的访问应该需要额外的验证层(例如,签名映像),这样的做法通常是可取的,被称为纵深防御。
-
可用性:对远程命令的处理必须始终可用,以执行诸如航向修正等时间敏感的操作。将所有针对CDHS可用性的威胁总结为TC抑制(TC suppression),因为它们会抑制卫星处理TC的能力。
-
保密性:远程命令可能会导致卫星向攻击者泄露秘密信息,例如与访问控制相关的秘密。如果这种泄露允许攻击者提升其访问权限,就可能危及整个卫星的安全。将控制数据泄露总结为对CDHS机密性的威胁。
c. 总线有效负载链路
总线-有效负载链路提供了有效负载与总线之间的桥梁,使得有效载荷可以与总线进行交互。这是必要的,因为有效载荷可能需要访问总线的监视和控制功能来控制有效载荷的操作。这些功能根据任务和有效载荷的不同而有所不同,但可能包括切换有效载荷组件电源的选项。链路存在以下威胁:
-
完整性:链路不部署自己的TC,而是通过TC接口使用CDHS的TC。这些类似 API 的接口被归类为脆弱性TC接口(vulnerable TC interface)。
-
稳定性:关键远程命令(Critical TC)接口可能会故意向可能已受到攻击的有效载荷提供过于宽松的命令功能,从而对总线造成破坏。关键TC可能包括无限制的电源管理或调整卫星的姿态,使无线电通信无法进行。有效载荷发出的命令应该仅影响有效载荷设备,并且必须能够在总线的任何点上进行逆转。关键TC与危险TC之间的区别在于,关键TC提供了仅限于总线的特定功能,而危险TC要么根本不存在(即使在总线上),要么需要额外的身份验证/验证。
-
可用性:如果存在多个 PDHS 或 UDHS,则它们中的任何一个都不能拒绝其他链路的可用性。因此,将链路抑制(link suppression)视为对连接的有效负载组件之间的链路的威胁。
-
机密性:如果有效负载组件可以提取专用于其他有效负载组件的信息,则链路就会受到损害。将这些归类为有效负载数据泄漏(payload data leak)。
d. PDHS
PDHS是有效载荷的数据处理系统,根据任务的不同,它扮演着有效载荷命令系统的角色,并处理来自PLCOM的数据包。因此,PDHS直接控制有效载荷的功能,或参与处理来自用户部分的不受信任数据。一般而言,由于PDHS可以执行各种计算任务,特别是在处理来自不受信任的有效载荷用户流量时,威胁场景会涉及常见的系统安全威胁:
-
完整性:将所有类似于脆弱性远程命令的经典软件漏洞归类为脆弱性数据处理(vulnerable data processing)。
-
稳定性:只有当 PDHS 处理类似于 CDHS 的有效负载命令流量时才会存在问题。这种情况称为危险有效负载命令(dangerous payload command),类似于危险远程命令。
-
可用性:如果PDHS无法处理传入数据包,其可用性就会受到威胁,导致有效载荷服务被拒绝。因此,将其称为有效载荷服务拒绝(payload service denial)。
-
机密性:将泄露一般性的服务信息视为对PDHS机密性的威胁。
e. UDHS
UDHS直接在卫星上运行不受信任的有效载荷用户代码。由于这些代码不受信任,因此必须将其与PDHS上的常规有效载荷操作隔离开来。虽然DHS组件不是通用卫星架构的一部分,但随着租赁卫星功能的增加以及构建轨道云计算服务的兴起,将其纳入卫星架构中变得越来越重要。
PDHS和UDHS之间有着特殊的关系。首先,UDHS可以是PDHS的一部分,其中PDHS运行一个操作系统,其中包含一个隔离的进程来运行不受信任的代码,同时还处理有效载荷数据。其次,PDHS可以是UDHS的一部分,即UDHS部署一个(不受信任的)应用程序来处理来自接收组件的数据。从攻击者的角度来看,UDHS中部署的解析应用程序充当了PDHS的角色。这种将UDHS包含在PDHS中的情况被称为UDHS-PDHS。从攻击路径的角度来看,UDHS-PDHS仍然是隔离的,使其与主PDHS不同,但它面临与PDHS相同的威胁。
-
完整性+稳定性:如果环境隔离受到攻击,UDHS的完整性就会受到威胁,称之为PDHS逃逸(Escape to PDHS)。
-
可用性:不考虑 UDHS 可用性威胁,因为只有 UDHS-PDHS 才具有可用性。
-
保密性:从隔离的主机环境中提取信息会威胁到UDHS的保密性,将其概括为侧信道攻击。
(3)接口层
第三层由接口组成,它是架构中最低的层级。每当一个组件与另一个组件或外部源进行交互时,接口就会介入。需要区分两种类型的接口:外部接口用于连接组件与外部元素(如地面站),而内部接口用作数据接口,因此被称为数据获取器。每个接口都有一个父接口,例如,COM Rx 接口的父接口是 COM 接口。然而,一个组件可能具有多个接口,例如,CDHS 可能有两个不同的 TC 获取器(TC Fetcher),分别用于 COM 和总线有效负载链路。
外部Rx:外部接口用于从卫星外部(例如,无线电或光接收器)接收数据。在这个模型中,这些接口仅实现基于硬件的操作,不需要软件的介入,并且只受到电磁和射频威胁的影响。因此,这些威胁因素在安全分析中通常被忽略。然而,如果卫星使用固件(即以微码的形式执行信号解调),那么这部分可以被视为COM的一部分。通过利用该固件的漏洞,攻击者可能会绕过访问控制,从而对卫星构成威胁。
数据获取器:内部接口充当数据获取器,负责管理两个组件之间的数据交互。这些接口扮演了数据的中转角色,从一个组件接收数据并将其传递给其父组件。由于其主要功能是接收和转发数据流,这些接口面临完整性和可用性威胁:
-
完整性+稳定性:攻攻击者可能试图通过注入新数据或更改现有数据来操纵数据的完整性。因此,数据注入和数据更改构成了对数据获取器完整性的威胁。例如,攻击者成功注入了额外的TC,即使只发送了一个,也会破坏数据获取器接口的完整性。
-
可用性:攻击者可能破坏数据获取器接口的功能,以阻止所有传入的数据包被正确传递给父接口。由于内存通常是有限的,这些接口通常使用环形缓冲区来存储数据包,用新的数据包替换旧的数据包。通过不断洪泛缓冲区并阻止未处理的数据包转发,攻击者可以破坏接口的可用性(数据洪泛威胁)。此外,攻击者可能会针对数据获取器的转发功能施加压制,以抑制数据的正常转发(forward suppression)。
B. 卫星模型
卫星模型的推导可以分为两个步骤:组件匹配和接口匹配。
组件匹配:首先,将模型中的组件与实际的卫星组件进行匹配。根据具体的卫星需求,可以复制或删除组件层中的每个组件。例如,如果卫星不包含PDHS或UDHS,可以删除这两个组件(以及总线有效负载链路),只保留COM和CDHS组件。如果卫星具有多个PLCOM组件,可以复制PLCOM组件,并保留每个COM组件的层次结构线和攻击路径箭头。需要注意的是,不能创建新的组件,只能复制现有的分类组件。
接口匹配:接下来,将接口与组件进行匹配。每个组件最初都有自己的接口。然而,由于每个接口只能有一个父接口,但可以有多个子接口,因此可以共享多个接口作为单个组件的接收接口。例如,CDHS可以与多个COM组件共享同一个TC获取器,前提是存在活动的冗余COM组件。
通过将组件与实际卫星组件进行匹配,并匹配这些组件之间的接口,可以建立卫星的特定模型,以模拟卫星中组件的真实交互。这样的模型有助于更好地理解卫星的结构、功能和威胁面。
0x04 攻击者模型
A. 攻击者能力
几十年来,卫星社区和开发人员一直在卫星安全领域扮演着关键的角色,通过隐蔽式安全阻止了对该领域的任何有意义的研究。因此,外部社区无法对卫星的内部结构和潜在安全问题进行深入研究。然而,近年来,随着空间领域转向采用COTS组件、开放卫星设计和开源库,情况发生了变化。这些因素导致卫星数量激增,社区规模不断扩大,同时也有越来越多的人了解卫星技术。因此,必须假设攻击者对目标卫星拥有详细的了解,包括详尽的文档和对固件映像的访问。此外,一些开源卫星的出现使攻击者有机会对卫星进行研究。因此,应该假设攻击者对卫星有着全面的了解,包括其固件。
B. 访问级别
直到最近,人们还普遍认为卫星通信需要与昂贵的地面站进行通信,供应商也认为只有少数参与者才能对卫星发起攻击。然而,地面站(GS)的价格近年来大幅下降。如今,一个功能齐全的地面站的建设成本不到1万美元,并且有开源社区支持。此外,地面站即服务(GSaaS)的供应商提供向用户出租地面站的服务,或者允许地面站所有者临时出租给其他用户。因此,人们甚至不需要拥有地面站设备就可以与卫星进行通信。
用于特定卫星服务的收发器已经变得非常小巧和便宜,以至于可以在消费电子产品中找到,比如iPhone 14。同时,太空中存在许多具备卫星间通信能力的低地球轨道卫星星座,小型低地球轨道研究卫星的数量也在不断增加。太空中已经存在许多具备强大通信能力的卫星,甚至有计划供第三方使用。
综上所述,根据攻击者与卫星的关联将攻击者分为外部攻击者、有效负载用户、有效负载服务托管者和运营商。
C. 攻击者模型
(1)外部攻击者
如下图a所示,外部攻击者可以使用自定义地面站或自定义卫星与目标卫星进行交互。外部攻击者可以将任意流量发送到任何接收外部流量的接口,同时也接收任何响应。因此,外部攻击者可以与每个外部 Rx 接口进行交互,外部攻击者可以分为两种类型。
自定义GS攻击者:与地面站的通信是卫星的主要命令和控制通道。即使该通道受到访问控制机制的保护,攻击者仍可能绕过访问控制,将其视为对COM组件的主要威胁。自定义GS攻击者可以通过任何地面站与目标卫星进行通信,而不仅仅是卫星运营商使用的地面站,因为攻击者可能已经获得了访问控制所需的秘密信息。进一步假设攻击者具备建立无线电连接所需的知识,包括频率、调制方式和轨道位置。
ISL攻击者:除了自定义 GS 访问之外,假设外部攻击者可以访问自定义卫星,以便通过 ISL 连接与外部接收接口进行通信。
(2) 恶意负载用户
有效载荷用户旨在通过卫星有效负载与卫星进行交互。有效载荷服务攻击者利用卫星提供的预定义服务,通常是卫星服务供应商提供的小型天线。此外,攻击者发出的流量需要在卫星上进行处理,即通过对其进行解析,并在有效负载数据(PD)获取器接口上进行接收。成功破坏有效载荷的攻击者(例如通过PDHS)被称为有效载荷攻击者(Payload Attacker),他们利用链接TC获取器接口与总线进行交互,从而使他们能够将攻击从有效载荷升级到总线。
(3) 恶意有效负载服务托管者
这些托管服务商具备在有效负载上托管自定义服务的能力,即通过上传不受信任的代码来实现。用户的不受信任服务是在UDHS上执行的。因此,攻击者可以使用不受信任数据 (UD) 获取器接口来访问UDHS,并上传、更新或修改服务,如上图c所示。
(4)运营商
运营商通过 TC 获取器接口发出命令,从而控制卫星的运行并完全控制卫星。虽然不考虑完全特权的攻击,但我们认为运营商通常分为完全特权运营商和半特权运营商。这种情况可能适用于任何足够大的运营商群体,其中责任和访问权限被分开。通过卫星即服务 (SataaS) 模型,这种情况变得更加可能,其中卫星的访问权限被租借给不受信任的第三方。在这种情况下,不受信任的各方可能以有限的方式进行交互,例如打开或关闭有效负载,从而导致提权。
半特权内部威胁者:如前图d所示,半特权行为允许攻击者使用非关键的 TC 进行交互,例如请求遥测数据或管理非关键的有效负载系统。因此,攻击者在有限的权限下与卫星进行交互,例如通过地面控制的上传限制。虽然攻击者的通信被卫星的访问控制机制接受,但攻击者无法直接访问加密的机密信息。
0x05 案例研究
通过对三颗不同的卫星进行详细分析,可以证明所提出的威胁分类和攻击者模型的有效性。针对每个卫星,首先进行卫星组件的技术分析,然后利用分类法来推导出特定于该卫星的威胁模型。上表概述了所分析的卫星,包括关键数据。然后,研究人员分析了卫星固件的安全性,下表总结了主要结果。
A. ESTCube-1
爱沙尼亚的第一颗卫星—ESTCube-1是由塔尔陶大学与德国航空航天中心(DLR)合作开发的卫星,于2015年退役但仍在轨道上。该卫星的主要目标是展示一种新型推进方法,称为电动太阳帆,并在可见光谱上进行地球观测。该卫星的第二代ESTCube-2计划于2023年1月发射,其与ESTCube-1共享大部分软件组件,因此以下结果可能也适用于ESTCube-2。
(1)卫星概述
下图显示了ESTCube-1的概述,它部署了两个自定义负载组件。该卫星的设计相当简单,所有组件均由 CDHS 直接控制,无需专用的PDHS。CDHS使用冗余 STM32F103VF ARM OBC 和基于FreeRTOS的OBSW。
CDHS处理的TC/TM流量通过包含多个天线的COM来接收。其中,一根超高频(UHF)天线用于与地面站进行TC/TM通信,另一根天线用于接收甚高频(VHF)紧急复位信号。此外,还有一根S波段天线,用于从摄像机下载图像数据。需要注意的是,COM的设计不包括访问保护或加密机制。
内部通信协议:ESTCube-1组件使用自定义的内部通信协议(ICP)与CDHS和地面站进行通信。该协议没有使用任何安全措施,例如加密或身份验证,并且设计简单。它使用简单的地址方案,其中每个组件(包括地面站)都有一个ID(例如,GS∧= 5,CDHS∧= 2)。当CDHS解析数据包时,ICP有效负载被用作TC数据包并转发到命令调度器,最终执行命令。总的来说,该协议提供了一个在组件的小型网状网络中传输有序数据包的最小解决方案。
(2)威胁模型
下图显示了ESTCube-1的威胁模型,包括识别出的漏洞。由于卫星的有效载荷不包含PDHS或用于结构化数据的外部接收器,因此威胁模型仅涉及总线,而不涉及S波段天线,因为其仅用于数据传输。ESTCube-1的攻击面是通过接口定义的。因此,只有针对具有自定义地面站的COM Rx的外部攻击者以及连接到TC获取器的半特权运营商是相关的威胁。
实验设置:研究人员在实验室中重建了卫星的一部分,并使用带有J-Link调试器探针的分线板重新创建了卫星的CDHS硬件,其中使用了相同的STM32微控制器。此外,将卫星连接到代表有效载荷控制功能的执行器上,此设置在同一硬件上运行未经修改的OBSW。然后,将扬声器连接到通常由太阳帆占用的端口,以构建一个可以播放声音的PoC,说明攻击者可以控制这个(或任何)端口。
(3)安全分析
不安全远程命令访问:ESTCube-1 最引人注目的问题是缺乏TC加密和身份验证,这会导致COM上的访问控制绕过。在卫星运行期间,具有定制 GS 的外部攻击者可以向卫星发出任意命令。这似乎没有什么简单的解决办法,因为所采用的ICP协议必须进行扩展,以允许加密安全的交互。这凸显了对关键应用程序使用自定义协议的挑战。
TC设计不安全:即使没有访问保护,卫星的设计也应确保远程命令在未经进一步验证的情况下不会损害卫星的稳定性。在ESTCube-1 中,存在两个特定的 TC 允许任意读写存储器。从技术层面来看,攻击者通过命令参数可以控制传递给memcpy的所有参数,因此这两个远程命令都是危险TC。任何拥有定制GS的人都可以利用这些TC来远程执行代码并夺取对卫星的控制权。值得注意的是,具有执行任意代码的能力将使攻击者能够将固件更新持久写入闪存,从而导致接管是不可逆转的。ESTCube-1中的RTOS没有任何此类保护功能,它既不使用ASLR(地址空间布局随机化)也不使用堆栈保护机制。为了证明此漏洞的影响,研究人员构建了一个漏洞利用程序,在实验室中重建了ESTCube-1的COM接口,并通过发送有效负载来执行任意代码(通过连接的扬声器播放声音)来展示攻击的效果。
恶意长度字段:收到ICP数据包后,该数据包通过FreeRTOS数据队列传递到命令调度程序,该程序使用其中的参数执行相关命令。然而,命令解析函数没有根据ICP数据包或有效负载的总长度来验证参数长度字段。这意味着外部攻击者可以指定恶意的长度字段,使参数比实际长度长。这会导致命令处理函数在堆内存中使用比预期更多的字节,从而导致缓冲区过读。因此,攻击者可以在TC中包含额外的数据,造成控制数据泄露。研究人员在硬件上验证了这个漏洞可以在卫星上实施,并成功地利用了这个漏洞。泄露本身不受环境条件的影响,但具体秘密的提取取决于堆布局。值得注意的是,该漏洞类似于著名的OpenSSL Heartbleed漏洞。
B. OPS-SAT
OPS-SAT是欧洲航天局直接运营的首颗立方体卫星,由格拉茨理工大学开发,并于2019年发射到近地轨道,目前仍在使用中。该卫星提供了一个多功能平台,可用于进行科学实验和技术演示。该卫星的一个重要的特点是,不属于欧洲航天局且没有特定卫星知识的人也可以通过专用的开源框架开发实验。因此,该卫星提供了一个罕见的场景,即由不受信任的第三方进行实验。随着SataaS模型的普及,这种情况在未来可能会更加普遍。因此,OPS-SAT是研究这种威胁场景的一个绝佳案例研究,为研究人员更好地了解和应对未来可能出现的安全挑战提供了宝贵的机会。
(1)卫星概述
如 下图所示,OPS-SAT 分为卫星总线和有效载荷,其中有效载荷部署实验和相关设备。
卫星有效载荷:如上图下半部分所示,卫星的有效载荷以冷冗余卫星实验处理平台(SEPP)为中心,该平台配备双核ARM Cortex A9处理器。SEPP与软件定义无线电(SDR)、摄像头和微调姿控系统(ADCS)相连接,后者是光学接收器(Rx)所需的。此外,有效载荷还包括用于高带宽数据传输的S波段无线电收发器和用于更高带宽下行链路的X波段发射器。这些无线电的流量通过CCSDS引擎进行处理,该引擎由连接到OBC和SEPP的现场可编程门阵列(FPGA)中的CCSDS硬件解码实现。
卫星总线:如上图上半部分所示,卫星总线采用常见的卫星总线设计,并以冗余的NanoMind A3200 OBC为中心。通信模块(COM)部署了UHF/VHF无线电与地面站(GS)进行通信。
OBSW使用了FreeRTOS v8.2.1 RTOS,并利用GomSpace NanoMind SDK进行构建。该SDK提供了硬件抽象和通用功能,例如文件系统访问和参数数据库。为了处理来自通信模块的TC,卫星使用了立方体卫星太空协议(CSP),该协议在开源库libCSP中实现。此外,OBSW还能够接收经过SPP封装的TC,其中的SPP数据从CCSDS引擎和冷冗余卫星实验处理平台(SEPP)传输而来。
(2)威胁模型
下图显示了OPS-SAT的威胁模型。CDHS拥有两个TC获取器,一个通过I2C总线连接到UHF/VHF COM,另一个通过控制器局域网(CAN)总线连接到S波段COM。其中,通过CAN总线连接的TC获取器与CCSDS引擎盒子关联,该引擎盒子代表S波段COM。此外,CAN-TC获取器还能够从有效载荷接收遥控命令(TC)。
由于真实卫星上使用的昂贵NanoMind板的限制以及类似板的停产,研究者采用基于软件的仿真和静态分析方法。由于目前尚无针对该ISA的综合仿真器可用,研究者从头开始在QEMU中实现了AVR32UC3 ISA,以获得准确的测试和评估环境。通过在仿真环境中模拟卫星的处理器指令集架构,研究者能够进行有效的代码执行、调试和分析,以评估卫星固件的安全性和漏洞。这种基于软件的仿真方法为研究人员提供了一种代替真实硬件的方式,以进行卫星系统的安全性评估和漏洞分析(https://github.com/CISPA-SysSec/SpaceOdyssey-QEMU-AVR32)。
(3)安全评估
下图显示了在总线中发现的漏洞。
绕过访问控制:OPS-SAT使用S波段无线电与CCSDS引擎结合,而CCSDS引擎可以解密S波段流量。COM无线电直接连接到OBC,并且OBSW使用CSP协议进行通信。CSP协议在编译时禁用了扩展微型加密算法(XTEA)加密和基于哈希的消息验证码(HMAC)验证功能。因此,COM没有提供任何保护措施,使得外部攻击者可以通过执行任意的TC命令卫星,其中包括任何拥有自定义GS的攻击者。
此外,COM具有比S波段天线处理更广泛的命令范围,因为它可以访问额外的命令服务。这些附加服务包括libCSP的默认处理程序(例如ping回复、正常运行时间检查和重新启动)、用于编辑飞行参数的参数服务、ADCS服务器和传感器遥测服务。相比之下,受保护的S波段COM只负责与CCSDS引擎进行通信。因此,未受保护的COM暴露出比受保护的S波段COM更广泛的攻击面。
不安全的软件更新:OPS-SAT的闪存文件系统存储了包括固件映像在内的文件。已有的TC允许创建新文件并对其进行写入,这使得攻击者可以上传恶意固件映像到卫星上。要修改文件系统路径以指向当前映像,必须启用卫星设置中的一个全局布尔标志,该标志需要关键的命令来进行更改。值得注意的是,可以通过不需要额外验证的TC来更改此标志。因此,外部攻击者可以执行任意固件更新操作,从而控制卫星。类似的关键功能被隐藏在同一标志后面,这表明工程师意识到其重要性,但决定不采取进一步的保护措施。
关键TC接口:SEPP和CCSDS引擎通过相同的CAN总线连接到CDHS。该CAN总线上的所有数据包都是使用相同的代码从CAN-TC获取器中获取的,无区分数据包的来源。因此,受保护的S频段COM和PDHS的TC数据包将以相同的方式进行处理,将S频段COM提供的所有TC都暴露给PDHS。这包括之前描述的不安全的软件更新,从而导致严重的TC接口漏洞。因此,任何控制PDHS的攻击者都可以向CDHS发送关键的TC并进行恶意固件更新。
不可信外部输入:应用程序不应信任外部输入,尤其是关于缓冲区大小的输入。然而,在CAN总线实现中,其会接受来自S波段天线和任意大小的SEPP数据包。虽然单个 CAN 总线数据包每次传输限制为 8 个字节,但在发送传输结束标记之前可以发送任意数量的数据包,并将其复制到静态缓冲区中,这可能导致攻击者写入超出预期范围的内容。
不安全库调用:在OBSW中的GomSpace NanoMind SDK使用了uffs库,用于实现低成本闪存文件系统。该库被用于大约 75 个航天器,并且根据该库的作者的说法,其也被 NASA 使用。该库中发现了一个基于堆栈的缓冲区溢出漏洞,该漏洞会在文件重命名过程中导致新文件名称被复制到静态长度的缓冲区中,而没有进行任何长度检查,从而可能导致任意代码执行。
TC内存损坏:在固件中发现了一个缓冲区溢出漏洞,更准确地说是在允许指定日志文件的 ADCS 服务器功能中。尽管日志文件名存储在静态缓冲区中,但写入此缓冲区的strcat函数会从可能大于静态缓冲区的TC中复制字符串,从而导致TC存在漏洞。因此,该漏洞使攻击者能够通过UHF-TC获取器接口在单个TC中执行任意代码来控制卫星,而不需要多个TC的恶意固件更新。
C. Flying Laptop
Flying Laptop 是一颗于2017年发射的小型卫星,由斯图加特大学空间系统研究所运营,并与Airbus Defence & Space公司合作开发,如今仍在使用中。该卫星旨在作为未来低成本平台的技术演示器。通过对Flying Laptop的安全分析和威胁建模,可以提供有关保护和强化卫星安全的重要洞见。
(1)卫星概述
下图展示了Flying Laptop的概览,上半部分代表总线,下半部分代表卫星有效载荷。
卫星总线:Flying Laptop的总线采用通用卫星精简版架构,并以冗余的Leon3 SPARC微处理器作为OBC的核心。其操作系统使用RTEMS RTOS v4.10.2,通过COM进行TC/TM流量通信。COM通过SpaceWire接口连接,该接口类似于ESA为太空应用设计的CAN总线,并与CCSDS协议紧密集成。进出SpaceWire端口的流量由与S波段天线耦合的CCSDS解码/编码板处理。解码是透明执行的,这意味着OBSW仍会收到CCSDS数据包。因此,OBSW实现了CCSDS和SPP解析器来接收TC。
卫星有效载荷:有效载荷旨在处理来自两个摄像机和自动识别系统(AIS)的数据,以进行海上船舶的自动跟踪。为此,它以中央处理节点(CPN)为中心,在有效载荷OBC(PLOC)上使用基于FPGA的完整计算配置,并具有易失性和持久性内存。数据经过处理后,使用S波段发射机或光发射系统OSIRIRS发送到地面。最后,CPN还部署了辅助FPGA,用于初始化PLOC-FPGA,从而允许在启动后进行固件更新。
(2)威胁模型
下图展示了Flying Laptop的威胁模型,其中总线和有效负载是完全隔离的。在有效负载上,仅将AIS接收器识别为攻击面,其数据在PDHS上处理。
(3)安全评估
下图总结了在分析过程中发现的漏洞。
缺少 TC 身份验证:在Flying Laptop的COM中,CCSDS引擎负责解密TC。因此,外部攻击者可能会利用重放攻击或伪造密文攻击来绕过解密,进而执行未经授权的命令,具体取决于支持的加密类型。这暗示着TC的机密性可能受到威胁,或者存在错误的假设,即加密机制足以保护TC的完整性。
危险TC:Flying Laptop提供了类似于ESTCube-1的memcpy TC,其通过远程命令提供memcpy调用的所有参数,从而暴露了潜在的危险TC。绕过访问控制的攻击者可以利用此漏洞执行任意代码。要利用此漏洞,攻击者需要绕过访问控制,并得到对TC获取器接口的无限制访问权限。然而,由于存在访问保护措施,只有完全特权的运营商才能访问该接口。需要强调的是,这将破坏安全链中的一个环节,使访问保护成为单点故障。
长度字段溢出:CDHS存在一个缓冲区溢出漏洞,这是因为SPP完全信任数据包中的长度字段,而该字段从未被清理。即使在验证CCSDS长度字段后,CDHS仍然完全信任SPP中包含的长度字段。通过利用这个漏洞,攻击者可以在其攻击命令中包含来自先前的TC的数据,从而修改TC的内容。半特权运营商可以利用这个命令通过TC获取器来执行不同的命令,但仅限于在GS上获得授权的TC。
长度字段不一致:每当缓冲区发生更改时,必须更新相关的长度字段。然而,在CCSDS解析器中发现了一种填充机制,它通过增加缓冲区指针来跳过前导填充,而不更新相应的长度字段。攻击者可以利用这一点,通过覆盖原始缓冲区来强制CCSDS解析器读取其他TC数据包的数据,从而有效地将其他TC的数据包含在攻击者的TC中。这使得半特权运营商在上传后可以修改他们的TC。该漏洞还可以通过TC获取器接口(例如可信长度字段)进行利用。
0x06 结论
本文探讨了卫星的安全状况,并对攻击面进行了系统分析,同时提出了适用于卫星固件的普遍威胁分类。随后,对三颗实际在轨卫星进行了实验性的全面安全分析,发现它们存在不同类型的软件漏洞,并且防护措施不足。希望这项工作能够成为研究新空间时代卫星安全和隐私方面的起点。
原文始发于微信公众号(德斯克安全小课堂):卫星渗透测试:针对星载固件的安全分析
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论