随着电子装置担负的责任越来越多,我们放入蜂窝式电话、媒体播放器、机顶盒以及其他电器的个人信息也越来越多。于是,嵌入式系统的安全性涵盖了隐私信息保护的方方面面,从在商业终端(POS)上进行的信用卡交易的真实性保护,一直到私人语音邮件的防护。
在这篇调研报告中,我们将回顾最基本的攻击状况、系统弱点,并讨论最好的防卫策略。我们从硬件、软件及软硬件混合的角度来分析系统的强化,比如安全引导、系统管理程序对存储器的控制。
产品层次的正式安全认证可以具体到某一特定的应用,于是,详情会被保存得相当隐秘,这也就不难理解了。同样的,我们也从安全的角度,提出能够产生有用度量的方法,来决定SOC及系统组件的一般鲁棒性和适用性。(注:鲁棒性 (robustness)就是系统的健壮性。它是在异常和危险情况下系统生存的关键。比如说,计算机软件在输入错误、磁盘故障、网络过载或有意攻击情况下,能否不死机、不崩溃,就是该软件的鲁棒性。)
攻击状况分析
知道我们所担心的是什么,这是很重要的。它们的技巧是什么?它们的资源有几种?威胁的类型千变万化,从相对低强度的软件攻击—这种攻击基于一些可在网上新闻组(如:alt.hacker或各种各样的“warez”站点)找到的软件—一直到资金充足的工业间谍活动。
攻击状况可合乎情理地划分为如下几类:
。一个聪明的外部人员:这个人很聪明但对系统的了解却很有限。他已经可以使用先进程度中等的设备,并可以利用已知的弱点而不是制造新的弱点。
。一个充分了解系统的内部人员:这个人受过专业技术教育并拥有技术方面的经验。他对系统各个部件的了解程度不同,但是,由于其位置处于“防火墙之后”,他将会获得具有高度损坏性的详细资料。这种人可以利用高度专业化的工具和手段进行分析。
。一个有资金支持的组织:一个组织将能够组建具有技术互补性的专家队伍。在那个对系统了解充分的内部人可能在某些特定的领域具有专长,而该组织可以通过增加人手来填补这些领域内的空白。他们将有机会使用先进的分析工具和精密的仪器来更改组件。聚焦离子束(FIB)是一种复杂且昂贵设备的技术,可以用来修改集成电路。这种设备远远超过大多数个人的使用需要,但是,那些破解有着重要价值的对象的安全防护措施的组织却要利用该技术。
攻击
攻击者技术和能力不同,他们的方法也不同。我们从一些基本可以在分属各种威胁程度的几种攻击方法开始。
一类范围很宽的软件的攻击,依赖于攻击者在执行环境中获得足够的特权,以便能控制和获取敏感的装置及数据。例如,在iPhone软件体系结构的开发过程中,诸如浏览器等部分就处于系统的优先层面1。从系统集成的角度来说,这是有道理的。但是使得系统易遭攻击,因为任何会受到威胁的系统组成部分,可以具有最高权限级别,因此可以访问大量系统资源。
使用这种方法的最近的一个例子,由Charlie Miller等人在去年夏天公布于众。通过将一个恶意的HTML文件指向电话的Safari网络浏览器,可以控制对包含敏感信息的存储区的访问。这会使电话的Safari网络浏览器崩溃。
在实际应用中,这种攻击可以通过发含有链接的邮件,这样一个简单的权宜之计来实现。其中,邮件中链接所指的是一个具有恶意HTML的服务器。如果接收者电击那个链接,使用那个攻击所转化的安装程序,接收者就很可能受到攻击。
从安全的角度来说, DMA(直接存储器存取)存储器是一个令人头疼的问题。它们使用一种强大的机制来迅速而有效地转移数据,但是它们转移数据的过程也是大多数系统所无法控制的。如果目标装置是有DMA能力的,一个恶意的应用程序通过注入代码和数据或获取敏感信息,可以完全地搞垮一个系统。DMA控制器,由于它们可以很轻松地进行绕过保护层和访问存储器,因此在正在设计的SOC和系统中,必须对其进行一系列详细的审查。
有一种掠夺普遍使用的数据结构的攻击方法是缓存器溢出攻击。这种攻击普遍利用那些被用来存储用户向一个程序所提供的输入的堆栈,比如说:姓名、住址、电话号码和其他的典型表格性数据。在正常操作条件下,数据按照操作者的输入顺序,与返回存储地址一起,存储在堆栈里。
然而,在一些情况下,应用软件并不进行适当的检查,来确定接受到的数据是否超出了所分配的缓冲存储区域。向缓存中本该操作者输入数据的区域,传送尺寸过大的数据,并伴以一段恶意的执行代码及一个用来覆盖调用程序的返回地址的地址数据。那个特大的数据导致比堆栈配置空间更大空间的使用,造成缓存溢出。同时,由于地址数据过多的返回地址指向攻击者的恶意代码,当功能尝试返回时,就开始执行黑客在错误返回地址所写的代码。这种危害已经达成,侵入者掌握了控制权。
一旦攻击行动成功地将执行代码放入它的域中,系统水平上的危险度就依赖于赋予被劫持的进程的授权水平。当然,如果被危及的程序在系统中被许可控制的范围并不宽,那么危害的程度就会相对减小。
由于这些种类数据结构的广泛使用,这是一种相当普遍的攻击方式。所以,在一些任何安全防护壁垒中,如:系统管理程序,安全内核,应该尽量少地使用缓存和堆栈,如果能够完全避免使用它们,那就更好了。
正如我们所指出的,通过破袭正在运行系统的组件,可以进行大量的控制。然而,当系统关闭时,可以生成大量其它的恶意程序。在一些情况下,侵入者可以在存储装置上写入代码,比如导入代码。这就允许侵入者可以更改代码,使驱动程序在下次导入时按照攻击者所希望的方式而不是它原来的设计所期望的方式工作。这种进攻更有可能是由更高一个层次的黑客来执行的,比如:“了解情况的内部人员”。
在整个程序开发过程中所使用的设计功能,通常是进入系统的秘密途径。联合测试行动组(JTAG)标准的端口是一个边界扫描端口,可以连接到许多电路板级和芯片级的资源上,可以让攻击者获得对几乎任何一种敏感资源的控制,更改执行流程或执行代码。
通常情况下,是否在交付产品时提供JTAG端口,是一个复杂而难以决断的问题,这是因为,将其取消,就意味着在现场进行的调试变得十分困难,但是,若是保留它,又会让系统存在潜在的弱点,而极易被击破。这是一个很好的例子,它说明,在设计过程中,把产品设计得尽可能开放有用,而同时又要封闭可造成危害的途径,这两者是相互冲突的。
如果存在一条外部存储总线,它为攻击者提供了重要的机会,并对安全设计来说是一个重要的挑战。如果攻击者可以侦测外部存储总线,那么他就有可能形成一个代码序列,这个序列反加到原来的那些总线上后,可以诱骗系统泄漏一些内部秘密。这就是我们之前所提到的“重放攻击”(replay attack)。即使加密的SDRAM,也可由于复制或回放被选择的存储内容,而受到这种类型的攻击。
旁路转换缓冲器(translation lookaside buffer,TLB)是一个高速缓冲存储器,它将虚拟内存地址转换成物理地址。应对对这个子系统进行特别严格的审查,这是因为,作为系统的一部分,不但对于系统性能来说很重要,而且也是可被攻击的弱点。从我们的目标出发,主要有两大类:硬件填充,即集成一个称作“硬件表walker”的装置,以及软件填充。
对于具有“硬件表walker”的系统而言,TLB再次填充是在出现TLB丢失时由硬件自动完成的。如果攻击者具有可以向存储有MMU描述符表格的存储器写入的权限,那么攻击者就可以改变表内的内容,并写入错误的转换关系。这种行为会产生很多影响,比如产生一个对内存或敏感装置的映射。
一个稍微有些不同的策略适用于具有TLB的软件填充策略的体系架构。MMU和TLB是寄存器控制的,而且需要进入优先权才能访问,但系统仍然存在弱点,即执行重填入的代码和该代码所操作的数据都保留在内存中,因此容易被恶意的应用程序所使用。
在密码学中,“旁路攻击”是基于从加密系统的物理实现方案所获取的信息、而非基于理论算法缺陷的任何攻击行为。众所周知的攻击包括定时攻击2、功率测量、辐射监测。在这些攻击中,功率或辐射特征经汇编后,与已知的系统行为相比较,以便找出行为的模式。一旦模式和相应的内部行为被确定,就可以设定故障误注入的时机和位置,以使得系统按照需要出现异常。
而一些黑客满足于他们从SOC封装之外所了解的信息,为了实现一些高价值的目标[如电子收款机系统(POS)终端],我们应关注一个更现实的问题,黑客们将会尝试将嵌入式器件的封装去除,来进行信号探查和内部存储的分析。作为这个方法的第一步,攻击者,很可能是一个团伙中的一员,会通过加热或酸腐蚀来融化芯片的外壳,以便能置入微探针。完成这一步后,器件开始运行,黑客尝试分析模式并测定弱点。
图 1 描述硬件表Walker攻击的代码序列。在初始状态下(1),敏感数据驻留在内部存储中,无法从虚拟地址空间获取。攻击者利用专门的探测手段,可以直接访问外部存储,以修改MMU描述符表(2)。当应当进行下一次虚拟地址(3)的TLB重填的时刻到来时,所针对的数据被映射到虚拟地址空间中,从而被攻击者所截获
黑客通过使用故障注入的方法,使用能量脉冲、热量和高频率,试图影响正常的系统运行。一旦这些方法的某种组合可以将系统驱动到一个更“有用”的状态,黑客就能获得更多的信息,从而进一步破坏系统的安全性。
在一种资源可再生的攻击中,应用程序的开发者已经假设,一旦某种资源,如一个目标文件,被删除,存储器中资源的内容也就会被删除了。但实际情况并不总是这样,攻击可以利用这个情况来扫描存储器,找到有用的残留信息。一般而言,在一个安全的环境中,用密码写的应用程序,被用来跟踪任何包含敏感信息的资源,并在将那些资源返回信息资源池之前将其清除。
然而,在应用程序崩溃或外部中止的情况下,那种行为就不能得到保证。即使安全地使用存储器,紧密地控制资源区,只要在一个恰当时机注入故障条件,比如能量脉冲,存储器中就会残留数据,而这些数据随后将被黑客所盗取。
拒绝服务型(DoS)攻击,是试图通过让某个计算机的通信通道饱和或者公然强制发生复位来阻止计算机的资源为其合法用户所用。
在这个分类中,攻击者可以利用很多途径,包括命名很有创意性的攻击状况,如“Smurf攻击”。这个攻击利用配置不好的网络,这种网络将对查询IP广播地址的“Ping”要求作出回应。这种情况下的“ping”操作,可以诱骗受害人返回其地址。这些网络就变成了“Smurf 放大器”,产生大量针对受害者的通信流量。这种攻击并不是什么新鲜招数。对系统管理员来说,配置他们的网络以拒绝“ping”对广播地址的请求且不转移这类信息包,是一件相当简单的事情。虽然这种方法不再是一个活跃的威胁,但很好地说明了DoS的共同特征,或者,更准确的说,是分布拒绝式服务(DDOS) 攻击:利用共同的系统特征的漏洞,劫持大量无辜的器件,来放大攻击所产生的影响,和对目标系统的防护措施的破坏力。
在当前出现的多种攻击方法中,恶意软件的分布式攻击方法已演变为包括高级的软件机器人或定位于以前所破解的系统中的“bots(木马)”。这些bot被拴绑在团块或“botnet(僵尸网络)”上,协同形成实际DDOS的攻击。
评论
查看更多