微盟癱瘓:一個程序員引發的20億血案


原創 東半球第二正經の 牛頓頓頓

2月23日,大批商家發現微盟服務器崩掉了,一時間,相關商城、小程序都無法登陸。


問題突發之後微盟官方一開始還甩鍋,遲遲沒有修復,這讓300W+使用微盟的商家停擺兩天,損失慘重。


微盟癱瘓:一個程序員引發的20億血案

微盟癱瘓:一個程序員引發的20億血案


01


一直到了25號,微盟才露面,暗戳戳的發了一個“自願公告”:


微盟癱瘓:一個程序員引發的20億血案

微盟癱瘓:一個程序員引發的20億血案


仔細研究一下這些公告,我們能發現很多“反常”的地方:


首先這個程序員的行為就很反常。


根據公告的信息,這個DBA是用自己的賬號,在晚上七點,通過個人VPN進跳板機刪的庫,事發之後很快被定位,第二天就被抓起來了。


用自己的賬號,沒用多重跳板偽裝,而且你看這個作案時間,對於整天加班熬夜的程序員們來說,下午七點等於剛上班啊,大家都在幹活,你去刪庫砸鍋,這跟把身份證貼臉上去搶銀行有啥區別?


同歸於盡啊,還是咋滴?


微盟癱瘓:一個程序員引發的20億血案


然後就是撲朔迷離的刪庫動機,一開始微盟發公告說是:因個人精神、生活等原因。


微盟癱瘓:一個程序員引發的20億血案


後來27號,微盟的老闆孫濤勇又解釋是因為這個程序員深陷網貸,在家裡悶了30多天,然後就把數據庫刪了。


微盟癱瘓:一個程序員引發的20億血案


這個就有點欺負大家的邏輯了,程序員借網貸他刪你數據庫幹什麼呢?


給平淡的生活找點刺兒嗎?沒有因果關係啊。


如果是缺錢的話,老哥這麼高的權限,在後臺隨便搞點什麼數據拿下來賣一賣,投入產出不比刪庫高嗎?為什麼去做這種損人不利己的事情呢?


難道刪庫只是為了找刺激?


微盟癱瘓:一個程序員引發的20億血案


再一個就是恢復的時間,23號出問題,預計到28號才“可能解決”,這意味著什麼?


微盟癱瘓:一個程序員引發的20億血案


懂點行的都知道,該類問題只要備份機制還奏效,有完整備份,直接回滾就可以,最多一兩個小時就能完事兒,如果需要這麼久,往往意味著破壞的非常嚴重。


整個事件梳理下來看一看:


這個老哥用自己的賬號,明目張膽刪庫,而且一出手就是下狠手,擊穿所有的應急預案和備份,直接把系統刪崩,回滾都沒得滾,擺明了是想要玉石俱焚。


微盟癱瘓:一個程序員引發的20億血案


一時間行業裡也是各種猜測,流傳著不少八卦,目前靴子還沒有落地,大家還是謹慎吃瓜比較好,靜觀事情發展:


微盟癱瘓:一個程序員引發的20億血案


一個員工,獨立操作,就能把一家上市公司的數據破壞到這種程度,甚至可以連備份一塊搞掉,權限隔離怎麼做的?無論他是一個什麼角色,都意味著微盟在後端管理的極度混亂。


這等於是把公司,還有幾百萬客戶的命都交到了這少數幾個人手上。


我堅持一個原則:人,永遠是商業活動中最大的變數


不管什麼時候,都不能把命讓別人攥在手裡,我見過太多人吃過這方面的虧了。


微盟癱瘓:一個程序員引發的20億血案


02


我早些年調查過技術服務這個行業,這裡面有些技術外包公司,路子非常野,“騷操作”特別多。


很多人根本無法想象,一個不穩定的程序員會給一個公司帶來這麼大的衝擊。少數幾個人,只要掌握了關鍵環節和關鍵技術,就能擁有巨大的破壞力和談判籌碼。


當時我調查的是一些中小規模的外包服務公司,當時他們賴以生存的整個行業生態是非常惡劣的。


一般來說項目合作初期,甲方會先付一部分定金,然後乙方就開始根據甲方需求,投入人力物力推項目。


到了項目中後期,往往需要自己掏腰包墊資,才能完成項目。


