MyException - 我的异常网
当前位置:我的异常网» 综合 » 5年前的今天,一个小小的部署异常,让美股最大交易

5年前的今天,一个小小的部署异常,让美股最大交易商坠入深渊

www.MyException.Cn  网友分享于:2013-08-09  浏览:0次
5年前的今天,一个小小的部署错误,让美股最大交易商坠入深渊

郑昀(订阅号:老兵笔记) 创建于2017/7/29 最后更新于2017/7/31

提纲:

  1. 骑士资本集团的大麻烦

  2. 毁于冲马桶设计的潜艇

  3. 域名轻易被劫持

  4. 不可能被攻破的金库被盗

 

0x01 骑士资本集团的大麻烦

5年前的今天,因为一个小小的部署错误,

仅仅 45 分钟,

一家美国股市最大的交易商、纽交所以及纳斯达克的大庄家变得一钱不值。

 

2012年的时候,骑士资本是美国股票市场最大的经纪商,分别占有纽交所和纳斯达克 17% 的市场份额。

骑士资本的电子贸易部门管理的平均日交易量超过 33 亿股,交易额高达 210 亿美元。

截止到 2012 年 7 月 31 日,骑士资本拥有高达 3 亿 6500 万美元的现金及现金等价物。

 

在8月1日之前,骑士资本按照纽交所的项目计划,更新了算法程序 SMARS,它从交易平台接收大订单,然后根据买家或卖家的股票交易数量把大订单拆分成合适的小订单。

这次更新去掉了一些过时的代码,如 Power Peg,它已经 8 年没有用过了。

okay, take easy, 大公司里经常存在远古时代的代码,十年以上的代码仍抱残守缺继续运转,很正常。淘宝在长期使用 java 构建 web 项目后,也得出一个相同的结论:积重难返。

不用担心,测试完全通过,虽然更新后的代码改变了以前用来激活 Power Peg 功能的标识符,但代码非常可靠。

 

7月27日到7月31日,骑士资本把 SMARS 软件手动部署到公司为数不多的服务器上。

一共才 8 台。

不幸的是,漏了一台服务器。

因为没有其他技术人员对部署过程做复查,所以没有人发觉第 8 台服务器上的 Power Peg 代码并没有被移除。

灾难正在一分一秒地迫近。

 

2012年8月1日早上9点30分开盘后,很多交易员感觉到异乎寻常的事情发生了,某些个股涌现出大量不符合常理的订单,而且没有停止的迹象。

苍天啊,这个系统竟然没有断开的开关。

于是乎,在 45 分钟之内,骑士资本执行了超过日均交易额 50% 的订单,导致部分股票市值上升超过 10%,带来的连锁反应是其他股票价格暴跌。

由于没办法断开系统,也没有相关情况的预案说明,魂飞魄散的开发者只能在每分钟交易 800 万股的生产环境里调试。

因为没有能在线上发现问题,所以回滚了代码。

情况反而恶化了。

原本只是第 8 台上的 Power Seg 在疯狂地工作。

现在另外 7 台服务器上的 Power Seg 也加入了进来。

最后,骑士资本的技术人员终于想办法终止了交易系统,然而已经过去了 45 分钟。

 

灾难现场,狼藉一片。

 

在这 45 分钟里,

对于内行人来说,骑士资本建立了 80 支个股 35 亿美元的净多头仓位和 74 支个股 31 亿 5000 万美元的净空头仓位。

对外行人来说,骑士资本在 45 分钟内亏损了 4 亿 6000 万美元,而上文提到,骑士资本仅有 3亿6500万美元的资产,这意味着骑士资本破产了。

 

RCA类型:部署问题。

经验教训:

是人都会犯错。如果你常年靠手动发布,出错是大概率事件,灾难随时会到来。

部署应该是自动化且可重复的,这个过程应该尽量排除人为因素的干扰。

假如骑士资本采用的是自动部署系统——配置、部署和测试完全自动化,这场悲剧可能就不会发生了。

当然这是老生常谈了。

陈皓在《从Gitlab误删除数据库想到的》中说道:

一个公司的运维能力的强弱和你上线上环境敲命令是有关的,你越是喜欢上线敲命令,你的运维能力就越弱,越是通过自动化来处理问题,你的运维能力就越强。

这也就是我们常年致力于全流程自动化的原因,dont make me think!

这么思考问题的原因也很简单,我们笃信工程师文化,靠技术而不是管理解决问题。

 

