漏洞,林灰最先想到的是“时间回归漏洞”。
所谓的时间回归漏洞指的是有一段时间蘋果手机调整时间会变砖。
调整时间手机会变砖?
听起来可能有点滑稽,不过这漏洞真实存在。
在iOS64位设备的早期版本上。
只要将苹果手机时间设定到1970年1月1日,然后重启,苹果手机就变砖头。
之所以存在这样一个漏洞跟iOS系统的最底层——Unix系统有很大的关系。
Unix操作系统,是一个强大的多用户、多任务操作系统。
该系统支持多种处理器架构。
按照操作系统的分类,属于分时操作系统。
该系统最早由肯·汤普逊、丹尼斯·里奇和道格拉斯·麦克罗伊于1969年在AT&T的贝尔实验室开发。
Unix系统有很多衍生产物。
iOS基于的Darwin正是Unix的分支之一。
iOS作为一个系统一定程度上继承了Unix的特性。
既然是系统,那么不可避免会涉及到计时的问题。
与人类一般使用“年+月+日”的计数格式不同。
Unix采用了一种完全不同的计时方式:
在Unix系统中计时方式是先将(UTC时区)1970年1月1日00:00设定为0点。
随后计算到目前为止所经过的秒数。
举个栗子。
2014年6月22日18时30分25秒。
表示出来的话为1403433025秒。
换算成对应的二进制在Unix系统下表示时间。
这种计时方法被称为时间戳。
iOS系统也沿袭了Unix这一计时方法。
也正因此,iOS中时间的设定最多也只能回溯到UTC时区1970年1月1日00:00也是这个原因。
仅仅是设置成这个时间的话不会有什么问题。
但涉及到一些特殊的在局部关键功能具有查询过往信息的规则的时候
将时间设置成UTC时区1970年1月1日00:00很容易出问题。
尽管多数时候可以通过人为的因素避免触发这个漏洞。
但蘋果手机开机的时候就有一个这样强制查询过往信息的机制这个几乎无法避免。
这个机制没办法取消,因为关机重启之后手机肯定是要读取一部分先前的日志数据的。
这种情况下如果时间戳是正常时间的话,那么读取先前的日志数据并不会有什么问题。
但当UTC时区1970年1月1日00:00的时候,这个时候时间戳的时间是0。
当局部时间比时间戳0点更早的情况下。
应该怎么表示比时间戳0点更早的时间?
似乎没什么好办法。
尽管没别的好办法,系统是机器。
又不是拥有智慧的生物,它一样是要通过查询机制找到更早时间的。
这个时候就会在时间戳
请收藏:https://m.xiaojinyu.cc
(温馨提示:请关闭畅读或阅读模式,否则内容无法正常显示)