- 精华
- 0
- 帖子
- 256
- 威望
- 0 点
- 积分
- 257 点
- 种子
- 5 点
- 注册时间
- 2005-2-19
- 最后登录
- 2020-3-19
|
首发
George Hotz, 因为破解IPHONE而出名,声明他已经闯入Playstation 3并提供了具体方法。有很多文章写了这个消息但没有一篇分析了具体的代码。因为有太多混乱的报道,这里是一些关于这个代码的分析来帮助理解这个手段。
PS3,和Xbox360一样,依赖一个管理程序来实现安全保护。不像360,PS3允许用户运行普通的LINUX,但这仍然是在管理程序的管辖之内。管理程序不允许linux核心访问一些设备,例如显卡芯片.如果找到方法突破这个限制,直接访问硬件变得可能,那么其它受到更少监控和控制的代码就可以被攻击者控制。
破解管理程序不是运行盗版游戏的唯一步骤。每一个游戏都有一个被加密的密钥存储在碟片中的ROM Mark区域。驱动程序读取这个密钥供给管理程序在读取游戏内容时解密内容。管理程序需要被颠覆从而得到这个密钥,给每个游戏。另一个方法是设法破解蓝光光驱的硬件程序跳过读这个密钥并把解密的数据读出来。然后,所有的这个游戏的潜伏的保护措施都要禁用掉。每个游戏使用什么保护方式目前都不知道,有些可能完全信任PS3的加密方法,有些则可能使用一些方式如 SecuROM。
管理程序代码运行在主CPU(PPE)和7个CELL处理器其中一个(SPE)中。SPE进程看来是运行在独立模式,访问它的代码和数据内容空间是禁止的,甚至管理程序都访问不了。最高权限硬件密钥用来解密引导程序和管理程序,它是写在硬件中的,很可能使用了 eFUSE。这可能意味着每一个CELL处理器有一个唯一的密钥,解密不仅仅依靠最高权限密钥(与其它文章说的不同,只有一个唯一的密钥)。
George的破解方法使用了老PS3主机启动其它linux系统的功能突破了管理程序。他用他的方法加一些代码读写 Ram然后把管理程序拷贝出来。得到第一级的访问权是进行其它针对硬件程序或游戏的重要的第一步。他的方法很聪明,叫做差错攻击( glitching attack)。这种硬件攻击包括发出精确频率的电脉冲使硬件做出一些错误行为。这种经典的方法在很久以前就被用来破解Smark card。通常,黑客使用的脉冲目标是一个循环的中断条件,使那个循环无限重复然后拷贝被保护的ROM内容到可以访问的数据总线。时钟线通常会出差错但有些数据线也会成为目标。脉冲的频率不一定每次都准确因为硬件设计通常会有容错性而且攻击者可以重复很多次直到成功为止。George把一个FPGA连接到他的PS3一条内存总线上。他使用一个简单逻辑写了个程序在芯片上:当按下开关的时候发送40微秒的脉冲。这可能用Verilog(一种硬件描述语言)很简单地写出来。这个脉冲时间相对很短(但仍然有100个PS3内存时钟周期),这个按钮非常地不精确。但是,他使用软件设置RAM使成功率变高。
他的目标是破坏哈希页表得到主存储区的读写权限,这个表映射所有的内存地址包括管理程序。他的程序是一个linux核心模块调用管理程序的一些内存管理调用程序。它分配内存空间,释放空间,然后尝试使用释放的内存空间作为哈希表给虚拟区。如果差错使管理程序与RAM的实际状态不同步,它就会允许攻击者覆盖哈希表从而取得任何内存空间的控制权。让我们详细分析一下。
第一步是分配一个缓冲区。他写的程序然后向管理程序请求创建很多哈希表的指针指向这个缓冲区。任何一个指针可以读写这个缓冲区,因为核心在控制它。在UNIX系统,把这个想像成很多的文件指针指向同一个临时文件。任何一个文件指针都可以关闭,但只有有一个指针在,文件内容就可以被访问到。
下一步是释放缓冲区,但指针仍然存在。这样做没问题因为管理程序会自动处理这些指针。在直接调用 lv1_release_memory()时,他的程序显示一个消息提示用户按那个差错激发按钮。因为有很多的指针指向缓冲区,在管理程序释放指针时用户有充足的机会激发错误。差错可能阻止了一或多次管理程序的写内存的循环。这些写操作是用来释放每一个指针的,但如果失败了,指针就会继续存在。
在这个时候,管理程序的哈希表映射了一个或多个读写指针指向一个被释放了的内存空间。所以,核心不再拥有那个缓存区并且被认为不能够写入它。但是核心仍然有一个或多个有效的指针指向缓冲区并且可以更改它的内容。但这个目前还没用因为那是个空的内在空间。
他的程序然后创建一个虚拟内存段以及查看相关的哈希表是否位于已经被释放的内存空间,如果不是,继续创建直到是为止。现在,用户拥有了直接写哈希表的能力,而不依赖于管理程序。程序通过写一些哈希表的项目来访问全部内存。只要哈希表转到这个虚拟内在段,攻击者就控制所有的内存包括管理程序本身。程序安装两个系统调用直接存取任何内存地址,返回给核心。
很有可能有人会把这个攻击打包进一个芯片,同时很有限,不需要非常精确地计时。结合一个小控制器与一个小模拟电路给脉冲,这可以很可靠。但是,很可能在给拷贝出的管理程序做反向工程后发现它的漏洞然后被更广泛地使用。
SONY很显然做了极大的工作给PS3的安防。它们结合在一起,没有明显的弱点。但是,在公开的API中给客户系统的低级别的访问权限意味着管理程序中的任何漏洞都会被攻击者利用。一个简单的补丁就是在每一个指针更改的时候回访它的状态。如果写入失败,管理程序会发现并挂起。
SONY日后会如何回应并提供更新是有趣的看点。. |
|