(注:doug seven在2014年描述过这个悲伤的故事:https://dougseven.com/2014/04/17/knightmare-a-devops-cautionary-tale/)

 

 

0x02 毁于冲马桶设计的潜艇

二战期间,德国潜艇一度设计为将厕所的排泄物直接冲入大海,但这种设计的代价是只有在潜艇位于海面或海面附近的时候,才可以供人使用。随着潜艇下潜,潜艇外部的压力越来越大,就没办法冲厕所了。

随着战事的演进,美英发展出了能有效克制德国远洋潜艇的雷达、反潜机和护航战术。

因此,为了能让德国潜艇在水下潜行得更久,U-1206潜艇配备了新式的“深海高压厕所”,这种先进的清洁技术能够在深海高水压环境下直接将粪便排出潜艇。

 

这是一套相当复杂的程序,潜艇中的粪便被通过一系列管道运输至一个高压舱,然后被高压空气顶入海水。由于这套程序非常繁琐,以至于潜艇上必须有一名艇员接受专门培训,学习如何以正确的顺序控制阀门的开启和关闭。

 

1944年4月2日,施利特艇长率领 U-1206 潜艇首次执行战斗任务。

4月14日,施利特舰长去上厕所,他认为他会操纵这套程序,然而事情好像不太妙。

于是他寻求了厕所专家的帮助,错误并没有能被挽救。

事后看来,冲水程序反了,本来粪便要先送入高压舱,然后关闭厕所输送管道,再打开高压舱进行排便,没想到舰长操作成了先打开高压舱,粪便输送管道也没有关,于是海水直接从高压舱通过排便管道涌入潜艇,在巨大的水底高压下,这个管道也关不住了。

在水的重压下,潜艇像块石头一样迅速下沉。

 

更不幸的是,潜艇下潜时依赖于一组电池供电的电马达,这组电池组正好位于出故障的厕所下方。

海水与电池酸结合,产生了大量的氯气。

 

施利特艇长别无选择,只好命令潜艇抛掉所有鱼雷和配重水箱,迅速上浮。

上浮的位置正好位于苏格兰海岸线的视野范围内,所以艇长意识到这艘没有自卫能力、无处可逃的潜艇被击沉只是时间问题,于是炸沉了潜艇。

 

RCA类型:设计问题。

经验教训

dont make me think!

 

 

0x03 域名轻易被劫持

2013年5月11日,一个叫 mibboy 的人找到了域名服务商新网互联的一个漏洞,他在乌云网上提交了这个漏洞。

时间滴答滴答。

厂商没有第一时间回应。

5月12日晚间,mibboy 等不及厂商的确认了,可能混杂着青春、梦想、荣耀的情绪,他打算改一下土豆网的域名指向。

 

mibboy 在以前入侵过的一台韩国服务器上上传了 html 文件,总共花了两个小时,把 www.tudou.com 的 A 记录改为 116.126.142.182(韩国IP),可能还把负责解析土豆网域名的土豆网自建 DNS 改为由新网互联 DNS 解析。

 

劫持一个多小时后,mibboy 主动恢复了域名指向,并发邮件向土豆网运维部门致歉。

在这段时间内,国内网友甚至以为是韩国黑客联盟向中国互联网宣战……

5月13日,mibboy 的乌云网帐号被封。

 

仅仅一个月后,空袭警报再度来袭。

2013年6月12日17点,Finger 在乌云网上提交了域名服务商新网的漏洞。注意,新网互联是从新网分离出去的一家公司。

新网在5月12日兄弟公司新网互联爆出那么大漏洞、土豆网域名被劫持之后,仍忽略乌云网上自己的漏洞,确实难辞其咎,有洞不补大洞受苦。

Finger 本来想以新浪网的域名做示范,但发现新浪网域名有保护措施,所以选择了大众点评网。

 

由于新网未受理此漏洞,所以6月17日17点,该漏洞向公众公开。

6月17日22点,大众点评网的 Name Server 记录被改,而且大众点评网在新网的帐号密码被改。

22点24分,大众点评网运维工程师发现问题后,由于无法登陆新网的后台系统,联系新网客服又未果……

无奈之下,利用乌云网上公布的漏洞细节,采用同样的方法 hack 入新网后台,恢复了自家的 NS 记录。

但攻击者仍可以随时改回来。

大众点评网通过关系当晚找到新网高层,将域名设置为禁止更新,即与新浪网一样有了保护措施。

6月18日早上,新网修复漏洞,中午上线。

由于全国各地 DNS 更新较慢且不受控制,所以悲观估计,直至6月18日中午,大众点评网仍有部分服务受到此事件影响,如点评开放平台。

 

RCA类型:代码问题。

经验教训

有洞不补大洞受苦。

(注:以上案件详情可查看我的文章《5·12和6·17两知名网站域名被劫持事件实施过程回放》。)

 

 

0x04 不可能被攻破的金库被盗

比利时的安特卫普是世界上最大的钻石交易中心,平均每年都有价值超过百亿美元的钻石在这里被加工和出售。

2003年2月17日大清早,位于 Diamond Center 地下二层的金库报警,金库的保险柜被暴力破拆,大量钻石珠宝丢弃在地上,显然盗贼们无法带走所有的珠宝,经过测算,被盗的珠宝价值约一亿美金。

这个金库可不是一般的金库,它被丧心病狂地设计了十道安全措施:

1)一扇一英尺厚、三吨重的铁门。铁门上的转盘刻着0到99共100个数字,转盘被先后四次转动到正确的数字才能打开铁门。转盘上的数字只有转动轮盘的人通过一个小窗口看到,避免密码被偷窥。

