BIOS FLASH 保护机制浅析

一,引言

 

多年前有一个很著名的病毒名叫CIH,当年CIH的流行曾经造成了巨大的经济损失。CIH可以攻击主板上的BIOS FLASH芯片,破坏里面的内容,从而使得受害者的计算机无法正常使用。这是人类历史上第一个可以破坏硬件的病毒。CIH可以攻击基于Intel 430FX芯片组的主板,由于FX芯片组在那个年代属于主流芯片组,所以无数的电脑在感染CIH后无法开机。只得返厂维修。至此人们第一次意识到对BIOS FLASH芯片的保护至关重要。之后的年代里,人们开始不断的改进FLASH的保护策略。

 

现代的主板上配备的BIOS FLASH芯片并不像过去那样不可更改。在286,386,486甚至早期Pentium时代,受制于芯片组的限制或者本身成本上的考虑,主板上装的往往是真正的ROM芯片。换言之那个时代的BIOS的确是不可写的东西。但是BIOS需要更新,因为BIOS也是人编的,也是软件。既然是软件就一定有BUG,BUG需要修复,所以人们需要重新对FLASH芯片进行编程以便能够升级BIOS。且人们还可以通过升级BIOS获得新的功能,于是后来的设计上都允许对FLASH予以重新编程,以便升级BIOS。主板上开始配备可编程的ROM芯片,也叫EEPROM。

 

但是一个可更改内容的ROM芯片是一把真正的双刃剑。一方面给了用户便捷性与灵活性,另一方面也为一些恶意代码打开另一扇门。前面提到的CIH就是一个极好的例子。CIH的作者研读了430FX的用户手册,知道了如何编程去擦写FLASH芯片,于是CIH就具备了这样一种可怕的能力。

 

--------------------------------

 

二,常用保护策略

 

那么如何才是最佳的保护方法呢?大家可能一下子就想到是不是硬件上可以有某一位来控制一下,一旦设置了这样一位,那么FLASH芯片将不可写?

 

这的确是最简单的保护策略,即写保护型。写保护的方法简单易用,实现起来也分两种,第一种是芯片组提供的保护机制;另一种是芯片本身提供的机制,而芯片本身的往往是一次性锁死,也叫Lock,意思是一旦lock住,今后再也不能打开了。相对而言,芯片组提供的就比较灵活,有一种机制名叫LOCK DOWN,一旦激活后芯片将无法更新,必须要一个PLTRST#才能去掉LOCK DOWN。

 

其实LOCK DOWN也不是最佳的方法,主要原因是更新工具不好开发,如果非要一个PLTRST才能更新FLASH,那么用户每次更新都会变得异常繁琐。现在不是都讲用户体验嘛,这个用户体验太差了。很多Intel的主板,事实上是用LOCK DOWN的,所以那些主板更新的时候,会重新启动,事实上的真正的更新操作都在重启后做的。

 

还有一种保护策略比较好。是SMI保护,这是一种我认为相当完美的保护策略。现代的芯片组都可以配置为当有人试图写入FLASH的时候触发一个SMI(还记得SMI不?见我之前的博文),而SMI处理程序只能由BIOS提供。换言之只有SMI处理程序才可以更新FLASH。如此就是一种比较完美的更新策略,因为除了BIOS外,任何其人都不能安装SMI处理程序,事实上也就无法更新BIOS。而BIOS本身却可以完成更新。

 

你可能感兴趣的:(EFI,Drivers,Development,IA-32,Architecture,Inside,the,EFI,BIOS,flash,编程,工具)