你好,別惹我,我一個(gè) bug 就能讓你滾蛋。明星程序員非要上線一個(gè)新功能時(shí)。
我當(dāng)著全部門的面,直接紅牌罰下。「不行,這個(gè)版本有致命漏洞?!顾麣獾媚樁及琢恕?/p>
「你憑什么說有漏洞?代碼是我寫的,我最清楚!老板都等著開慶功宴了!」
可我就是不松口,死死摁住上線按鈕。他直接沖進(jìn) CEO 辦公室,聲淚俱下地告狀。
「老板!她就是嫉妒我,故意打壓新人!」「這個(gè)項(xiàng)目要是黃了,公司的損失她擔(dān)得起嗎?」
「她這是濫用職權(quán),想毀掉我的職業(yè)生涯?。 寡劭慈镜拿^都指向我。我冷笑一聲,
將他的代碼投到大屏上,并圈出其中一行?!副牬竽愕难劬辞宄@個(gè)后門,你想留給誰?
」01我的聲音不大,卻像一把冰錐,刺穿了會(huì)議室里浮躁的空氣。大屏幕上,
那行被我用紅色方框圈出的代碼,像一道丑陋的疤痕,烙在每個(gè)程序員的瞳孔里。張浩的臉,
瞬間從漲紅變成了慘白?!改恪愫f!這是……這是我留的測(cè)試接口!」
他的聲音發(fā)著抖,眼神躲閃,不敢與我對(duì)視。「測(cè)試接口?」我輕笑一聲,
手指在鍵盤上敲擊了幾下。屏幕上的代碼旁邊,立刻彈出了一連串的注釋和分析。
「一個(gè)需要連接到境外匿名服務(wù)器,并且擁有最高系統(tǒng)權(quán)限,
可以繞過所有防火墻和日志審計(jì)的測(cè)試接口?」「張浩,你當(dāng)在座的都是傻子,
還是覺得我們公司的法務(wù)是擺設(shè)?」我的話音剛落,技術(shù)部幾個(gè)資深的工程師臉色就變了。
他們湊近屏幕,反復(fù)確認(rèn)著那行代碼的邏輯。「天……這真的是個(gè)后門?!埂高@個(gè)IP地址,
我查了,在東歐的一個(gè)灰色地帶,根本無法追蹤?!埂敢坏┥暇€,
等于把我們整個(gè)用戶數(shù)據(jù)庫的鑰匙,交到了別人手上?!棺h論聲此起彼伏,像一把把小錘子,
敲在張浩脆弱的神經(jīng)上。CEO的臉色已經(jīng)不能用難看來形容了。他死死地盯著張浩,
眼神里是抑制不住的怒火和失望?!笍埡疲氵€有什么話說?」張浩嘴唇哆嗦著,
汗水從額角滑落?!咐习?,不是的,這是個(gè)誤會(huì)……」「我只是……我只是想在上線后,
方便自己進(jìn)行線上調(diào)試,絕對(duì)沒有別的意思!」他還在狡辯,試圖把惡意的后門,
粉飾成一個(gè)無傷大雅的技術(shù)失誤。我冷眼看著他拙劣的表演。「線上調(diào)試?」我切換了屏幕,
調(diào)出了這份代碼的git提交記錄?!改悄愀嬖V我,為什么這個(gè)所謂的『調(diào)試接口』,
是在最終封版前三分鐘,偽裝成一個(gè)『性能優(yōu)化』的補(bǔ)丁,偷偷提交上來的?」
「為什么整個(gè)代碼審查流程,你都完美地繞了過去?」「你甚至,沒有把這個(gè)版本,
提交給我做最后的安全審計(jì)?!刮颐繂栆痪?,張浩的臉色就白一分。提交記錄是鐵證,
上面清晰地記錄著他每一次的操作,時(shí)間、說明,一應(yīng)俱全。他百口莫辯。CEO的拳頭,
重重地砸在了會(huì)議桌上?!副0?!」「把張浩的工卡和電腦全部收走!」
「在事情調(diào)查清楚之前,暫停他的一切職務(wù)!」張浩癱倒在椅子上,面如死灰。他知道,
他的職業(yè)生涯,從我圈出那行代碼的瞬間,就已經(jīng)結(jié)束了。02保安沖了進(jìn)來,
一左一右架住了失魂落魄的張浩。他像一灘爛泥,被拖出了會(huì)議室。鬧劇收?qǐng)觯?/p>
會(huì)議室里卻依舊死寂。所有人都還沉浸在剛才的震驚之中。
一個(gè)被大家捧上神壇的明星程序員,竟然會(huì)在公司的核心產(chǎn)品里,埋下如此惡毒的后門。
這簡(jiǎn)直是匪夷所思。CEO揉著發(fā)痛的眉心,疲憊地看向我?!噶治矗@次……幸虧有你?!?/p>
他的聲音里帶著一絲后怕。如果我今天沒有堅(jiān)持,如果我被唾沫星子淹沒,選擇了妥協(xié)。
那么現(xiàn)在,慶功的香檳已經(jīng)打開,而公司的命脈,也已經(jīng)被人握在了手里。后果不堪設(shè)想。
「這是我的職責(zé)?!刮移届o地回答?!改闶窃趺窗l(fā)現(xiàn)的?」CEO問出了所有人心中的疑問,
「他隱藏得這么深。」「他不是隱藏得深,他是太自信了?!刮铱粗聊簧夏切写a。
「他篤定我是個(gè)只懂流程,不懂技術(shù)的QA(質(zhì)量保證),篤定封版前的最后時(shí)刻,
沒人會(huì)再去做代碼級(jí)的審計(jì)。」「他更篤定,他『明星程序員』的光環(huán),
可以壓過我這個(gè)『只會(huì)找茬』的攔路石?!刮翌D了頓,補(bǔ)充道?!钢豢上?,我有個(gè)習(xí)慣。」
「所有最終上線的版本,我都會(huì)親自,從頭到尾,把代碼再過一遍。」「這是我為自己,
也為公司上的最后一道保險(xiǎn)。」會(huì)議室里,幾位和我打交道比較多的技術(shù)人員,
都露出了恍然大悟的神情。他們都曾抱怨過我這個(gè)「多此一舉」的流程。現(xiàn)在看來,
這道保險(xiǎn),價(jià)值千金。CEO長(zhǎng)長(zhǎng)地舒了一口氣,眼神里的欣賞毫不掩飾?!笍慕裉炱穑?/p>
這個(gè)流程,將作為公司的最高發(fā)布準(zhǔn)則,永久執(zhí)行?!顾h(huán)視眾人,一字一句地宣布。
「任何人都不得有異議?!咕驮诖蠹乙詾槭虑楦嬉欢温鋾r(shí),被保安架到門口的張浩,
突然像瘋了一樣回頭。他掙脫了保安,猩紅著雙眼,用手指著會(huì)議室里的另一個(gè)人。
「不是我!」「不是我一個(gè)人的主意!」他嘶吼著,聲音凄厲?!甘撬∈撬屛疫@么做的!
」所有人的目光,都順著他手指的方向,落在了角落里一個(gè)沉默的身影上。
技術(shù)部的元老級(jí)工程師,李謙。一個(gè)平日里話不多,老實(shí)巴交,與世無爭(zhēng)的老好人。
李謙整個(gè)人都懵了,他扶了扶眼鏡,滿臉的不可置信。「張浩,你……你胡說什么?」
張浩卻像是抓住了最后一根救命稻草。「就是你!
你說這是公司給核心運(yùn)維團(tuán)隊(duì)留的秘密通道,為了應(yīng)付緊急故障!」「你說這是老板默許的!
是你騙我的!」一瞬間,整個(gè)會(huì)議室的空氣,再次凝固了。03李謙的臉漲得通紅,
氣得渾身發(fā)抖。「我沒有!我什么時(shí)候跟你說過這種話!」他是一個(gè)典型的老實(shí)人,
不善言辭,被人當(dāng)眾潑上這樣一盆臟水,急得連話都說不完整?!改憔陀?!」
張浩徹底豁出去了,開始胡編亂造?!干现芏挛纾杷g,就我們兩個(gè)人!
你親口跟我說的!你還說這是公司的潛規(guī)則,是給核心員工的信任!」他說得有鼻子有眼,
時(shí)間、地點(diǎn)、人物,要素齊全。一些不明真相的同事,看向李謙的眼神,開始變得有些微妙。
畢竟,一個(gè)是即將被開除的騙子,一個(gè)是公司的老實(shí)人。但萬一呢?萬一張浩說的是真的,
這背后其實(shí)是一個(gè)更深的陰謀?CEO的眉頭又一次緊緊鎖起。他看向李謙,
眼神中帶著審視?!咐钪t,他說的是真的嗎?」「老板,我沒有!」李謙急得快要哭了,
「我跟他就沒在茶水間單獨(dú)待過!他這是血口噴人!」「你有證據(jù)嗎?」張浩冷笑著反問,
「我也有證據(jù),證明我們當(dāng)時(shí)就在一起!」他拿出手機(jī),點(diǎn)開一張照片?!缚矗?/p>
這是茶水間的咖啡機(jī),我當(dāng)時(shí)拍下來問你要不要帶一杯,上面有時(shí)間戳!」
照片確實(shí)是茶水間的咖啡機(jī),時(shí)間也對(duì)得上。這下,連我都感到了一絲棘手。張浩這手栽贓,
玩得太臟了。他很清楚,這種私下的對(duì)話,根本無法證實(shí),也無法證偽。
但他只要成功地把水?dāng)嚋?,把李謙也拖下水,就能為自己爭(zhēng)取到喘息和周旋的時(shí)間。甚至,
可以把這件事,定性為公司內(nèi)部的派系斗爭(zhēng)。用心何其歹毒。就在李謙百口莫辯,
快要被這盆臟水淹沒時(shí)。我開口了?!笍埡?,你的表演很精彩?!刮易叩剿媲?,
拿過他的手機(jī)?!钢豢上В┒刺??!刮覍⑺氖謾C(jī)屏幕,投到大屏上。「你說,
你拍這張照片,是為了問李工要不要喝咖啡,對(duì)吧?」「對(duì)!」張浩梗著脖子。
「那你告訴我,你的聊天記錄里,為什么沒有把這張照片發(fā)給李工的記錄?」
「我……我后來當(dāng)面問他了!」「是嗎?」我笑了笑,「那你再解釋一下,
為什么這張照片的EXIF信息里,GPS定位,顯示的是在公司對(duì)面的那家商業(yè)銀行里?」
我話音剛落,全場(chǎng)皆驚。張浩的表情,瞬間凝固了。他大概從沒想過,一張隨手拍的照片,
竟然還記錄了地理位置信息。我沒給他反應(yīng)的機(jī)會(huì),繼續(xù)說道。「那個(gè)時(shí)間點(diǎn),
李工正在和我開一個(gè)需求評(píng)審會(huì),整個(gè)項(xiàng)目組的人都可以作證?!埂付悖瑥埡?,」
我的目光變得銳利,「你不在公司,你在銀行?!埂敢粋€(gè)上班時(shí)間,偷偷跑到銀行去的人,
現(xiàn)在卻拿著一張?jiān)阢y行拍的照片,來污蔑一個(gè)正在開會(huì)的同事?!埂笍埡?,你不覺得,
你的故事,編得太離譜了嗎?」04我的聲音在會(huì)議室里回蕩,每一個(gè)字都像一記重錘,
砸在張浩的謊言上。他的心理防線,徹底崩潰了?!覆弧皇堑摹顾Z無倫次,
眼神渙散,整個(gè)人像是被抽走了骨頭。CEO的耐心也到了極限?!赴阉麕ё?!立刻!馬上!
」這一次,保安沒有再給他任何機(jī)會(huì),直接將他拖了出去。一場(chǎng)鬧劇,
終于以一種無可辯駁的方式,落下了帷幕。CEO看向我,眼神復(fù)雜?!噶治?,
今天如果不是你……」「老板,」我打斷了他,「現(xiàn)在不是說這些的時(shí)候,
我們還有更重要的事情要做?!刮抑噶酥钙聊簧系拇a。「張浩不是一個(gè)人?!?/p>
「這個(gè)后門的復(fù)雜程度和隱蔽性,不像是一個(gè)人能完成的。
背后一定有更高明的黑客在指導(dǎo)他?!埂付?,他選擇在這個(gè)版本上線,一定有他的目的?!?/p>
我的話讓剛剛緩和的氣氛,再度緊張起來。CEO立刻明白了我的意思。
「你是說……競(jìng)爭(zhēng)對(duì)手?」「八九不離十?!刮已杆僭阪I盤上操作起來。
「我們必須立刻檢查公司所有核心代碼庫,排查是否還有類似的安全隱患?!埂竿瑫r(shí),
要對(duì)張浩所有的內(nèi)部通訊記錄,進(jìn)行篩查?!埂高€有他剛才提到的那家銀行,
他上班時(shí)間去那里做什么,也必須查清楚!」我的大腦在飛速運(yùn)轉(zhuǎn),一條條指令清晰地發(fā)出。
在巨大的危機(jī)面前,我沒有時(shí)間去享受勝利的喜悅,而是本能地進(jìn)入了戰(zhàn)斗狀態(tài)。
CEO完全采納了我的建議,立刻安排信息安全部、人事部、法務(wù)部,成立聯(lián)合調(diào)查組。
整個(gè)公司,像一臺(tái)精密的戰(zhàn)爭(zhēng)機(jī)器,開始高速運(yùn)轉(zhuǎn)。會(huì)議室的人漸漸散去,
各自投入到緊張的工作中。最后,只剩下我和CEO。他看著我,
忽然提起了一件毫不相干的舊事?!噶治矗氵€記得三年前的『藍(lán)鯨項(xiàng)目』嗎?」我的心,
猛地一沉。藍(lán)鯨項(xiàng)目。那是我職業(yè)生涯中,唯一的一個(gè)污點(diǎn),也是我心中一根拔不掉的刺。
那是我剛升任測(cè)試主管后,負(fù)責(zé)的第一個(gè)重大項(xiàng)目。項(xiàng)目上線當(dāng)晚,
發(fā)生了災(zāi)難性的數(shù)據(jù)庫雪崩,核心數(shù)據(jù)被大量污染和破壞。公司損失慘重,股價(jià)暴跌。
雖然事后查明,事故原因極其復(fù)雜,有第三方組件的未知漏洞,
也有服務(wù)器硬件的偶發(fā)性故障。但作為項(xiàng)目質(zhì)量的最終負(fù)責(zé)人,我難辭其咎。那段時(shí)間,
我成了全公司的罪人,背負(fù)了所有的指責(zé)和非議。如果不是CEO力排眾議保下了我,
我可能早就卷鋪蓋走人了。「我記得?!刮业穆曇粲行└蓾!改谴问鹿剩瑢?duì)你打擊很大。」
CEO的語氣,帶著一絲愧疚,「讓你背了黑鍋?!埂付歼^去了。」我搖了搖頭。
可就在我說出「過去了」這三個(gè)字的時(shí)候,一個(gè)瘋狂的念頭,像一道閃電,劈開了我的記憶。
藍(lán)鯨項(xiàng)目……張浩……那次事故中,有一個(gè)非常詭異的現(xiàn)象。數(shù)據(jù)庫的損壞,不是隨機(jī)的,
而是呈現(xiàn)出一種……一種帶有明顯邏輯性的、人為的破壞特征。但當(dāng)時(shí),
所有的證據(jù)都指向了硬件故障,我們最終也只能以此結(jié)案??墒恰绻遣皇枪收夏??
我猛地抬起頭,沖到大屏幕前,調(diào)出了張浩留下的那個(gè)后門代碼。我死死地盯著代碼的結(jié)構(gòu),
它的加密方式,它的混淆算法……一種熟悉的、令人毛骨悚然的感覺,涌上心頭。
這種寫法……這種獨(dú)一無二的、帶著炫技色彩的、屬于張浩的「代碼指紋」。和三年前,
我們從「藍(lán)鯨項(xiàng)目」損壞的數(shù)據(jù)庫日志里,搶救出來的那些無法解釋的、碎片化的……亂碼。
何其相似!我的血液,在瞬間凝固了。我轉(zhuǎn)過身,看著CEO,一字一句地說道?!咐习?,
我們可能……」「從一開始,就搞錯(cuò)了。」「『藍(lán)鯨項(xiàng)目』的崩潰,不是事故?!?/p>
「是人為的,徹頭徹尾的,蓄意破壞?!?5CEO臉上的血色,以肉眼可見的速度褪去。
他顯然也想到了這件事情的嚴(yán)重性。如果三年前的「藍(lán)令項(xiàng)目」不是事故,而是人為破壞,
那就意味著,公司內(nèi)部早就潛伏著一只巨大的蛀蟲。而我們,對(duì)此一無所知。
「你……有什么證據(jù)?」他的聲音有些發(fā)顫。「證據(jù)就在三年前的服務(wù)器硬盤里。」
我的大腦飛速運(yùn)轉(zhuǎn),無數(shù)被忽略的細(xì)節(jié),在這一刻串聯(lián)成線?!府?dāng)時(shí)我們都以為是數(shù)據(jù)損壞,
所以只做了數(shù)據(jù)恢復(fù),沒有對(duì)硬盤做底層的代碼取證?!?/p>
「但那些執(zhí)行破壞指令的碎片化代碼,一定還殘留在硬盤的某個(gè)扇區(qū)里!」
「張浩的代碼風(fēng)格,就像他的簽名一樣,獨(dú)一無二。只要對(duì)比,就一定能發(fā)現(xiàn)!」
CEO沒有絲毫猶豫,立刻抓起電話,打給了公司的首席信息官。「老王!
馬上啟動(dòng)最高安全預(yù)案!」「把三年前『藍(lán)鯨項(xiàng)目』的所有服務(wù)器硬盤,從封存庫里找出來!
」「對(duì),所有的!一塊都不能少!」「我不管你用什么方法,就算把硬盤泡在液氮里恢復(fù),
也必須把里面的原始數(shù)據(jù)給我挖出來!」他的吼聲在空曠的會(huì)議室里回響。掛掉電話,
他看向我,眼神里充滿了信任?!噶治矗{(diào)查組,由你來全權(quán)負(fù)責(zé)?!埂肝医o你最高的權(quán)限,
公司所有資源,任你調(diào)動(dòng)?!埂肝抑灰粋€(gè)結(jié)果?!埂负??!刮抑刂氐攸c(diǎn)了點(diǎn)頭。
這不僅僅是為了公司,更是為了三年前那個(gè)被冤枉、被誤解的自己。我必須要為自己,
討回一個(gè)公道。接下來的48小時(shí),我?guī)缀鯖]有合眼。我和信息安全部的同事們,
泡在冰冷的機(jī)房里。封存了三年的服務(wù)器硬盤,被小心翼翼地取了出來。
它們像一口口黑色的棺材,靜靜地躺在那里,埋葬著三年前的真相。數(shù)據(jù)恢復(fù)的過程,
異常艱難。但每當(dāng)看到一絲進(jìn)展,我的精神就會(huì)為之一振。與此同時(shí),對(duì)張浩的調(diào)查,
也有了突破性的進(jìn)展。法務(wù)部通過他那張銀行照片的GPS信息,向銀行申請(qǐng)了協(xié)查。
結(jié)果令人震驚。張浩根本不是去辦什么業(yè)務(wù)。他去的是銀行的保險(xiǎn)庫。他在那里,
有一個(gè)匿名的保險(xiǎn)箱。而更關(guān)鍵的是,就在他被抓的當(dāng)天下午,一個(gè)神秘人,用副鑰匙,
取走了保險(xiǎn)箱里的所有東西。線索,在這里斷了。另一邊,人事部也查到了張浩的入職背景。
他畢業(yè)于一所名不見經(jīng)傳的野雞大學(xué),簡(jiǎn)歷平平無奇。但進(jìn)入公司后,卻像開了竅一樣,
技術(shù)突飛猛進(jìn),很快就成了部門的明星。現(xiàn)在看來,他之前的平庸,全都是偽裝。
他從進(jìn)入公司的第一天起,就帶著不可告人的目的。就在所有線索都陷入僵局的時(shí)候,
機(jī)房里傳來一陣歡呼?!刚业搅?!」「林總,我們找到了!」
一個(gè)安全工程師激動(dòng)地朝我揮手。我立刻沖了過去。電腦屏幕上,一段殘缺的代碼,
被成功恢復(fù)。那段代碼的邏輯,無比刁鉆,無比惡毒。它偽裝成一個(gè)正常的數(shù)據(jù)庫同步程序,
卻在特定的時(shí)間點(diǎn),對(duì)數(shù)據(jù)進(jìn)行底層的、不可逆的篡改和刪除。而它的寫法,它的變量命名,
它那獨(dú)特的循環(huán)結(jié)構(gòu)……都帶著一種強(qiáng)烈的,屬于張浩的個(gè)人印記。鐵證如山。
我長(zhǎng)長(zhǎng)地吐出一口濁氣,三年來壓在心口的巨石,終于被搬開了。我拿出手機(jī),
正準(zhǔn)備向CEO匯報(bào)。一個(gè)陌生的號(hào)碼,卻打了進(jìn)來。我猶豫了一下,按下了接聽鍵。
電話那頭,傳來一個(gè)經(jīng)過變聲器處理的、陰冷的笑聲?!噶治?,對(duì)嗎?」「三年前,
你沒能抓住我?!埂溉旰?,你抓住了我的棋子,感覺如何?」我的瞳孔,驟然收縮。
是張浩的上線!06「你是誰?」我的聲音冰冷?!肝沂钦l不重要。」