2)输入数字的同时,还需要插入一把特制的钥匙。这把钥匙平时被分为钥匙头和钥匙身两部分,由不同安保人员分别保管。

3)铁门中有震动感应报警。

4)铁门上有磁场报警,夜晚时打开。

5)大门后还有一道铁栅栏,它由地面层警卫室的一个按钮远程控制。

6)金库内部有光感应器,

7)动作感应器,

8)红外线感应器,晚上七点之后,这三组感应器就会打开。

9)金库内外都有摄像头,地面层警卫室可以看到监控。

10)金库内的每一个保险箱都要同时输入密码和插入钥匙才能打开。锁住保险箱的铜质插销有半英尺粗,想把它切断或撬弯是很困难的。

 

如此安全的金库,在被盗贼横扫的时候,居然所有系统一切正常,没有任何报警!

电影剧本都不敢这么写。

盗贼们是怎么做到的?

涉及版权,此处不再张贴,请搜索关键词:

十一点半+安特卫普钻石中心。

 

主犯是一个意大利人,名叫 Leonardo Notarbartolo,他为此花了两年零三个月时间思考和反复做试验,最终得手。

到这里,你相信这几乎是完美犯罪。

然而,案发后的第五天,他就被捕了。

并不是警察们技高一筹,而是他和一位猪队友在逃离过程中犯了一个小小的错误。

 

RCA类型:设计问题。

经验教训

我在《安全基础教育第二季第1集:屡战屡败的找回密码》中讲到:

一,白帽子或黑客都很有耐心,他手里可能捏着你多个漏洞,他一直在等机会,他也有很多工具在扫在寻找机会。

二,一次成功的入侵渗透,并不需要是多么高危的漏洞,几个普普通通的中等漏洞,加上一次社会工程学行动,就可以杀进来。

 

故事就到这里。

灾难可能盘旋在你的头顶,你还懵懂未知。

哈哈。

 

-EOF-

欢迎订阅我的微信订阅号『老兵笔记』

文章评论

为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
程序员必看的十大电影
程序员必看的十大电影
程序员应该关注的一些事儿
程序员应该关注的一些事儿
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
 程序员的样子
程序员的样子
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
总结2014中国互联网十大段子
总结2014中国互联网十大段子
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
一个程序员的时间管理
一个程序员的时间管理
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
老程序员的下场
老程序员的下场
我的丈夫是个程序员
我的丈夫是个程序员
为什么程序员都是夜猫子
为什么程序员都是夜猫子
旅行,写作,编程
旅行,写作,编程
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
中美印日四国程序员比较
中美印日四国程序员比较
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
程序员都该阅读的书
程序员都该阅读的书
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
代码女神横空出世
代码女神横空出世
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
Java程序员必看电影
Java程序员必看电影
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
我是如何打败拖延症的
我是如何打败拖延症的
编程语言是女人
编程语言是女人
漫画:程序员的工作
漫画:程序员的工作
鲜为人知的编程真相
鲜为人知的编程真相
那些争议最大的编程观点
那些争议最大的编程观点
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
程序员和编码员之间的区别
程序员和编码员之间的区别
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有