如果你们还记得当时的忙乱千年虫的在美国,这个故事听起来可能很熟悉。

网络安全和基础设施安全局(CISA)已经发布了一个警告向关键基础设施(CI)的所有者和操作员,以及其他从GPS获得时间的用户,介绍GPSD版本3.20到3.22中的GPS守护程序(GPSD)错误。

Y2K

如果你不记得千年虫,让我快速提醒你。在2000年之前,许多计算机程序通过记住最后两位数字而不是所有四位数字来记录年份。以这种方式编码的程序在新千年的第一天之前都可以正常工作,那时它们会假设自己被送回了100年前的1900年。

有些电脑程序不在乎现在是什么时间,但有些程序却在乎,人们真的担心,如果把日期搞错-100年,可能会导致灯灭,或者飞机从天上掉下来。

最后,这些大问题并没有出现,因为每个人都提前收到了一两个或20个警告,并且有足够的时间采取行动并修复损坏的代码。

现在又怎么了?

除了告诉你你在太空中的位置,全球定位系统(GPS)还可以告诉你你在什么时间。为了做到这一点,它记录了自1980年1月5日以来的周数。民用GPS主要信号使用10位编码广播GPS周数,最大值为1,023周。这意味着每隔19.7年,代码中的GPS周数就会转到零。

GPSD是一个适用于Linux、OpenBSD、Mac OS X和Windows的GPS服务守护进程。它从GPS接收器收集数据,并使计算机可以访问这些数据,计算机可以通过TCP端口2947进行查询。Android手机、无人机、机器人潜艇、无人驾驶汽车、载人军事装备以及其他各种嵌入式系统中都可以找到它。

不幸的是,与Y2K漏洞类似,GPSD某些版本中的缺陷可能导致时间回滚2021年10月23日以后.据报道,该代码的bug版本将2021年10月24日的周数减去1024。这意味着使用破损的GPSD版本的NTP服务器会认为是2002年3月而不是2021年10月。

情况有多糟?

对于没有其他时间参考的计算机系统,回溯时间会导致一些安全问题。从事件处理和事件响应的角度来看,跨系统的良好同步时间有助于日志分析、取证活动和事件的相关性。忘记什么时候发生了什么,可能会导致错过事件。

更糟糕的是被拒之门外。使用有bug的GPSD版本的NTP服务器将被退回近20年。在许多情况下,网络时间协议(NTP)负责确保准确地保持时间。各种企业和组织都依赖于这些系统。基于时间的一次性密码(TOTP)和Kerberos等身份验证机制也严重依赖于时间。因此,如果时间严重不匹配,用户将无法进行身份验证并获得对系统的访问权。

在身份验证依赖于cookie的情况下也会发生同样的情况。依赖过期cookie的网站和服务对未来20年的cookie不会有良好的反应。

从经验来看,最近一次GPS周数重置为零是在2019年4月6日。许多gps设备在那天出现了问题,这些设备的设计并没有很好地考虑到翻转事件。其他设备在该日期之前或之后的几个月出现故障,需要软件或固件补丁来恢复其功能。

缓解

由于GPSD受影响的版本是3.20到3.22,用户应该升级到3.23.1。不推荐回到旧版本,如3.19和3.20,因为它们不受支持,而且有bug。对于使用GPS设备或依赖GPSD的组织,建议检查GPSD是否在基础设施的任何地方被使用,并检查其相应的版本。如果最近没有进行升级,很可能需要升级到GPSD。

对于系统管理员来说,记住2021年10月24日也是有好处的。如果已经进行身份验证的系统通常在周末之后开始出现身份验证问题,这可能是由于日期和时间不匹配造成的。

如果您希望完全避免这种回滚问题,可以添加GPS现代化计划向GPS系统发送民用信号。

个人而言

如果你的系统回到2002年,你能指示它告诉我投资比特币吗?