第2章 第 2 章
客廳的燈只開了一盞,光落在木地板上,像一層薄薄的霧。雨停了,但窗框邊仍有水痕往下爬,玻璃外的城市燈點在濕氣裡暈開,像故意不讓你看清遠處。
溫若棠靠著牆,手機還握在手裡。螢幕早就暗了下去,那封郵件卻像還在發光,字一下一下烙在眼皮內側。她努力把呼吸調得平穩,像在做一場無人知曉的演示:情緒不可以外漏,聲音不可以顫,眼淚更不可以掉下來。
書房門半掩,鍵盤聲持續,規律得像心電圖。每一次敲擊都把她從亂掉的腦子裡拉回一點現實:他真的在查。他沒有問她為什麼會被盯上、沒有問她父親到底怎麼了。他只是把事情拿走,拆解,排程,做成可處理的任務。
這讓她更難受,也更安心。
她慢慢走到沙發邊坐下,身體僵直,像怕壓皺這段臨時拼湊的平靜。桌上有他剛才放下的水杯,杯壁凝了一圈小水珠。她想喝,喉嚨卻像被塞住。
她盯著那杯水,忽然想到沈予安今天白天說的那句話——別只會懂事。懂事的人從來不把麻煩往外丟,可麻煩不會因此消失,只會換個更難看的方式回來。
鍵盤聲停了一下,隨即又更快。像他看到某個不對的地方,開始加速追擊。
她的手機震動了一次,不是新郵件,是公司群組的系統通知:明天上午九點三十分,專案例會照常;附件更新;議程新增「外洩疑雲初步盤點」。短短一行字,像把已經燃起的焦躁又往上添了油。
她把手機翻面扣在腿上,閉了閉眼。她其實不怕工作,她怕的是那些會被拿去交易的東西:父親的病歷、欠款、她努力維持的體面。她更怕的是,這些一旦曝光,就會成為別人評估她價值的參數,像產品的缺陷清單,寫在投資委員會的備忘錄上。
書房裡傳來椅子拖動的聲音,接著是門被推開一點點。
程砚行站在門縫後,目光在客廳掃了一圈,最後落在她身上。他沒有走近,像怕靠近會驚動什麼,聲音也壓得很低。
「你有回那封信嗎?」
溫若棠搖頭,嘴唇有點乾。「沒有。」
「很好。」他像在確認一道門是否鎖好,「不要回。任何字都會變成對方抓你習慣、測你底線的資料。」
她怔了怔。她以為他會說「不要回,怕被定位」,沒想到他說的是習慣與底線,像這場攻擊不只是技術問題,還是心理戰。
程砚行又問:「你父親資料在哪些地方留下過?除了醫院。保險、公司、任何你簽過授權的地方。」
溫若棠的手指蜷起來。這問題像把她最不願意拆開的盒子直接搬到桌上。她習慣回答需求、回答規格,卻不習慣回答脆弱。
她咬了下舌尖,讓自己把話說完整。「保險有。去年他換過一次保單,健康告知寫得很細。還有……銀行,辦貸款延展的時候,有交過醫療證明。公司……沒有,我沒用公司資源處理家裡事。」
「你爸的手機、電腦?」他問得更具體,像在一個一個列出可能的外洩點。
「舊筆電。」她停了一下,「他不太會用,但有時候會拿去讓鄰居小孩幫忙弄。手機也給門市店員弄過,換過Sim卡。」
程砚行的眼神沉了一點。「這些都可能是入口。對方如果拿到你父親的身份資料,再去碰醫院端,難度不高。尤其很多系統只要知道姓名和身分證字號,就能在客服或第三方流程中挖到更多。」
溫若棠胸口發緊。「所以他真的可能……」
「目前不知道對方掌握程度。」他打斷她,不是無情,而是不讓她掉進想像的深淵,「我先做兩件事。第一,追郵件來源。第二,確認是否跟我們專案外洩同一條線。」
他說完,像想到什麼,轉身回書房,又停住,回頭看她。
「你去睡。」語氣像指令,但沒有命令的尖銳,更像把她從自己折磨自己那條路上推開。
溫若棠低聲說:「我睡不著。」
程砚行沉默了半秒,好像在搜尋一個比「睡」更可行的方案。他走出來,去廚房倒了杯溫水,再回客廳把杯子放到她面前。
「那就坐著。」他說,「但把水喝掉。你手很冷。」
她盯著杯子,手指碰到杯壁的溫度,才發現自己真的冷得不像話。她捧起來喝了一口,溫熱沿著喉嚨滑下去,像把那個被堵住的地方稍微融開。
程砚行沒有坐下,只站在她前方一點的位置,背後是走廊的陰影。他看著她,像要說什麼,又停住。最後他開口的方式仍舊是他熟悉的:條列、結論、避免情緒。
「明天醫院,我送你。你把需要辦的事情列出來,包含窗口、文件、付款方式。越具體越好。」
溫若棠點頭,習慣性地想說「我自己可以」但那句話卡在舌尖。她想到那封信,想到「站對邊」,想到如果明天在醫院有人等著拍照、等著套話,她一個人真的未必能處理。
她把那句話吞回去,只說:「好。」
程砚行像是鬆了一點點,卻又立刻把那一點鬆動收起來。「晚宴照去。但我們要先定口徑。」
「口徑?」她抬眼。
「對外。」他說,「我們的關係是什麼,怎麼回答,哪些能說,哪些不說。」他停了停,像自己也覺得這句話太赤裸,「你不用多說,跟著我。」
溫若棠的心跳快了一拍。這種「跟著我」在他嘴裡不是浪漫,而是戰術。可她卻聽出了另一層意思:他要把她放進他的防線裡。
她握緊杯子,指節泛白。「那許婧澄那邊……顧問團條款怎麼辦?她一直想把我們綁在她的顧問網裡。」
程砚行的眼神冷得更明顯。「我會拖。用合規、資安審核、責任歸屬拖。她要的是控制,我給她流程。」
溫若棠忽然笑了一下,很輕,像覺得荒謬又忍不住佩服。她一直覺得自己擅長把人情包成禮貌,程砚行則是把衝突包成程序。他們都擅長包裝,只是材料不同。
程砚行看著她那一下笑,像不太確定那是好還是壞,皺眉。「你笑什麼?」
溫若棠立刻收起表情,像把露出來的情緒拉回去。「沒什麼。只是……你很會用流程打人。」
他沒有接這個玩笑,只低聲說:「流程是最不容易被反咬的工具。」
說完他轉身回書房,門沒有關上,鍵盤聲再度響起。溫若棠捧著水杯,聽著那聲音,像聽著某種支撐她不崩的節奏。
時間往前推得很慢。她不知道自己坐了多久,可能半小時,也可能兩個小時。窗外的雨水在路燈下蒸起薄霧,樓下偶有車聲劃過濕地,像一條條短促的刮痕。
她終於還是站起來,走向書房。不是因為好奇,而是那種被晾在外面的不安越來越重。門半掩著,她抬手敲了敲。
鍵盤聲停下。
程砚行沒有說「進來」,他只是抬眼看她,像在判斷她是不是準備好聽答案。書房裡只有桌燈,光落在他的側臉上,把他鼻梁與眼窩的陰影刻得更深。他的螢幕上是密密麻麻的文字、時間戳記、IP、路徑,像一張看不見盡頭的網。
「你查到什麼了?」她問得很小心。
程砚行的手指在觸控板上滑了一下,把其中一段放大,語氣平直得像在報告。「郵件用的是一次性外部信箱,轉發過兩層。表面看不出來源。但第一層跳板的出口節點,有在我們公司附近出現過。」
溫若棠心裡一沉。「附近?你是說……同一棟樓?」
「不一定。」他說,「可能是同一個商圈的公共網路。也可能是有人故意選那個區域做煙霧。」他停了一下,像把最重要的東西往後放,「但更關鍵的是,郵件裡那句『投資委員會桌上』,不是隨便講的。對方知道許婧澄的流程,也知道晚宴會是測試點。」
溫若棠的指尖麻了一下。「所以可能是投資方的人?」
「不排除。」程砚行說,「但我更傾向於:對方想讓你以為是投資方。真正的攻擊者希望我們內鬥,或讓你在晚宴站錯邊,自己把自己推下去。」
他說得太冷靜,冷靜到像是旁觀一場棋局。溫若棠聽著,卻覺得胃裡翻起一陣酸。「那你說不是許婧澄風格……你確定嗎?」
程砚行抬眼看她,那眼神像把她也納入他的判斷模型。「許婧澄喜歡把條件擺在桌上,讓你以為你有選擇,實際上路只有一條。她不需要匿名威脅,她也不會拿病歷這種東西出手——太髒,也太容易留下把柄。她要的是你心甘情願站到她那邊,還覺得是自己做的決定。」
溫若棠忽然覺得背脊一陣發冷。因為這句話太準,準到像他比她更了解許婧澄。
「那是誰?」她問。
程砚行沒有立刻回答。他把畫面切到另一個視窗,裡面是他們專案環境的存取審計截圖,幾條記錄被他標了顏色。
「我剛把外洩案的存取日誌再拉一次。」他指了指其中一條,「這裡有一個服務帳號,叫做orion-svc,照理說只用來跑夜間同步。但上週有一次在非排程時間被喚醒,從我們的對象存儲桶拉了資料,還把資料丟去一個外部API端點。」
溫若棠的喉嚨乾得發疼。「那不是……你們自己設的帳號嗎?」
「是。」程砚行說,「所以外洩不是意外,也不是單純漏洞。是有人拿到這個帳號的權限,或者有人在內部改了它的行為。」
她站在桌前,覺得腳下像踩空了一塊。她很努力才讓聲音不要抖得太明顯。「這帳號權限誰有?」
「理論上只有兩個人能動。」程砚行說完,停了一秒,「我,和我們的SRE主管。」
溫若棠看著他,心裡浮起荒唐的念頭:所以嫌疑人裡包括他自己。可他說出來的時候,沒有一點迴避。
「你懷疑你自己?」她幾乎是下意識問。
「我只相信證據。」他淡淡說,「我可以是嫌疑人,直到我證明不是。」他視線回到螢幕上,「但我剛才確認,這次喚醒帳號的token不是從我們的金鑰管理系統正常簽出。它像是被複製了。」
溫若棠努力理解。「所以有人偷了你們的token?」
「或從某個能接觸到它的地方拿走。」他說,「這裡有一個線索:外部API端點的域名,註冊時間很新,但DNS解析使用了一家我們合作過的CDN供應商。」
溫若棠皺眉。「合作過的?」
「對。」程砚行指尖敲了敲桌面,像在壓住一股怒意,「那家供應商去年在校園徵才會找過我,當時有個人一直纏著問我們的架構。」
溫若棠心裡一跳。校園徵才會四個字像一條線,忽然把她拉回很久以前:那些看似光亮的青春、那些被誤會扭曲過的片段。她記得有段時間校內論壇傳過一些話,說程砚行靠關係拿資源、說他冷血,說他身邊的人都只是工具。她當時沒有站出來澄清,她選擇了沉默,因為她害怕被捲進去,害怕自己的完美形象被拖下水。
她一直以為那只是年少的噪音,沒想到可能還在回音。
她不敢看他太久,怕他從她眼裡讀出什麼。
「你要查那家供應商?」她轉移話題。
「會。」程砚行說,「但不能打草驚蛇。我會先把我們的token輪換,改掉那個服務帳號的權限模型,然後看對方怎麼反應。對方如果還想拿資料,就會再出手。」
溫若棠的心臟縮緊。「那我父親的資料……跟這條線有關嗎?」
「可能。」程砚行說,「對方一邊做技術外洩,一邊做個資勒索,目的可能是逼我們在晚宴上做出某個姿態。」他看著她,語氣突然更硬了一點,「他選你當入口,因為你有把柄,也因為你習慣自己扛。」
溫若棠像被戳中,指尖一痛。她想反駁,卻說不出話。
程砚行卻在那一瞬間把語氣放緩了些,像意識到自己太直接。「我不是怪你。」
他不會說「對不起」,他也不太會說「我怕你受傷」。他能給的,是把責任往自己身上拉一點。
「我知道。」溫若棠低聲說。她停了停,終於問出那個讓她一直繞著走的問題,「你要不要告訴沈予安?」
程砚行的眉頭微不可察地動了動,像對那個名字本能不耐。「他嘴很快。」
「但他不是外人。」溫若棠看著他,努力讓自己別太像在替沈予安辯護,「而且……明天公司例會會討論外洩疑雲。他會察覺我不對勁。」
程砚行沉默片刻,像在權衡。最後他說:「可以告訴他一部分。不要提你父親病歷的威脅細節,先說你收到匿名勒索,跟外洩案可能有關。讓他幫忙看內部log,找異常存取。工程師能幫的地方,他比較有用。」
這句話聽起來像夾槍帶棒,卻是同意。溫若棠心口微微一鬆。
她以為談到這裡就結束了,程砚行卻忽然問:「你父親明天要做什麼檢查?」
溫若棠愣住。「只是復診,還有一些文件要補。醫院說要重新簽同意書,可能跟轉院評估有關。」
「你母親呢?」他問得很自然,像在補齊行程的參數。
溫若棠的眼神閃了一下。「她……不太能出面。」
程砚行看著她,那眼神不逼問,卻不放過。「為什麼?」
她的喉嚨像被繃緊的線勒住。她擅長把情緒包成禮貌,但此刻在書房這盞小燈下,那些禮貌像被照得太亮,反而顯得薄。
她努力用最簡短、最不麻煩人的方式說:「她跟我爸的狀況很差。他們……吵得很兇。她不想去醫院,也不想被看到。」
程砚行的手停在鍵盤上,沒有追問細節,只點頭,像把這項風險納入方案。「明天我陪你辦。辦完我送你回公司。醫院那邊我會安排人盯一下動線。」
「你安排誰?」溫若棠本能地警覺,「你別找那種很誇張的保全……」
「不會。」程砚行說,「我朋友的公司有做企業資安和風險顧問,偶爾也接隨行保護。是便衣,像一般人。你不會被盯得不舒服。」
「你連這種朋友都有?」她語氣不自覺帶出一點苦笑。
程砚行只回了一句:「必要的時候有用。」
那句話說完,他像忽然意識到這些安排本身也許會讓她壓力更大,於是補上一句,生硬卻真實:「你如果不想,也可以不要。」
溫若棠看著他,心裡那個一直提醒她「別成為負擔」的聲音又冒出來:你不能讓他為你花這麼多,你們只是合約,你不能把他的生活搞亂。
可另一個聲音更小、卻更頑固:你已經被盯上了,你逞強只會害死自己,也害死他。
她把手心的汗擦在褲縫上,終於說:「我想要。」
程砚行的表情沒有太大變化,但他的肩線像鬆了一點。他點頭,像把某個「允許」收進心裡,然後把視線移回螢幕,像怕再多看她一秒就會失控。
「還有一件事。」他說,「晚宴那天,如果有人問你關於顧問團條款,你不要回答『我不知道』。」
溫若棠皺眉。「那要回答什麼?」
「回答:我們內部正在做合規風險評估,任何涉及客戶資料的綁定條款都需要完整審核。」他語氣平淡,卻像在教她如何把話說得無懈可擊,「你是產品經理,你可以名正言順講這句。這不會得罪人,因為聽起來很專業,也很中立。」
溫若棠看著他,心裡有某個地方被戳了一下。她突然意識到,他不只是要她在晚宴上「跟著他」,他是在把她武裝起來,讓她有自己站住的方式。
「你怕我被當籌碼?」她忍不住問。
程砚行的指尖停住,過了兩秒才說:「你本來就被當籌碼。」
這句話很殘酷,卻不是為了傷她,而是把世界的算法攤開給她看。溫若棠吸了一口氣,眼眶發熱,但她忍住了。她不想在他面前哭,不想讓自己看起來像需要被救。
可是她也終於承認,她真的需要被撐一下。
「程砚行。」她輕聲叫他全名。
他抬眼。
她本來想說謝謝,想說對不起,想說你不用為我做到這樣。話到嘴邊,卻忽然變成另一句:「我明天……如果我撐不住,我可以跟你說嗎?」
書房裡安靜了一瞬。連窗外的車聲都像遠了。
程砚行的喉結動了一下。他看著她,像在處理一個比任何攻擊都難的請求。親密對他而言不是甜,是風險,是不可控變數。可他沒有退。
他只用很低的聲音回:「可以。」
一個字,像把她胸口那根緊繃的線稍微剪斷。她點頭,怕自己再多待一秒就會真的哭出來,轉身想走。
「若棠。」他又叫住她。
她回頭。
程砚行把手機從桌上拿起來,丟給她。不是她的,是他的。
「把你的手機暫時別用來收重要訊息。」他說,「用這支。明天你跟醫院窗口、付款、任何敏感資料的溝通,用這支。這支我有做加密和監控。你的那支……可能已經被人盯上。」
溫若棠接住手機,手心一沉。那份重量讓她有點想笑又想哭。她一直以為自己最擅長的是把事情整理好,結果今晚她得到的是一支被加密過的手機,像被迫承認:她真的需要別人的保護。
她低聲說:「那你呢?你用什麼?」
「我還有。」他語氣淡淡。
她抱著那支手機,站在門口,忽然想到一件事。「對方說『站對邊』……你覺得他要我站哪邊?許婧澄那邊,還是……」
她沒有把話說完。她不敢說「你」,因為那聽起來像她把他當成對立面,像她在問:如果我不站你這邊,你會不會怪我。
程砚行看著她,目光沉靜。「他要你站在能讓你最害怕的位置。因為人在害怕時,最容易被操控。」
溫若棠的指尖微微一顫。
程砚行又補了一句,像把話說給她的恐懼聽:「明天你只要做一件事。遇到任何不對,第一時間看我。」
溫若棠點頭,轉身離開書房。她回到客廳,才發現自己一直用力咬著牙,咬得下顎發酸。她走到窗邊,手指碰到玻璃,冰涼的觸感讓她稍微清醒。
她打開程砚行給的手機,螢幕乾淨,沒有多餘的App。通訊錄裡只有幾個名字:程砚行、公司法務、某個不認識的縮寫「R.K」。她正要放下,手機忽然跳出一則訊息提示,來自未知號碼,顯示為系統簡訊格式,內容短到像錯覺:
明天醫院,別帶他進去。你知道他做過什麼。
溫若棠的呼吸猛地一滯,手心的溫度瞬間退去。她盯著那行字,腦子裡轟的一聲,把那個被她刻意遺忘的校園傳聞、那個「他做過什麼」的影子全部扯回來。
她抬頭看向書房的門縫,鍵盤聲仍在,像什麼都沒發生。她卻覺得自己站在兩條路的交叉口:一邊是他給她的安全方案,一邊是對方刻意投進她心裡的毒。
她握緊手機,指節發白。她沒有立刻走進書房叫他,也沒有立刻刪掉那則訊息。她只是站在原地,聽著鍵盤聲,心跳快得像要把胸腔撞開。
對方不只要錢,不只要條款,不只要她站邊。
對方要她開始懷疑他。
溫若棠靠著牆,手機還握在手裡。螢幕早就暗了下去,那封郵件卻像還在發光,字一下一下烙在眼皮內側。她努力把呼吸調得平穩,像在做一場無人知曉的演示:情緒不可以外漏,聲音不可以顫,眼淚更不可以掉下來。
書房門半掩,鍵盤聲持續,規律得像心電圖。每一次敲擊都把她從亂掉的腦子裡拉回一點現實:他真的在查。他沒有問她為什麼會被盯上、沒有問她父親到底怎麼了。他只是把事情拿走,拆解,排程,做成可處理的任務。
這讓她更難受,也更安心。
她慢慢走到沙發邊坐下,身體僵直,像怕壓皺這段臨時拼湊的平靜。桌上有他剛才放下的水杯,杯壁凝了一圈小水珠。她想喝,喉嚨卻像被塞住。
她盯著那杯水,忽然想到沈予安今天白天說的那句話——別只會懂事。懂事的人從來不把麻煩往外丟,可麻煩不會因此消失,只會換個更難看的方式回來。
鍵盤聲停了一下,隨即又更快。像他看到某個不對的地方,開始加速追擊。
她的手機震動了一次,不是新郵件,是公司群組的系統通知:明天上午九點三十分,專案例會照常;附件更新;議程新增「外洩疑雲初步盤點」。短短一行字,像把已經燃起的焦躁又往上添了油。
她把手機翻面扣在腿上,閉了閉眼。她其實不怕工作,她怕的是那些會被拿去交易的東西:父親的病歷、欠款、她努力維持的體面。她更怕的是,這些一旦曝光,就會成為別人評估她價值的參數,像產品的缺陷清單,寫在投資委員會的備忘錄上。
書房裡傳來椅子拖動的聲音,接著是門被推開一點點。
程砚行站在門縫後,目光在客廳掃了一圈,最後落在她身上。他沒有走近,像怕靠近會驚動什麼,聲音也壓得很低。
「你有回那封信嗎?」
溫若棠搖頭,嘴唇有點乾。「沒有。」
「很好。」他像在確認一道門是否鎖好,「不要回。任何字都會變成對方抓你習慣、測你底線的資料。」
她怔了怔。她以為他會說「不要回,怕被定位」,沒想到他說的是習慣與底線,像這場攻擊不只是技術問題,還是心理戰。
程砚行又問:「你父親資料在哪些地方留下過?除了醫院。保險、公司、任何你簽過授權的地方。」
溫若棠的手指蜷起來。這問題像把她最不願意拆開的盒子直接搬到桌上。她習慣回答需求、回答規格,卻不習慣回答脆弱。
她咬了下舌尖,讓自己把話說完整。「保險有。去年他換過一次保單,健康告知寫得很細。還有……銀行,辦貸款延展的時候,有交過醫療證明。公司……沒有,我沒用公司資源處理家裡事。」
「你爸的手機、電腦?」他問得更具體,像在一個一個列出可能的外洩點。
「舊筆電。」她停了一下,「他不太會用,但有時候會拿去讓鄰居小孩幫忙弄。手機也給門市店員弄過,換過Sim卡。」
程砚行的眼神沉了一點。「這些都可能是入口。對方如果拿到你父親的身份資料,再去碰醫院端,難度不高。尤其很多系統只要知道姓名和身分證字號,就能在客服或第三方流程中挖到更多。」
溫若棠胸口發緊。「所以他真的可能……」
「目前不知道對方掌握程度。」他打斷她,不是無情,而是不讓她掉進想像的深淵,「我先做兩件事。第一,追郵件來源。第二,確認是否跟我們專案外洩同一條線。」
他說完,像想到什麼,轉身回書房,又停住,回頭看她。
「你去睡。」語氣像指令,但沒有命令的尖銳,更像把她從自己折磨自己那條路上推開。
溫若棠低聲說:「我睡不著。」
程砚行沉默了半秒,好像在搜尋一個比「睡」更可行的方案。他走出來,去廚房倒了杯溫水,再回客廳把杯子放到她面前。
「那就坐著。」他說,「但把水喝掉。你手很冷。」
她盯著杯子,手指碰到杯壁的溫度,才發現自己真的冷得不像話。她捧起來喝了一口,溫熱沿著喉嚨滑下去,像把那個被堵住的地方稍微融開。
程砚行沒有坐下,只站在她前方一點的位置,背後是走廊的陰影。他看著她,像要說什麼,又停住。最後他開口的方式仍舊是他熟悉的:條列、結論、避免情緒。
「明天醫院,我送你。你把需要辦的事情列出來,包含窗口、文件、付款方式。越具體越好。」
溫若棠點頭,習慣性地想說「我自己可以」但那句話卡在舌尖。她想到那封信,想到「站對邊」,想到如果明天在醫院有人等著拍照、等著套話,她一個人真的未必能處理。
她把那句話吞回去,只說:「好。」
程砚行像是鬆了一點點,卻又立刻把那一點鬆動收起來。「晚宴照去。但我們要先定口徑。」
「口徑?」她抬眼。
「對外。」他說,「我們的關係是什麼,怎麼回答,哪些能說,哪些不說。」他停了停,像自己也覺得這句話太赤裸,「你不用多說,跟著我。」
溫若棠的心跳快了一拍。這種「跟著我」在他嘴裡不是浪漫,而是戰術。可她卻聽出了另一層意思:他要把她放進他的防線裡。
她握緊杯子,指節泛白。「那許婧澄那邊……顧問團條款怎麼辦?她一直想把我們綁在她的顧問網裡。」
程砚行的眼神冷得更明顯。「我會拖。用合規、資安審核、責任歸屬拖。她要的是控制,我給她流程。」
溫若棠忽然笑了一下,很輕,像覺得荒謬又忍不住佩服。她一直覺得自己擅長把人情包成禮貌,程砚行則是把衝突包成程序。他們都擅長包裝,只是材料不同。
程砚行看著她那一下笑,像不太確定那是好還是壞,皺眉。「你笑什麼?」
溫若棠立刻收起表情,像把露出來的情緒拉回去。「沒什麼。只是……你很會用流程打人。」
他沒有接這個玩笑,只低聲說:「流程是最不容易被反咬的工具。」
說完他轉身回書房,門沒有關上,鍵盤聲再度響起。溫若棠捧著水杯,聽著那聲音,像聽著某種支撐她不崩的節奏。
時間往前推得很慢。她不知道自己坐了多久,可能半小時,也可能兩個小時。窗外的雨水在路燈下蒸起薄霧,樓下偶有車聲劃過濕地,像一條條短促的刮痕。
她終於還是站起來,走向書房。不是因為好奇,而是那種被晾在外面的不安越來越重。門半掩著,她抬手敲了敲。
鍵盤聲停下。
程砚行沒有說「進來」,他只是抬眼看她,像在判斷她是不是準備好聽答案。書房裡只有桌燈,光落在他的側臉上,把他鼻梁與眼窩的陰影刻得更深。他的螢幕上是密密麻麻的文字、時間戳記、IP、路徑,像一張看不見盡頭的網。
「你查到什麼了?」她問得很小心。
程砚行的手指在觸控板上滑了一下,把其中一段放大,語氣平直得像在報告。「郵件用的是一次性外部信箱,轉發過兩層。表面看不出來源。但第一層跳板的出口節點,有在我們公司附近出現過。」
溫若棠心裡一沉。「附近?你是說……同一棟樓?」
「不一定。」他說,「可能是同一個商圈的公共網路。也可能是有人故意選那個區域做煙霧。」他停了一下,像把最重要的東西往後放,「但更關鍵的是,郵件裡那句『投資委員會桌上』,不是隨便講的。對方知道許婧澄的流程,也知道晚宴會是測試點。」
溫若棠的指尖麻了一下。「所以可能是投資方的人?」
「不排除。」程砚行說,「但我更傾向於:對方想讓你以為是投資方。真正的攻擊者希望我們內鬥,或讓你在晚宴站錯邊,自己把自己推下去。」
他說得太冷靜,冷靜到像是旁觀一場棋局。溫若棠聽著,卻覺得胃裡翻起一陣酸。「那你說不是許婧澄風格……你確定嗎?」
程砚行抬眼看她,那眼神像把她也納入他的判斷模型。「許婧澄喜歡把條件擺在桌上,讓你以為你有選擇,實際上路只有一條。她不需要匿名威脅,她也不會拿病歷這種東西出手——太髒,也太容易留下把柄。她要的是你心甘情願站到她那邊,還覺得是自己做的決定。」
溫若棠忽然覺得背脊一陣發冷。因為這句話太準,準到像他比她更了解許婧澄。
「那是誰?」她問。
程砚行沒有立刻回答。他把畫面切到另一個視窗,裡面是他們專案環境的存取審計截圖,幾條記錄被他標了顏色。
「我剛把外洩案的存取日誌再拉一次。」他指了指其中一條,「這裡有一個服務帳號,叫做orion-svc,照理說只用來跑夜間同步。但上週有一次在非排程時間被喚醒,從我們的對象存儲桶拉了資料,還把資料丟去一個外部API端點。」
溫若棠的喉嚨乾得發疼。「那不是……你們自己設的帳號嗎?」
「是。」程砚行說,「所以外洩不是意外,也不是單純漏洞。是有人拿到這個帳號的權限,或者有人在內部改了它的行為。」
她站在桌前,覺得腳下像踩空了一塊。她很努力才讓聲音不要抖得太明顯。「這帳號權限誰有?」
「理論上只有兩個人能動。」程砚行說完,停了一秒,「我,和我們的SRE主管。」
溫若棠看著他,心裡浮起荒唐的念頭:所以嫌疑人裡包括他自己。可他說出來的時候,沒有一點迴避。
「你懷疑你自己?」她幾乎是下意識問。
「我只相信證據。」他淡淡說,「我可以是嫌疑人,直到我證明不是。」他視線回到螢幕上,「但我剛才確認,這次喚醒帳號的token不是從我們的金鑰管理系統正常簽出。它像是被複製了。」
溫若棠努力理解。「所以有人偷了你們的token?」
「或從某個能接觸到它的地方拿走。」他說,「這裡有一個線索:外部API端點的域名,註冊時間很新,但DNS解析使用了一家我們合作過的CDN供應商。」
溫若棠皺眉。「合作過的?」
「對。」程砚行指尖敲了敲桌面,像在壓住一股怒意,「那家供應商去年在校園徵才會找過我,當時有個人一直纏著問我們的架構。」
溫若棠心裡一跳。校園徵才會四個字像一條線,忽然把她拉回很久以前:那些看似光亮的青春、那些被誤會扭曲過的片段。她記得有段時間校內論壇傳過一些話,說程砚行靠關係拿資源、說他冷血,說他身邊的人都只是工具。她當時沒有站出來澄清,她選擇了沉默,因為她害怕被捲進去,害怕自己的完美形象被拖下水。
她一直以為那只是年少的噪音,沒想到可能還在回音。
她不敢看他太久,怕他從她眼裡讀出什麼。
「你要查那家供應商?」她轉移話題。
「會。」程砚行說,「但不能打草驚蛇。我會先把我們的token輪換,改掉那個服務帳號的權限模型,然後看對方怎麼反應。對方如果還想拿資料,就會再出手。」
溫若棠的心臟縮緊。「那我父親的資料……跟這條線有關嗎?」
「可能。」程砚行說,「對方一邊做技術外洩,一邊做個資勒索,目的可能是逼我們在晚宴上做出某個姿態。」他看著她,語氣突然更硬了一點,「他選你當入口,因為你有把柄,也因為你習慣自己扛。」
溫若棠像被戳中,指尖一痛。她想反駁,卻說不出話。
程砚行卻在那一瞬間把語氣放緩了些,像意識到自己太直接。「我不是怪你。」
他不會說「對不起」,他也不太會說「我怕你受傷」。他能給的,是把責任往自己身上拉一點。
「我知道。」溫若棠低聲說。她停了停,終於問出那個讓她一直繞著走的問題,「你要不要告訴沈予安?」
程砚行的眉頭微不可察地動了動,像對那個名字本能不耐。「他嘴很快。」
「但他不是外人。」溫若棠看著他,努力讓自己別太像在替沈予安辯護,「而且……明天公司例會會討論外洩疑雲。他會察覺我不對勁。」
程砚行沉默片刻,像在權衡。最後他說:「可以告訴他一部分。不要提你父親病歷的威脅細節,先說你收到匿名勒索,跟外洩案可能有關。讓他幫忙看內部log,找異常存取。工程師能幫的地方,他比較有用。」
這句話聽起來像夾槍帶棒,卻是同意。溫若棠心口微微一鬆。
她以為談到這裡就結束了,程砚行卻忽然問:「你父親明天要做什麼檢查?」
溫若棠愣住。「只是復診,還有一些文件要補。醫院說要重新簽同意書,可能跟轉院評估有關。」
「你母親呢?」他問得很自然,像在補齊行程的參數。
溫若棠的眼神閃了一下。「她……不太能出面。」
程砚行看著她,那眼神不逼問,卻不放過。「為什麼?」
她的喉嚨像被繃緊的線勒住。她擅長把情緒包成禮貌,但此刻在書房這盞小燈下,那些禮貌像被照得太亮,反而顯得薄。
她努力用最簡短、最不麻煩人的方式說:「她跟我爸的狀況很差。他們……吵得很兇。她不想去醫院,也不想被看到。」
程砚行的手停在鍵盤上,沒有追問細節,只點頭,像把這項風險納入方案。「明天我陪你辦。辦完我送你回公司。醫院那邊我會安排人盯一下動線。」
「你安排誰?」溫若棠本能地警覺,「你別找那種很誇張的保全……」
「不會。」程砚行說,「我朋友的公司有做企業資安和風險顧問,偶爾也接隨行保護。是便衣,像一般人。你不會被盯得不舒服。」
「你連這種朋友都有?」她語氣不自覺帶出一點苦笑。
程砚行只回了一句:「必要的時候有用。」
那句話說完,他像忽然意識到這些安排本身也許會讓她壓力更大,於是補上一句,生硬卻真實:「你如果不想,也可以不要。」
溫若棠看著他,心裡那個一直提醒她「別成為負擔」的聲音又冒出來:你不能讓他為你花這麼多,你們只是合約,你不能把他的生活搞亂。
可另一個聲音更小、卻更頑固:你已經被盯上了,你逞強只會害死自己,也害死他。
她把手心的汗擦在褲縫上,終於說:「我想要。」
程砚行的表情沒有太大變化,但他的肩線像鬆了一點。他點頭,像把某個「允許」收進心裡,然後把視線移回螢幕,像怕再多看她一秒就會失控。
「還有一件事。」他說,「晚宴那天,如果有人問你關於顧問團條款,你不要回答『我不知道』。」
溫若棠皺眉。「那要回答什麼?」
「回答:我們內部正在做合規風險評估,任何涉及客戶資料的綁定條款都需要完整審核。」他語氣平淡,卻像在教她如何把話說得無懈可擊,「你是產品經理,你可以名正言順講這句。這不會得罪人,因為聽起來很專業,也很中立。」
溫若棠看著他,心裡有某個地方被戳了一下。她突然意識到,他不只是要她在晚宴上「跟著他」,他是在把她武裝起來,讓她有自己站住的方式。
「你怕我被當籌碼?」她忍不住問。
程砚行的指尖停住,過了兩秒才說:「你本來就被當籌碼。」
這句話很殘酷,卻不是為了傷她,而是把世界的算法攤開給她看。溫若棠吸了一口氣,眼眶發熱,但她忍住了。她不想在他面前哭,不想讓自己看起來像需要被救。
可是她也終於承認,她真的需要被撐一下。
「程砚行。」她輕聲叫他全名。
他抬眼。
她本來想說謝謝,想說對不起,想說你不用為我做到這樣。話到嘴邊,卻忽然變成另一句:「我明天……如果我撐不住,我可以跟你說嗎?」
書房裡安靜了一瞬。連窗外的車聲都像遠了。
程砚行的喉結動了一下。他看著她,像在處理一個比任何攻擊都難的請求。親密對他而言不是甜,是風險,是不可控變數。可他沒有退。
他只用很低的聲音回:「可以。」
一個字,像把她胸口那根緊繃的線稍微剪斷。她點頭,怕自己再多待一秒就會真的哭出來,轉身想走。
「若棠。」他又叫住她。
她回頭。
程砚行把手機從桌上拿起來,丟給她。不是她的,是他的。
「把你的手機暫時別用來收重要訊息。」他說,「用這支。明天你跟醫院窗口、付款、任何敏感資料的溝通,用這支。這支我有做加密和監控。你的那支……可能已經被人盯上。」
溫若棠接住手機,手心一沉。那份重量讓她有點想笑又想哭。她一直以為自己最擅長的是把事情整理好,結果今晚她得到的是一支被加密過的手機,像被迫承認:她真的需要別人的保護。
她低聲說:「那你呢?你用什麼?」
「我還有。」他語氣淡淡。
她抱著那支手機,站在門口,忽然想到一件事。「對方說『站對邊』……你覺得他要我站哪邊?許婧澄那邊,還是……」
她沒有把話說完。她不敢說「你」,因為那聽起來像她把他當成對立面,像她在問:如果我不站你這邊,你會不會怪我。
程砚行看著她,目光沉靜。「他要你站在能讓你最害怕的位置。因為人在害怕時,最容易被操控。」
溫若棠的指尖微微一顫。
程砚行又補了一句,像把話說給她的恐懼聽:「明天你只要做一件事。遇到任何不對,第一時間看我。」
溫若棠點頭,轉身離開書房。她回到客廳,才發現自己一直用力咬著牙,咬得下顎發酸。她走到窗邊,手指碰到玻璃,冰涼的觸感讓她稍微清醒。
她打開程砚行給的手機,螢幕乾淨,沒有多餘的App。通訊錄裡只有幾個名字:程砚行、公司法務、某個不認識的縮寫「R.K」。她正要放下,手機忽然跳出一則訊息提示,來自未知號碼,顯示為系統簡訊格式,內容短到像錯覺:
明天醫院,別帶他進去。你知道他做過什麼。
溫若棠的呼吸猛地一滯,手心的溫度瞬間退去。她盯著那行字,腦子裡轟的一聲,把那個被她刻意遺忘的校園傳聞、那個「他做過什麼」的影子全部扯回來。
她抬頭看向書房的門縫,鍵盤聲仍在,像什麼都沒發生。她卻覺得自己站在兩條路的交叉口:一邊是他給她的安全方案,一邊是對方刻意投進她心裡的毒。
她握緊手機,指節發白。她沒有立刻走進書房叫他,也沒有立刻刪掉那則訊息。她只是站在原地,聽著鍵盤聲,心跳快得像要把胸腔撞開。
對方不只要錢,不只要條款,不只要她站邊。
對方要她開始懷疑他。
— 本章完 —
下一章:第3章 第 3 章
讀者留言 (0)
還沒有留言,來當第一個吧!