如果順利的話,最後成功拿到尾款,還能賺點辛苦費,但是很多時候,事情不會這麼簡單,東西是做出來了,服務也到位了,爸爸們往往拿了東西,把嘴一抹,立馬就變臉拖賬期,乙方還得繼續當舔狗,想盡一切辦法要尾款。


微盟癱瘓:一個程序員引發的20億血案


尤其是廣告公司,他們一般體量比較小,話語權又低。


財大氣粗的甲方爸爸們也不是直接說不給,就是賬期特別長,這兩年我見過的被賬期拖死的廣告公司,已經有幾十家了。


技術外包類公司也一樣。


但是,技術外包和廣告公司扮演的角色還不一樣,對於很多互聯網公司來說,數據是核心資產,系統是運行的命脈,技術扮演的角色非常關鍵。


根據牛頓第十二定律,我們可以得知:破壞永遠比建設更容易。


基於此,一些路子比較野的技術外包公司就玩起了“黑吃黑”。


微盟癱瘓:一個程序員引發的20億血案


這些公司會在開發初期的時候,直接就埋好後門,哪怕是項目交付了,正式投入使用了,要確保自己手裡仍舊掌握著主動權。


爸爸們要是不按照合同,按時打款,拖延賬期什麼的,那就等著系統三天兩頭出問題吧。


很多地方底層的商業生態就是這樣,一手交錢一手交貨最好。


這種週期比較長的項目,先給錢的往往拿不到貨,先給貨的就拿不到錢,這話,很多做服務類乙方的一定感同身受,他們總是扮演一個被“拿捏”的角色。


如果說為了要尾款,留後門是出於無奈,那麼路子更野的那些人,留定時BUG,邏輯炸彈,偷偷下載倒賣數據給競爭對手,那就是赤裸裸的壞了。


一魚八吃,在他們那裡,從來就不是夢。


微盟癱瘓:一個程序員引發的20億血案


03


一般來說,外包公司把項目做好之後,進入交付使用階段,還會籤一個長期維護的合同,費用通常在幾十萬。


常規的維護一年也能有個幾萬塊,主要是服務器運維、域名、常見的bug修復,應急事件處理等等。


一般來說,甲方開發系統,後期的維護會直接給負責開發的公司。


因為這個錢是easy money,能拴住客戶,榨到更多剩餘價值,於是為了拿到這個長期維護的合同,很多外包公司就會故意把程序寫得非常晦澀,或者是隱藏一部分關鍵內容,放一些只有自己內部知道的BUG。


這樣,來確保只有自己能吃到這塊肥肉。


因此自己人去做維護沒有一點問題,但只要甲方敢換人,一定三天兩頭出問題。


程序寫的繞過來,繞過去,對方刪也不敢刪,改也不敢改,很難定位到真正的問題所在。


這個時候,甲方就被吃定了。


主要是因為“沉沒成本”,開發系統的大頭都花了,客戶基本就已經被牢牢綁定了,根本沒法再找別人插手這個東西。


常規被吃點運維費用還能接受,但是,騷中自有騷上人。


微盟癱瘓:一個程序員引發的20億血案


04


有些外包公司,簡直是天天在違法的邊緣瘋狂試探,他們不光想要吃維護費,還會搞“釣魚修復”。


頭幾年一般比較老實,過個三四年,甲方就會發現,系統開始頻繁出問題了,外包公司就會藉著電腦系統老化,兼容性問題,數據庫需要優化,數據規模大了需要擴容等理由。


然後假模假樣搞優化和修復,趁機再大賺一筆。看上去忙活大半個月,其實可能只是註釋掉自己當年留下的一個定時Bug而已。


有自己技術團隊的大公司,可能還好點,但是完全技術外包的中小公司,錢該花的都花了,這個時候真是一點辦法沒有.自己沒有懂行的人,根本察覺不到,察覺到了也沒法驗證,就算驗證了,打官司也很難贏。


而外包公司這樣一通操作下來,一年又能多掙個幾萬塊。


行業裡面有很多這樣的外包公司,幹個3年5年,手裡攢著幾十個客戶,後面光吃維護,一年純掙個幾十萬不成問題,抱著聚寶盆美滋滋的吃紅利,這是一些外包公司的生財之道。


微盟癱瘓:一個程序員引發的20億血案


