週一早晨,安全科技的審計團隊到了。
來了三個人:領隊是個三十多歲的男人,自稱吳工;一個二十出頭的女生,負責記錄;還有一個看起來經驗豐富的老工程師,話不多。
孫銘帶著他們到二十樓的臨時辦公室,林夕作為風險顧問全程陪同。張維也來了十分鍾,打了個招呼,說“拜托各位把好安全關”,然後離開——但他特意看了林夕一眼,眼神裏有種默契。
審計流程很標準:吳工先講解審計範圍和方法,然後開始檢視程式碼倉庫。區塊鏈專案的智慧合約部分已經開發了一小半,大概兩千行程式碼,主要是使用者身份驗證、資料上鏈、許可權控製這些基礎功能。
“我們先做靜態程式碼分析。”吳工說,“然後用工具掃描常見漏洞,最後人工審查業務邏輯。”
很專業的流程。林夕坐在角落,開啟筆記本,看似在做記錄,實際上在觀察。
觀察的重點不是程式碼,是人。
吳工和孫銘的交流很自然,就是普通的甲乙方溝通。但那個老工程師,林夕注意到,他看程式碼時偶爾會皺眉,然後在筆記本上快速記著什麽。
上午十點半,第一次發現。
老工程師指著一段程式碼:“這裏的許可權校驗有問題。require(msg.sender == owner)`隻檢查了呼叫者是不是合約所有者,但沒有檢查呼叫的函式是否允許公開呼叫。”
孫銘看過去:“這段程式碼是管理函式,隻有管理員能呼叫。”
“但這裏沒有做管理員身份校驗。”老工程師堅持,“任何人都可以呼叫這個函式,隻要傳入正確的引數格式,雖然會因為`msg.sender`校驗失敗,但會消耗gas,也可能暴露合約邏輯。”
吳工走過來看了看:“這個算中風險吧?記錄一下。”
“應該算高風險。”老工程師說,“許可權漏洞是智慧合約最常見也是最危險的問題。”
孫銘的臉色有點不好看:“我們後續會加校驗。”
“建議現在就改。”老工程師說,“審計報告裏我會寫‘必須修複’。”
吳工看了孫銘一眼,打圓場:“這樣,我們先記下來,後續看整體評估。”
林夕在筆記本上記下:老工程師專業,吳工傾向妥協。
中午,審計團隊去食堂吃飯。林夕找了個藉口沒去,留在辦公室。他快速瀏覽了老工程師的筆記——本子攤在桌上,沒合上。
筆記很工整,每個問題都有詳細描述、風險等級、修複建議。和吳工口頭說的“中風險”不同,老工程師私下標注的都是“高風險”或“嚴重”。
這個人,是認真的。
下午,審計繼續。吳工接了個電話,出去二十分鍾。回來時,表情有些微妙。
“吳工,有什麽問題嗎?”孫銘問。
“哦,沒有。”吳工笑了笑,“公司那邊有點事。咱們繼續。”
但接下來的審計,節奏明顯變了。吳工開始主導,老工程師的話變少。當老工程師又指出一個漏洞時,吳工說:“這個在以太坊最新版本裏已經修複了,不算問題。”
“但我們的合約要部署在多個鏈上。”老工程師說。
“那就加個備注吧。”吳工說,“記作‘相容性建議’。”
從“必須修複”到“建議”,區別很大。
林夕看在眼裏。
下午四點,王強來了。他端著一盤水果,笑容滿麵:“各位老師辛苦了,吃點水果休息一下。”
“王經理客氣了。”吳工站起來握手。
“怎麽樣,審計還順利嗎?”王強問。
“順利順利。”吳工說,“程式碼質量不錯,就一些小問題。”
“那就好。”王強看向林夕,“林夕,你覺得呢?”
“還在過程中,等完整報告吧。”林夕說。
“對對,要相信專業。”王強拍了拍吳工的肩膀,“吳工是這方麵的專家,我們很放心。”
話裏有話。
審計到五點半結束。吳工總結:“今天看了大概三分之一,發現了十幾個問題,基本是中低風險。明天我們繼續。”
散會後,林夕沒有立刻離開。他等人都走了,走到老工程師剛才坐的位置。桌上很幹淨,但垃圾桶裏有一張揉皺的紙。
他猶豫了一秒,撿起來展開。
是一張便簽,上麵是手寫的幾個詞:
“時間緊 要求放 注意態度”
字跡潦草,但能看清。沒有署名,但顯然是寫給某個人的。
林夕把便簽拍下來,然後把紙重新揉皺扔回垃圾桶。
剛做完這些,門開了。老工程師回來拿落下的水杯,看到林夕,愣了一下。
“林工還沒走?”他問。
“落東西了。”林夕說。
老工程師點點頭,拿了水杯,走到門口時忽然回頭:“林工,你是公司的風險顧問?”
“對。”
“那……你覺得審計應該是什麽標準?”老工程師問得很突然。
“客觀、公正、嚴格。”林夕說。
老工程師看了他幾秒,最後說:“嗯,應該這樣。”
他走了。
林夕站在原地,回味著那句話。老工程師在暗示什麽?
晚上,他約張維在樓下的咖啡館見麵。找了個角落的位置,周圍沒人。
“這是今天拍到的。”林夕把便箋照片給張維看。
張維看了一眼,冷笑:“果然。有人給審計團隊壓力了。”
“會是王浩嗎?還是周凱?”
“都有可能。”張維說,“但重要的是,這個老工程師看起來還有底線。我們要想辦法爭取他。”
“怎麽爭取?”
“給他一個機會,讓他按專業標準做事。”張維想了想,“明天審計繼續,我會找藉口讓你和老工程師單獨待一會兒。你跟他直說:我們需要一份真實的審計報告,不管誰施加壓力,公司高層要看到真相。”
“他會信嗎?”
“試試看。”張維說,“這種人,如果不是生活所迫,不會在這種公司待著。他可能也在等一個機會,做正確的事。”
“如果他不同意呢?”
“那就當我們看錯人了。”張維說,“但至少我們知道,審計報告不可信,要完全依賴鏈安科技那邊的結果。”
第二天,審計繼續。
上午十點,張維果然來了,說有個緊急會議,要孫銘和吳工參加。會議室裏隻剩下林夕、老工程師和那個做記錄的女生。
女生在刷手機。林夕走到老工程師旁邊:“陳工,有點技術問題想請教。”
老工程師抬起頭:“什麽問題?”
“關於昨天那個許可權漏洞。”林夕壓低聲音,“您認為是高風險,為什麽吳工要定為中風險?”
老工程師的眼神變了:“這是審計團隊的內部判斷。”
“但正確的風險評估,應該基於技術事實,而不是……其他因素。”林夕看著他,“陳工,我知道您是個專業的工程師。您也希望自己審計過的係統,真正安全吧?”
沉默。
老工程師看著螢幕,很久才說:“我做這行十五年,審計過幾百個係統。有些問題,我寫了‘必須修複’,但甲方說‘時間不夠’,最後就不了了之。後來出事了,他們又說‘審計公司沒發現問題’。”
“但這次不一樣。”林夕說,“這個專案對公司很重要,對您也很重要。如果因為妥協導致安全問題,您一輩子的聲譽就毀了。”
又是一陣沉默。
“你想要什麽?”老工程師問。
“一份真實的報告。”林夕說,“您按專業標準評估,該高風險就高風險,該必須修複就必須修複。其他的,我來處理。”
“你處理不了。”
“有人能。”林夕說,“張總,徐總,他們都在關注這個專案。他們需要真相,而不是粉飾過的報告。”
老工程師盯著林夕:“你是他們的人?”
“我是公司的人。”林夕說,“我希望公司好。”
這個答案似乎打動了老工程師。他深吸一口氣:“我可以給你一份真實的評估,但不會寫在正式報告裏。我會私下給你。”
“為什麽不能寫在正式報告裏?”
“因為合同。”老工程師苦笑,“合同規定了‘最終報告需經雙方確認’。如果我的評估和吳工的不一致,報告就出不去。”
林夕明白了。吳工掌握著最終決定權。
“那就私下給我。”林夕說,“我需要知道真實的風險。”
“好。”老工程師點頭,“今晚下班前,我發你郵箱。用哪個地址?”
林夕給了他不常用的那個郵箱。
十分鍾後,孫銘和吳工回來了。審計繼續。
下午,林夕明顯感覺到吳工在加速。一些複雜的邏輯,他隻是粗略看看,就說“沒問題”。老工程師幾次欲言又止,但最終沒說什麽。
五點半,審計第二天結束。吳工宣佈:“整體進度不錯,再有一天就能完成。目前看風險可控,大家放心。”
散會後,林夕回到自己工位。等到七點,郵箱提示音響起。
一封來自陌生地址的郵件,標題是“技術問題諮詢”。
點開,正文空著,但有一個附件:加密的壓縮包。密碼提示:“今天討論的第一個漏洞”。
林夕輸入那個許可權漏洞的描述,解壓成功。
裏麵是一份詳細的評估報告,格式正規,但沒蓋章。報告列出了37個問題,其中8個標為“高風險”,12個“中風險”,其餘“低風險”。每個問題都有詳細的描述、影響分析、修複建議。
而在報告的最後一頁,有一行備注:
“注:以上為個人專業評估,未考慮商務因素。實際風險可能高於此評估,因為部分深層次問題需要更多時間才能發現。建議延長審計週期,進行更全麵的測試。”
林夕把報告列印出來,小心收好。
然後,他給老工程師回了一封郵件,隻有兩個字:
“謝謝。”
沒有回複。
但一分鍾後,郵件顯示“已讀”。
林夕關掉電腦,看著窗外。
城市的夜晚又來了。
今天,他拿到了真相的碎片。
但碎片背後,
是更大的謎團:
為什麽吳工要妥協?
誰給他的壓力?
王強在這中間扮演什麽角色?
周凱知道多少?
而最重要的,
拿到這份真實的評估後,
他該怎麽做?
直接交給張維?
還是等鏈安科技的結果出來,對比後再行動?
他想起祖父教他下棋時的話:
“小夕,有時候你看到了一步好棋,但不能急著走。要先看看,走了這一步,對手會怎麽應,然後你再怎麽走。”
現在,他看到了好棋。
但對手,
可能已經準備好了,
十步之後的,
殺招。
他深吸一口氣,
把報告鎖進抽屜。
然後站起身,
走進夜色。
這場暗戰,
還遠未結束。
而他,
才剛剛摸到,
棋盤的溫度。