歷史上曾經多次出現因輸入錯誤而導致的大規模技術宕機及嚴重損失。
Amazon Web Services在經歷嚴重的S3服務宕機之后進行了全面檢查,而原因則被歸結為一點:輸入錯誤。輸入錯誤?!很多朋友一定對如此低級的肇事原因感到意外。但事實上,輸入錯誤長久以來一直困擾著技術行業,且曾經造成多次嚴重事故以及數十億美元損失。
云巨頭在對服務宕機事件進行解釋時,作出了以下說明。
Amazon簡單存儲服務(簡稱S3)團隊當時正在對一項導致S3計費系統運行速度低于預期的問題進行調試。當天上午9:37(太平洋時間),一位獲得授權的S3團隊成員根據一份已經確認的playbook執行一項命令,旨在移除某S3子系統內的少部分負責實現S3計費流程的服務器。遺憾的是,此命令中的一項輸入結果存在輸入錯誤,并因此導致大量服務器被意外移除。
不過對于AWS來說,好消息是因輸入錯誤導致問題的廠商絕不僅他們一家。下面來看其它一些因輸入錯誤而遭受重大損失的其它一些實例:
ZCoin公司,其在私人金融交易許可代碼當中不慎引發一項“輸入錯誤,導致代碼內多了一個字符,其允許攻擊者在不具備相應貨幣的前提下創建Zerocoin支付交易。”攻擊者共借此創造了約37萬個Zcoin,總價值高達40萬美元。Zcoin與比特幣類似,皆屬于一種基于加密算法的數字化貨幣。
2014年,OpenSSL Heartbleed bug給眾多用戶造成影響,而其原因竟是4個字節——約等于4個字符。這項輸入錯誤導致廣泛網絡陷入安全危機。
2013年,《財富》雜志回顧了有史以來規模最大的幾次Excel輸入錯誤災難。作為其中的共性因素,人們往往錯誤地添加條目、變更模型并造成數十億美元損失。其中的代表包括J.P.摩根公司于2012年因數筆錯誤交易而損失62億美元——其原因是該公司員工添加了一條本應進行平均求值的指標。
只要存在代碼,其中就基本離不開輸入錯誤。數據垃圾網站Priceonomics對美國宇航局于1962年發射但遭遇爆炸的金星火箭進行了審查,并發現這場災難是由于代碼當中多了一個額外的連字符。
可以肯定的是,輸入錯誤的歷史如同代碼存在的歷史一樣久遠。盡管我們能夠不斷開發出新的技術方案,但輸入錯誤這類問題恐怕還將在很長時間內困擾著每一位技術從業者