基于随机数据重置系统时钟的Windows功能正在造成严重破坏

news2024/12/23 4:11:56

在这里插入图片描述
Windows安全时间播种会将时钟重置为偏离正确时间几个月或几年

几个月前,挪威数据中心的一名工程师遇到了一些令人困惑的错误,导致Windows服务器突然将其系统时钟重置为未来55天。该工程师依靠服务器来维护一个路由表,当手机号码从一个运营商转移到另一个运营商时,路由表会实时跟踪手机号码。八周的跳跃带来了可怕的后果,因为它导致尚未转移的号码被列为已经转移,而已经转移的号码被报告为待定。

“使用这些更新的路由表,许多人无法拨打电话,因为我们没有正确的状态!”这位工程师在一封电子邮件中写道,他要求只透露自己的名字Simen。“我们会将呼入和呼出的电话转给错误的接线员!这意味着,例如,孩子无法联系到他们的父母,反之亦然。”

引人注目的问题
去年8月,Simen遇到了类似的错误,当时一台运行Windows Server 2019的机器将其时钟重置为2023年1月,然后在不久后又将其改回。对神秘重置原因的故障排除受到了阻碍,因为工程师直到事件日志被清除后才发现它。55天的更新跳跃,在运行Windows Server 2016的机器上,促使他再次寻找原因,这一次,他找到了。

罪魁祸首是Windows中一个鲜为人知的功能,即安全时间播种。微软介绍2016年的计时功能是确保系统时钟准确的一种方式。时钟设置错误的Windows系统可能会导致灾难性的错误,如无法正确解析数字证书中的时间戳,或者过早、过晚或不按规定顺序执行作业。微软表示,安全时间播种是对电池供电的机载设备故障的对冲,这些设备旨在即使在机器断电时也能保持准确的时间。

“您可能会问,为什么设备不通过网络向最近的时间服务器询问当前时间?”微软工程师写道。由于设备无法通过网络安全地通信,因此它也无法通过网络安全地获取时间,除非您选择忽略网络安全,或者至少通过设置例外在网络上打几个洞

为了避免出现安全异常,安全时间播种根据机器与远程服务器进行的SSL握手中的数据来设置时间。每当两台设备使用安全套接字层协议进行连接时,就会发生这种握手,安全套接字层协议是一种提供加密HTTPS会话的机制(也称为传输层安全性).因为安全时间播种(在本文的其余部分缩写为STS)使用已经存储在本地的SSL证书,所以它可以确保机器安全地连接到远程服务器。微软工程师写道,该机制“帮助我们打破了客户端系统时间和安全密钥(包括SSL证书)之间的循环依赖。”

Simen不是唯一一个在关键任务环境中遇到Windows系统时钟疯狂和自发波动的人。去年的某个时候,另一位名叫肯的工程师开始看到类似的时间漂移。它们被限制在两到三台服务器上,每隔几个月就会发生一次。有时,时钟时间会跳几个星期。其他时候,时间变化到2159年。

“受此影响的服务器呈指数级增长,”肯在一封电子邮件中写道。“总的来说,在5,000台服务器中,我们有大约20台服务器(虚拟机)遇到过这种情况。因此,这不是一个巨大的数额,但它是相当可观的,尤其是考虑到它所造成的损害。它通常发生在数据库服务器上。当数据库服务器在时间上跳跃时,它会造成严重破坏,只要服务器在时间上有如此巨大的偏移,备份也不会运行。对于我们的客户来说,这一点至关重要。”

西蒙和肯都要求只透露他们的名字,因为他们没有得到雇主的授权在记录中发言,他们很快发现,自2016年以来,工程师和管理员一直在报告相同的时间重置。

例如,在2017年,一个系统管理员论坛中的Reddit用户据报告的用户为一所大学管理的一些Windows 10机器报告了不准确的时间,在某些情况下,过去多达31个小时。Reddit用户最终发现时间更改与中的Windows注册表项相关HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\SecureTimeLimits。额外的调查显示,时间变化也与一些人试图访问该大学网站时报告该网站使用的有效SSL证书无效的错误有关。管理员得出以下结论:

TLDR: Windows
10有一个名为安全时间的功能,默认情况下是开启的。它将来自SSL数据包的时间戳元数据相关联,并将它们与来自DCs的时间进行匹配。它通过黑魔法处理这些不同的时间,并相应地设置系统时钟。此功能可能会将系统时间设置为过去的任意时间。这种变化可能是由SSL流量问题引起的。

人们报告相同行为的其他例子——例如,这里和这里—追溯到2016年,STS推出后不久。最近关于有害的STS引起的时间变化的报道有这里, 这里,以及这里.

一名Reddit用户写道:“我们遇到了一个令人窒息的问题,一些生产系统的时间提前了17个小时。”“如果你已经玩了一个多星期,你就会知道这会造成多大的破坏。”