05


這個操作其實是相當普遍的,也不僅僅存在小公司,關注行業消息的可能知道,前幾年西門子也遇到過類似的事情。


不要以為西門子就是做冰箱的,家電業務只是西門子很小的一個板塊,真正牛逼的地方是軟件、信息系統和行業解決方案。


微盟癱瘓:一個程序員引發的20億血案


西門子之前有一個管理訂單用的電子表格需求,其實也不復雜,就是用自定義腳本更新庫存和訂單的信息,之前是外包給一個合同工設計的。


完成之後五六年的時間一直運行挺正常的,後來表格開始頻繁崩潰,然後西門子只能重新找他做維護,陸陸續續一共花了4萬多刀,直到後面事發突然,緊急修復,有其他工程師要到了管理密碼,才發現程序裡面藏了一個邏輯炸彈,會在特定的時間或者是特殊情況下誘導系統崩潰,然後事情才敗露。


類似這樣的還有很多,02年的時候UBS PaineWebber 的一個員工,在公司1500臺聯網的電腦裡面,偷偷摸摸把其中1000臺植入了邏輯炸彈。


然後想搞個大事故,整成負面新聞,配合起來做空公司的股價。


2002年3月4號,他植入進去的程序開始大規模刪文件,結果到最後公司也沒出什麼大問題,股價穩如老狗,最後事情敗露,自己賠進去了2萬多刀,還判了8年多。


微盟癱瘓:一個程序員引發的20億血案

結合著這個騷操作,我們再翻過來看一下微盟這段時間的股價變化:


微盟癱瘓:一個程序員引發的20億血案


歷史,還真是有趣呢。


這些技術起家,有資深技術團隊,監察系統比較完善的大公司相對而言會好很多,如果是非技術公司找外包的話,對方大概能有1萬種辦法,讓你跪下來叫爸爸。


所以說很多時候千萬不能小看程序員。


禿禿的腦袋下,往往藏著大大的力量。


微盟癱瘓:一個程序員引發的20億血案


06


雖然大家都在強調規範管理,權限隔離,多人驗證,但在實際操作當中,對於中小公司互聯網公司來說是很難做到的。


因為規範的流程意味著效率的降低,大多數公司,你真正參與進去的時候就會發現,很多制度表面上看起來嚴絲合縫,但是在關鍵位置的人,能找到1萬種方法把這個系統搞崩掉。


然而保證人不出問題是非常困難的,在我的經驗裡,人是所有的商業要素當中變數最大的一環。


所以我一直有這樣一個原則:真正的靠譜需要把別人的不靠譜也cover掉。


所以,我在解決問題的時候,尤其是比較重要的環節,一定會留預備方案,只要一個關鍵環節沒有雙保險,我就會重新考慮整件事的可行性。


只要一個環節出問題就全部完蛋,這種事情我是絕對不能接受的。從墨菲定律定律來理解,一件事,只要有可能往壞處發展,那麼只要時間夠長,這件事就一定會發生。


不要拿命來賭概率。


這些年很多規模不小的企業都選擇直接購買SaaS的解決方案而不是自建系統,但是微盟這個事情出現之後,我們是不是要重新考慮一下,SaaS要不要把數據管理的權限歸還給客戶?定期允許客戶自行備份相關的數據?或者提供更多災備手段?


對於互聯網公司來說,數據是最核心的資產,而且是不可再生的。


核心的商業資源一定要掌握主動權,把數據交出去,就是把生命線交出去。


微盟癱瘓:一個程序員引發的20億血案

公告中講到是28號修復,截止到發稿,很多商家的小程序仍舊還是維護狀態,對於使用服務的企業來說,停擺這麼久,無疑是巨大的損失。


一些公司幹了3年5年的數據、訂單、用戶信息都存在你這裡,萬一出了問題,如果一點補救措施都沒有的話,那些企業怎麼辦呢?損失誰來賠付呢?


不管是黑天鵝也好,灰犀牛也罷,程序員刪了庫也好,老闆跑路了也好,機房失火了也好,誰的責任先不說,總要有一些補救的辦法吧?


商業合作信任是必要的,但一定也是有限度的,無限度的信任就是把腦袋交出去。


這次危機,應該是整個SaaS行業需要認真考慮反省的一個時機。


分享到:


相關文章: