5年前的今天,一個小小的部署錯誤,讓美股最大交易商墜入深淵

鄭昀(訂閱號:老兵筆記) 創建於2017/7/29 最後更新於2017/7/31

提綱:

  1. 騎士資本集團的大麻煩
  2. 毀於沖馬桶設計的潛艇
  3. 域名輕易被劫持
  4. 不可能被攻破的金庫被盜

0x00 騎士資本集團的大麻煩

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年描述過這個悲傷的故事:dougseven.com/2014/04/1

0x01 毀於沖馬桶設計的潛艇

二戰期間,德國潛艇一度設計為將廁所的排泄物直接沖入大海,但這種設計的代價是只有在潛艇位於海面或海面附近的時候,才可以供人使用。隨著潛艇下潛,潛艇外部的壓力越來越大,就沒辦法沖廁所了。

隨著戰事的演進,美英發展出了能有效克制德國遠洋潛艇的雷達、反潛機和護航戰術。

因此,為了能讓德國潛艇在水下潛行得更久,U-1206潛艇配備了新式的「深海高壓廁所」,這種先進的清潔技術能夠在深海高水壓環境下直接將糞便排出潛艇。

這是一套相當複雜的程序,潛艇中的糞便被通過一系列管道運輸至一個高壓艙,然後被高壓空氣頂入海水。由於這套程序非常繁瑣,以至於潛艇上必須有一名艇員接受專門培訓,學習如何以正確的順序控制閥門的開啟和關閉。

1944年4月2日,施利特艇長率領 U-1206 潛艇首次執行戰鬥任務。

4月14日,施利特艦長去上廁所,他認為他會操縱這套程序,然而事情好像不太妙。

於是他尋求了廁所專家的幫助,錯誤並沒有能被挽救。

事後看來,沖水程序反了,本來糞便要先送入高壓艙,然後關閉廁所輸送管道,再打開高壓艙進行排便,沒想到艦長操作成了先打開高壓艙,糞便輸送管道也沒有關,於是海水直接從高壓艙通過排便管道湧入潛艇,在巨大的水底高壓下,這個管道也關不住了。

在水的重壓下,潛艇像塊石頭一樣迅速下沉。

更不幸的是,潛艇下潛時依賴於一組電池供電的電馬達,這組電池組正好位於出故障的廁所下方。

海水與電池酸結合,產生了大量的氯氣。

施利特艇長別無選擇,只好命令潛艇拋掉所有魚雷和配重水箱,迅速上浮。

上浮的位置正好位於蘇格蘭海岸線的視野範圍內,所以艇長意識到這艘沒有自衛能力、無處可逃的潛艇被擊沉只是時間問題,於是炸沉了潛艇。

RCA類型:設計問題。

經驗教訓

dont make me think!

0x02 域名輕易被劫持

2013年5月11日,一個叫 mibboy 的人找到了域名服務商新網互聯的一個漏洞,他在烏雲網上提交了這個漏洞。

時間滴答滴答。

廠商沒有第一時間回應。

5月12日晚間,mibboy 等不及廠商的確認了,可能混雜著青春、夢想、榮耀的情緒,他打算改一下土豆網的域名指向。

mibboy 在以前入侵過的一台韓國伺服器上上傳了 html 文件,總共花了兩個小時,把 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兩知名網站域名被劫持事件實施過程回放》。)

0x03 不可能被攻破的金庫被盜

比利時的安特衛普是世界上最大的鑽石交易中心,平均每年都有價值超過百億美元的鑽石在這裡被加工和出售。

2003年2月17日大清早,位於 Diamond Center 地下二層的金庫報警,金庫的保險柜被暴力破拆,大量鑽石珠寶丟棄在地上,顯然盜賊們無法帶走所有的珠寶,經過測算,被盜的珠寶價值約一億美金。

這個金庫可不是一般的金庫,它被喪心病狂地設計了十道安全措施:

1)一扇一英尺厚、三噸重的鐵門。鐵門上的轉盤刻著0到99共100個數字,轉盤被先後四次轉動到正確的數字才能打開鐵門。轉盤上的數字只有轉動輪盤的人通過一個小窗口看到,避免密碼被偷窺。

2)輸入數字的同時,還需要插入一把特製的鑰匙。這把鑰匙平時被分為鑰匙頭和鑰匙身兩部分,由不同安保人員分別保管。

3)鐵門中有震動感應報警。

4)鐵門上有磁場報警,夜晚時打開。

5)大門後還有一道鐵柵欄,它由地面層警衛室的一個按鈕遠程控制。

6)金庫內部有光感應器,

7)動作感應器,

8)紅外線感應器,晚上七點之後,這三組感應器就會打開。

9)金庫內外都有攝像頭,地面層警衛室可以看到監控。

10)金庫內的每一個保險箱都要同時輸入密碼和插入鑰匙才能打開。鎖住保險箱的銅質插銷有半英尺粗,想把它切斷或撬彎是很困難的。

如此安全的金庫,在被盜賊橫掃的時候,居然所有系統一切正常,沒有任何報警!

電影劇本都不敢這麼寫。

盜賊們是怎麼做到的?

涉及版權,此處不再張貼,請搜索關鍵詞:

十一點半+安特衛普鑽石中心

主犯是一個義大利人,名叫 Leonardo Notarbartolo,他為此花了兩年零三個月時間思考和反覆做試驗,最終得手。

到這裡,你相信這幾乎是完美犯罪。

然而,案發後的第五天,他就被捕了。

並不是警察們技高一籌,而是他和一位豬隊友在逃離過程中犯了一個小小的錯誤。

RCA類型:設計問題。

經驗教訓

我在《安全基礎教育第二季第1集:屢戰屢敗的找回密碼》中講到:

一,白帽子或黑客都很有耐心,他手裡可能捏著你多個漏洞,他一直在等機會,他也有很多工具在掃在尋找機會。

二,一次成功的入侵滲透,並不需要是多麼高危的漏洞,幾個普普通通的中等漏洞,加上一次社會工程學行動,就可以殺進來。

故事就到這裡。

災難可能盤旋在你的頭頂,你還懵懂未知。

哈哈。

-EOF-

歡迎訂閱我的微信訂閱號『老兵筆記』


推薦閱讀:

如何評價《加註吧!大牌》這擋節目?
怎樣正確的提醒領導臉上的鼻毛、鼻涕、眼屎?
20歲之後,我靠著這三件事情,不斷野蠻生長。
控制不住情緒的人,都過不好這一生
10年經驗告訴你:職場之中如何更獲領導賞識

TAG:信息技术IT | IT运维 | 职场 |