STS入门
为了确定当前时间,STS提取SSL握手中包含的一组元数据。具体来说,这些数据是:

  • 服务器运行时间,一种日期和时间表示形式,显示自1970年1月1日00:00:00 UTC以来经过的秒数
  • 从远程服务器的SSL证书获得的加密签名数据,显示该证书是否已被称为在线证书状态协议.

微软工程师表示,他们使用ServerUnixTime数据“假设它有些准确”,但在同一句话中继续承认它“也可能不正确”为了防止STS根据单个不同步的远程服务器提供的数据重置系统时钟,STS随机建立与多个服务器的SSL连接,以获得可靠的当前时间范围。然后,该机制将ServerUnixTime与OCSP有效期合并,以产生最小的可能时间范围,并为其分配置信度得分。当分数达到足够高的阈值时,Windows会将数据分类为STSHC,即高可信度安全时间种子的缩写。然后,STSHC用于监控系统时钟的“总误差”并纠正它们。

尽管STS内置了检查和平衡来确保它提供准确的时间估计,但时间跳跃表明该功能有时会进行几天、几周、几个月甚至几年的胡乱猜测。

“在这一点上,我们不完全确定为什么安全时间播种会这样做,”肯在一封电子邮件中写道。“看上去如此随意,很难理解。微软在试图追踪这件事上也没有真正有所帮助。我已经发送了日志和信息,但他们没有真正跟进。他们似乎对结案更感兴趣。”

Ken发送的日志看起来像下面两张截图中显示的那样。他们捕捉了STS改变时间前后发生的系统事件。第一幅图像中选择的行显示了STS根据SSL握手数据计算的正确时间的界限,以及用于证实它的试探法。

STS将系统日期重置为比当前日期晚几周的时间时,系统事件日志的屏幕截图
STS将系统日期重置为比当前日期晚几周的时间时,系统事件日志的屏幕截图
所选行正上方的“预计安全时间”条目显示,Windows估计当前日期为2023年10月20日,比系统时钟中显示的时间晚了四个多月。STS随后更改系统时钟,以匹配错误预测的安全时间,如“目标系统时间”所示

第二个图像显示了一个类似的场景,其中STS将日期从2023年6月10日更改为2023年7月5日。

与此同时,西蒙说,他也向微软的多个小组报告了时间重置。当报告微软的问题时反馈中心他说,今年5月,他没有收到公司的回复。然后他通过Microsoft安全响应中心六月。该呈件作为“非MSRC案件”结案,没有详细说明。

然后,该工程师联系了专门从事微软云安全的第三方作为中介。中介转发了微软的响应,建议当服务器通过接收到可靠的计时时,关闭STS网络时间协议.

“不幸的是,这一建议并没有公开,它仍然远远不足以阻止错误设计的功能继续在世界各地肆虐,”西蒙在一封电子邮件中写道。

警告:STS会“咬你的屁股”

西蒙说,他认为STS设计是基于对TLS规范的根本性误解。微软的STS的描述承认有些SSL实现根本不把服务器的当前系统时间放在ServerUnixTime字段中。相反,这些实现——最著名的是从2014年开始广泛使用的OpenSSL代码库——用随机值填充字段。微软的描述继续说,“我们观察到,大多数服务器在这个领域提供相当准确的值,其余的提供随机值。”

“错误的假设是大多数SSL实现返回服务器时间,”Simen说。“这可能在他们实现它时只有微软的生态系统中是正确的,但是在那个时候(当STS被引入时),OpenSSL已经是发送随机数据相反。"

虽然官方的微软谈话要点淡化STS的不可靠性,瑞安里斯,他的LinkedIn个人资料表明他是微软的高级Windows升级工程师,但当讨论STS去年在社交媒体上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/892948.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据传承之道:MySQL主从复制实践指南

😊 作者: 一恍过去 💖 主页: https://blog.csdn.net/zhuocailing3390 🎊 社区: Java技术栈交流 🎉 主题: 数据传承之道:MySQL主从复制实践指南 ⏱️ 创作时间&#…

多维时序 | MATLAB实现WOA-CNN-BiGRU-Attention多变量时间序列预测

多维时序 | MATLAB实现WOA-CNN-BiGRU-Attention多变量时间序列预测 目录 多维时序 | MATLAB实现WOA-CNN-BiGRU-Attention多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 多维时序 | MATLAB实现WOA-CNN-BiGRU-Attention多变量时间序列预测 1.程…

能耗监测管理系统在产业园区中的应用分析

摘要:随着电信公司企业级智能化办公系统的不断迭代优化及财务辅助系统与各个业务系统之间的壁垒不断打破、融合,能耗监测管理系统在企业生产运行管理中,为实现企业能耗数据归集,“节能减排、降本增效”提供了系统支撑及可行性保障…

tkinter高级布局:PanedWindow和notebook

