关于圣诞节和新年虫子的故事

你信不信魔术? 当然不是-这只是违反逻辑! 程序员是认真负责,受过良好教育的人,具有现实的眼光。 好吧,你小时候也不喜欢童话,是吗? 好的,我不会为您回答。 请给自己喝杯茶,剥橘子,看着窗外的雪花,然后继续阅读这个故事。

您将要读的是一个关于恶虫的故事,它多次破坏了圣诞平安夜和新年前夜。 它确实设法实现了其险恶的计划,但是幸运的是,在每个真实的童话故事中,邪恶总是被善良所反对。

圣诞树病毒

1987年12月17日,当时位于西德的克劳斯塔尔工业大学的一名学生,当时是一名初学者,他对他的朋友们产生了巧妙的圣诞节祝福。 他给他们送了一棵圣诞树! 当然,他没有在森林中砍伐它,甚至没有在商店里买过它。 他是程序员,还记得吗? 他只是用REXX脚本语言为VM / CMS编写了一个程序,该程序将在屏幕上绘制一棵漂亮的圣诞树并打印一些温馨的词。

图1 —圣诞树蠕虫

我们故事的主人公当然很好,但是Evil Bug干预了,使网络过载,并利用自我复制的圣诞节程序瘫痪了全世界两天的私人电子邮件网络IBM Vnet(链条是这样的:大学网络-EARN- BitNet-IBM Vnet)。 该英雄被怀疑是反英雄,他的感人问候是蠕虫。 程序员的恶意意图从未得到证明,但是Evil Bug确实参与了这个故事。

空前的慷慨演出

人们通常在圣诞节前夕和新年前夜交换礼物。 圣诞树下包装精美的盒子或壁炉旁悬挂着圣诞袜的可爱纪念品–这就是传统的圣诞节和新年礼物的样子。 但是,惊喜特别令人愉悦。

亚马逊是最早的互联网服务之一,每天有成千上万的各种商品买卖。 挑选礼物的理想场所! 这就是网站访问者在2014年12月12日所做的事情。巨大的兴奋是因为成千上万的商品以仅1便士的奇妙价格出售(来源)。 买家对亚马逊提供的如此精美的圣诞礼物深表谢意,买家热情地将他们的购物车装满。 同时,Evil Bug正在看着和嘲笑,期待着卖方的反应,而卖方对他们遭受的巨大损失一无所知。

该错误隐藏在负责同步在线商店价格的RepricerExpress软件中。 该软件使卖方能够迅速响应同类产品的价格波动,从而促进了竞争。

恶虫做了什么? 当它只经过开发和测试时,便潜入了RepricerExpress,直到直到……一位受困于节日前动荡的卖家意外地为所有股票设定了一个价格(1美分)后,才潜入RepricerExpress。 该软件将该价格作为最低价格,并相应地降低了其他卖家的同类产品的价格。

这种行为与以下事实有关:开发UI时,软件作者未实现允许卖方指定单个最低价格的功能。 更重要的是,价格将在一定间隔内自动更新。 该错误已在软件的后续版本中修复。

图2-固定用户界面(带有新添加的“您的最低价格”列)

漏洞的一天将被亚马逊卖家记住。 那天,他们损失了数千美元,许多人几乎破产了(来源)。 但是,对于亚马逊采取的迅速行动,该行动设法取消了对受影响物品的大部分订单,最大的在线商店的声誉将受到严重损害。

RepricerExpress开发人员在其官方博客上发布的声明中为该错误表示歉意。

苹果VS新年

还记得电影《格林奇如何偷走圣诞节》吗? 似乎在考虑制定攻击Apple设备的计划时,Evil Bug便将其作为灵感的来源。 2016年2月,Apple用户发现了一个有趣的错误。 社交网络上流传着一个传说,说如果您在iPhone或iPad上将日期更改为1970年1月1日,然后重新启动,系统将完全崩溃,并留下带有Apple标志的积木。 该过程据称是不可逆的。 据报道,该错误是在使用64位处理器的设备上发现的,例如Apple A7,A8,A8X,A9和A9X:iPhone 5S和更高版本,iPad Air和iPad Mini 2和更高版本以及第六代iPod Touch 。 操作系统的版本号无关紧要。

有人尝试过吗? 当然! 苹果小工具杀戮风席卷全球。 幸运的是,一些勤杂工找到了一种使“砖块”恢复生命的方法。 Apple从未透露过该错误的正式原因,但他们确实确认了在iOS设备上手动将日期更改为1970年5月或更早时,可能会发生该错误。

用户进行了自己的调查,并提出了以下解释:该错误可能是由用于以UNIX格式存储时间的负值变量引起的。 价值怎么会变成负数?

版本1。由于时间以UNIX格式存储,所以计时将从1970年1月1日开始,即该日期为零值。 更改时区时,该值可能会减小到零以下。

版本2。该错误是64位设备的典型错误,因此,可能首先计算了32位时间标记,然后在更改时区之后将其转换为指针大小,从而导致最高有效位被错误地填充,并且…欢迎来到第二十二世纪!

用iPhone睡个好觉

不会被闹钟打扰的长时间睡眠-这不是我们大多数人梦dream以求的吗? 尽管不是Gasprom,但iPhone确实实现了业主的梦想! 计划从2013年第一天开始的所有人都早早开始,并在设备上设置闹钟,直到1月1日“睡得很香”。 Evil Bug显然意味着要将大量用户变成“熟睡中的美女”,因为iPhone闹钟要到1月3日才能正常工作。

苹果希望再次保持沉默。 但是,有关该错误的可能原因的谣言仍在传播。 Apple使用金融公司广泛使用的ISO周日期标准,因为它可以方便地进行会计年度规划。 此标准的特殊之处在于,仅从一年的第一个星期四开始的那一周开始才考虑新的一年。 ISO周日期日历包含52或53周(364或371天),因此事实证明iPhone仍在上一年中使用,并于1月7日(一年的第一周开始)进入了新版本(2013年)。 。

还有另一种解释,史蒂夫·乔布斯本人亲自担任“恶虫”的角色。 据称,苹果创始人喜欢睡觉,因此具有“特色”。 当然,这只是个玩笑,但是这个看似无害的错误的后果却远非好笑:人们上班迟到,未能及时参加重要会议,而且损失了金钱(来源)。

航班已取消

软件错误的价格是开发人员永远不应忽略的因素。 这是另一个支持该声明的圣诞节错误故事。

2014年12月12日,英国国家空中交通服务(NATS)的空中交通管制中心面临软件故障,带来了一些机场的工作,包括希思罗机场,盖特威克机场,斯坦斯特德机场,伯明翰机场等重载巨人,卡迪夫和格拉斯哥停滞不前。 Evil Bug选择进行攻击的时间加剧了这个问题。 这是圣诞节前夕的一个星期五下午。

故障持续了半个小时以上(36分钟),但其背后的错误代价很高,如下图所示,Evil Bug可以引以为傲:

  • 取消92个航班
  • 暂停了170个航班
  • 10架飞机改道到备用机场
  • 125,000名乘客遇到不便
  • 遭受6.23亿磅的损失

这样的情况不会被忽视。 进行了调查。 民航局(CAA)和NATS在其最终报告中,描述了系统飞行服务器(SFS)软件中发现的错误。 SFS负责将数据实时传送到NATS管理系统内工作站的控制器。 有两个相同的SFS:主要和次要。 两者都计算相同的数据。 当主要的SFS关闭时,次要的SFS开始运行。 该系统确实提供了硬件故障,但由于某种原因缺乏针对软件异常的任何保护。

一次运行的最大允许运行工作站(即进行流量控制和监视的终端)的数量为193,至少在理论上是这样。 实际上,SFS的代码检查了另一个值151。这就是为什么当153个工作站尝试同时连接时,系统重置并随后崩溃。 后来发现,早在1990年就出现了“潜在软件故障”。令人惊讶的是它没有更早出现。

2000年和2038年的问题

2000年新年是最令人期待的一年。 正如各种专家所认为的那样,千禧年的到来肯定会伴随着启示录,或者同样令人恐惧的是机器的崛起。

他们为害怕终结者给出了哪些论点? 逻辑! 最初的计算机运行缓慢,因此程序员不愿意在琐事上浪费宝贵的性能,因此决定使用两位数来表示年份。 例如,1991年3月23日表示为23.03.91。 这个表示法是很好的并且对眼睛来说是正常的。 但是,从计算机的角度来看,这并不是那么简单。 2000年和1900年是用同一对数字00编码的,因此,当2000年新年开始时,其内部时钟将设置回1900年。

人们不禁看到这种可怕错误的可怕后果:软件崩溃,自发导弹发射,金融市场崩溃。 作为对新千年准备最差的国家,最可怕的事情预计将在俄罗斯发生。

好吧,2017年临近,这意味着启示录从未发生过。

也就是说,某些错误确实显示了新千年的到来:

  • 英国电信的计算机网络瘫痪了,工程师不得不分析大约一百万条代码行才能使其恢复活力。 英国电信为此付出了不菲的代价,约为5亿美元。
  • 在西班牙,幸运的是,在9个核电厂中发现了紧急情况,没有造成任何严重后果。
  • 在蒙古,“ 2000年问题”影响了铁路运营和售票处。

一些错误相当有趣:

  • 一所西班牙监狱的监禁期延长/削减了100年
  • 在一些希腊商店中,买家会收到1900年的销售单
  • 在韩国一家医院中,患者监控软件宣布一名1岁婴儿为99岁的老人
  • 美国一个小城镇的居民逾期电费超过100年

“ 2000年问题”是大众传媒对人类产生深远影响的一个突出例子。 出于类似原因,下一次大规模恐慌浪潮有望在2038年发生。2038年1月19日,格林威治时间03:14:07,使用32位操作系统的计算机和其他设备将不再能够正确地测量时间。 在许多设备中,系统时间以秒为单位,从1970年1月1日开始。秒存储在一个32位值的类型为signed int (32位带符号整数)的值中。 2038年初后不久,计数器将更新为2147483483648秒,系统将无法存储该秒,并切换为负值。

如何避免出现系统错误? 将所有32位处理器替换为64位处理器。

如何帮助好?

传统上,古德总是打败邪恶,但斗争并不会一stop而就。 有没有机会消灭所有邪恶的虫子? 那是不可能的,但是我们绝对有机会对他们的部队造成巨大的破坏。 为了做到这一点,在Good方面(即追求高质量代码)的程序员应该明智地选择工具来帮助他们。 使用PVS-Studio静态分析仪武装自己! 并且一定要看一下有关Unicorn PVS-Studio从Evil Bug拯救企鹅Linux的恐怖电影。

受到启发吗? 然后,让我们一起帮助Good! PVS-Studio团队已经为您提供了免费的分析仪版本,已经向前迈出了一大步。

亲爱的程序员,您的项目祝您好运,也许Good总是能赢得您的恶虫故事! 圣诞快乐,新年快乐!