文章目录 PanedWindownotebook tkinter系列: GUI初步💎布局💎绑定变量💎绑定事件💎消息框💎文件对话框Frame控件💎PanedWindow和notebook控件扫雷小游戏💎强行表白神器 tkinter传统…

小航助学GESP_C++一级模拟测试卷第2套(含题库答题软件账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统(含题库答题软件账号)_程序猿下山的博客-CSDN博客 需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统(含题库答题软件账号)_程序猿下山的博客-CSD…

用Java实现原神抽卡算法

哈喽~大家好,好久没有更新了,也确实遇到了很多事,这篇开始恢复更新,喜欢的话,可以给个的三连,什么?你要白嫖?那可以给个免费的赞麻。 🥇个人主页:个人主页​​…

Android DataStore:安全存储和轻松管理数据

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、人工智能等,希望大家多多支持。 目录 一、导读二、概览三、使用3.1 Preferences DataStore添加依赖数据读…

深度解析 Llama 2 的资源汇总:不容错过

“ 探索 Llama 2 背后的过程,包括了模型的全面解析,在线体验,微调,部署等,这份资源汇总将带您深入了解其内涵。” 01 — 周二发布了文章《中文大模型 Chinese-LLaMA-Alpaca-2 开源且可以商用》后,不少朋友们…

【Unity小技巧】Unity自制对象池和官方内置对象池的使用

文章目录 前言不使用对象池使用官方内置对象池应用 自制对象池总结源码参考完结 前言 发明对象池的人绝对是个天才,游戏中我们常常会遇到,频繁创建和销毁大量相同对象的场景,例如敌人子弹 如果我们不做任何处理,只是单纯的创建…

(stm32)低功耗模式

低功耗模式 执行哪个低功耗模式的程序判断流程 标志位设置操作一定要在WFI/WFE之前,调用此指令后立即进入睡眠判断流程 模式对比 睡眠模式 停止模式 待机模式

“绿心之眼”串联起“三大建筑”

本报记者 赵鹏 实习记者 池阳 通讯员 董浩程 步入夏末秋初的城市绿心森林公园,远远便看到在“三大建筑”间有块地面已悄然隆起,如同破土“种子”般正加速“萌发”。这枚生命之“种”泛着钢铁的颜色,一根根钢管编织起来,用叶脉的纹…

c语言每日一练(9)

前言:每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。每日一练系列会持续更新,暑假时三天之内必有一更,到了开学之后,将看学业情…

定位服务器CPU爆满的具体原因

1、查询CPU消耗的进程 使用top命令查看系统的CPU和内存使用情况 CPU一列是线程占用百分比 2、具体查看某个占分比大的进程 以为PId:7355为例, 执行top -Hp 7355,线程按照CPU使用率排序。 3、将线程PID转化为16进制 执行printf %x 7391,将…

三维模型OSGB格式轻量化重难点分析

三维模型OSGB格式轻量化重难点分析 在三维模型应用中,为了适应移动设备的硬件和网络限制等问题,OSGB格式轻量化处理已经成为一个重要的技术手段。但是,在实际应用中,OSGB格式轻量化仍然存在着一些重难点问题。下面将对这些问题进行…

视频云存储/安防监控/视频汇聚EasyCVR平台新增设备经纬度选取

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同,支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强,视频能力丰富,具体可实现视频监控直播、视频轮播、视频录像、…

Spring Clould 部署 - Docker

视频地址:微服务(SpringCloudRabbitMQDockerRedis搜索分布式) 初识Docker-什么是Docker(P42,P43) 微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中&…

两个案例熟悉String的基本操作

1、第一个案例 Java语言规范要求完全相同的字符串字面量,应该包含同样的Unicode字符序列(包含同一份码点序列的常量),并且必须是指向同一个String类实例。 package string; public class StringTest4 {public static void main(St…

【3Ds Max】挤出命令的简单使用(实现二维变三维)

简介 在3ds Max中,"挤出"(Extrude)是一种常用的建模操作,用于在平面或曲面上创建立体几何形状。以下是使用3ds Max中的挤出命令的基本步骤: 创建基本几何形状: 在3ds Max中创建一个基本的几何形…

免费开源的vue+express搭建的后台管理系统

此项目已开源 前端git地址:exp后台管理系统前端: exp后台管理系统前端 后端git地址:express后台管理系统: express后台管理系统 安装运行 npm i yarn i 前端: npm run dev | yarn dev 后端: npm run start | yarn start 主要技术栈 前端后端名称版本名…

Ant Design Pro 前端脚手架 配置混合导航

Ant Design Pro脚手架 点击查看阅读 混合导航: 顶部导航和侧边栏导航实现联动效果,点击不同的顶部导航按钮会显示对应的子菜单项。 实现点: 1. 路由的配置 菜单展示 我们可以在 route 中进行 menu 相关配置,来决定当前路由是否…