普通人 · 第 05 篇
籌獲計劃
一 飯
調查官按門鈴時,電鍋剛跳起來。
五點四十七分。冷氣排水滴在樓下鐵棚上,每隔六七秒一聲。第一聲門鈴過後,我沒有動。第二聲響起時,我從貓眼看見三個人。兩男一女,都穿著深色外套。
領頭的男人把證件和搜索票舉到門前。
「陳芷微?」
我把門打開。
女調查官先走向餐桌,拔掉筆記型電腦的電源。另一個人進入臥室,在枕頭旁找到手機。
「解鎖密碼。」
我告訴他六個數字。
他輸入密碼,確認手機已經解鎖,才把它放進透明袋。
「還有其他儲存裝置嗎?」
「書桌第二個抽屜。」
女調查官拉開抽屜。裡面有一顆外接硬碟、兩張繳費單、一把沒電的手電筒和半包口罩。她逐件拍照,再把硬碟放進另一個袋子。
電鍋仍在冒氣。我問能不能拔掉插頭。
「可以。我陪妳。」
她跟我走進廚房。領頭的男人站在門口翻閱手上的資料。
「XMAS是妳寫的?」
「一部分。」
「哪一部分?」
「索引、文件解析、權限標籤。」
「許願池呢?」
「暫存區。」
「有多少文件進過暫存區?」
「二十幾萬。」
「二十六萬四千七百一十三份。」
「那應該是最後一次統計。」
「裡面有密件?」
「有。」
「妳什麼時候知道?」
「第一次完整測試。」
「知道以後還讓程式繼續執行?」
「繼續到稽核把系統切斷。」
我拔掉電鍋插頭。紅燈熄滅,鍋蓋邊緣還留著一圈水氣。
男人翻到下一頁。
「妳有沒有用這套系統搜尋過跟工作無關的資料?」
「有。」
「搜尋什麼?」
「自己的名字。」
他抬頭。
「為什麼?」
「想知道會出現什麼。」
「出現什麼?」
「一份試用期考核。」
「還有呢?」
「一份員工申訴。」
「申訴也是妳主動搜尋的?」
「不是。那次是預覽窗自己開啟。」
他看著我。
「搜尋自己名字時,預覽窗也是自己開啟?」
「不是。」
他在筆記本上寫了一行。
「許願池為什麼叫許願池?」
「大家把想找的資料丟進去。」
「妳許過什麼願?」
「一開始是一家醫院。」
「後來呢?」
「後來是我的名字。」
女調查官替電鍋拍照。鏡頭對著鍋蓋、插頭和已經熄滅的紅燈。她問裡面有沒有東西。
「飯。」
「熟了嗎?」
「還沒有。」
她把電鍋留在原位。
他們離開時,天已經亮了一點。門口的鞋櫃被移開,地上留著幾道灰塵。搜索票副本放在餐桌上,壓著一只空的證物袋。
我打開電鍋。米粒吸了一半的水,表面乾白,底下仍然溫熱。
我把整鍋飯倒進垃圾袋。
二 訪客
一年後,我再次走進沙崙園區。
警衛把我的身分證放在讀卡機上,問我拜訪哪個單位。
「平台專案辦公室。」
「承辦人?」
我說出一個以前沒有聽過的名字。
他在系統裡搜尋。
「公司名稱?」
我告訴他。
列印機吐出一張白色貼紙。上面有訪客編號、拜訪單位和有效時間。姓名欄是空的。
警衛看了一下螢幕。
「系統沒有帶到名字。」
他拿起原子筆,在空格裡寫下陳芷微。筆尖太粗,微字的最後一筆擠到欄線外。
「貼在胸前。離場要回收。」
我把貼紙貼在外套左側。
原本的前瞻籌獲中心研發組已經改成資訊安全管理室。玻璃門上貼著四項原則:
最小權限。
持續驗證。
完整稽核。
資料分級。
我所屬的公司承包「全院資訊治理暨韌性決策平台」。平台連結公文、採購、專案、資產和弱點資料。每次查詢都會檢查角色,下載文件會自動加上浮水印,批次存取達到門檻後,系統會通知承辦人和資安人員。密件全文只在使用者權限通過後暫時解密,關閉視窗後,暫存檔會在三十秒內刪除。
專案經理姓許,比我小兩歲。他帶我看機房和開發環境,說明客戶最近對詞彙很敏感。
「文件裡不要出現crawler。」
「那要寫什麼?」
「connector。」
「功能相同。」
「審查的人看到crawler會想到爬取。connector聽起來像正式介接。」
他說完,打開資料模型。
表格裡有一個欄位叫wish_id。
規格書將它解釋為Workflow Integration Service Handle,工作流程整合識別碼。
我問這個名稱從哪裡來。
「客戶給的舊規格就是這樣。」
「舊規格有版本紀錄嗎?」
「沒有。他們說前一套系統已經停止使用,能留下來的資料不完整。」
他滑到下一頁,繼續說明權限矩陣。
我沒有告訴他,wish_id原本只是願望編號。
當年柏勳說,使用者在搜尋欄輸入關鍵字,就像把一枚硬幣丟進池子。系統若能找出資料,願望就算實現。那個命名沒有經過正式會議,也沒有寫進需求文件。柏勳在凌晨三點改完資料表,隔天所有人便跟著使用。
現在,它有了十二個英文字的全名。
三 沙崙
我二十八歲進資服院。
在此之前,我待過兩家公司。第一間替購物網站做推薦系統。主管要求我們降低高退貨率商品的曝光,免得影響轉換率。第二間替銀行整理客戶資料。那裡的工作比較穩定,每一項修改都要填表,表格再由另一個從未接觸資料的人核准。
資服院面試時,黎恆之問我為什麼離開銀行。
我說,銀行有很多資料,但同一個人在不同系統裡常有不同名字。
他摘下眼鏡,用襯衫下擺擦鏡片。
「這裡也一樣。」
他又擦了一次。
「名字更多。」
前瞻籌獲中心在沙崙。辦公室的玻璃映著高鐵軌道、稻田和仍在施工的道路。每隔十幾分鐘,列車從旁邊經過,桌上的紙杯會向右移一點。
柏勳曾經用膠帶在桌面貼一條線,想知道紙杯一天能移多遠。下班時,杯子離線大約半公分。
柏勳負責後端。他只喝鋁箔包紅茶,吸管固定折兩次,第一折靠近盒口,第二折在中央。他原本待在外商雲端服務公司,薪水接近資服院的兩倍。有人問他為什麼回來,他說外商系統壞掉,最多只是有人無法看影片;國家的系統壞掉,新聞會多播幾天。
莊思妤研究隱私工程。她所有會議紀錄都用鉛筆寫,寫錯時用一塊已經磨得很薄的橡皮擦掉。她曾在民間團體處理個資外洩事件,加入資服院後,最常說的一句話是資料能做什麼,應當在蒐集以前決定。
羅子嘉做惡意程式分析。桌上放著一台拆開的路由器,螺絲依大小排在白紙上。他說等有空就裝回去。那台路由器放了兩年,灰塵先蓋住電路板,再蓋住螺絲。
黎恆之是研發組組長,四十二歲。他說話很慢,遇到技術問題時會摘下眼鏡,擦到別人開始不耐煩。他很少提自己的過去,只說曾在某個部會資訊室待過,見過一套系統因為承辦人退休,半年沒有人知道管理者密碼。
中心裡大多是年輕人。有人從國外研究室回來,有人放棄博士班,有人維護開源工具維護到凌晨。大家很少在辦公室談愛國。真正出現的通常是欄位、附件、權限、核銷、預算科目和承辦人失聯。
我進院第二個月,一家醫院的掛號、檢驗和影像系統同時異常。
最先傳來的是一張照片。急診櫃檯前排著人,護理師用原子筆在紙上寫病歷號碼。後方螢幕停在登入畫面,右下角的時間是凌晨一點十四分。
應變中心要求過去三年的資安輔導紀錄、設備清冊、弱點報告和維護廠商資料。
資料散在四個系統裡。
公文系統裡有輔導紀錄,附件無法開啟。資產系統裡有設備,醫院使用改名前的名稱。採購系統找得到廠商,承辦人已經調職。弱點報告儲存在一個共用資料夾裡,資料夾以民國年命名,裡面還有三個叫作「最新版本」的檔案。
凌晨四點,子嘉打電話給一名離職同仁。
對方已經在睡覺。子嘉道歉三次,問他是否還留著兩年前的郵件。電話另一端沉默很久,接著傳來鍵盤聲。
二十分鐘後,一張網路拓樸圖寄到信箱。
圖上有一台停止維護的影像伺服器。設備名稱和現行資產清冊完全不同,只在備註欄留下原始IP位置。
現場回報,異常流量最早從那台設備出現。
天亮後,柏勳把四個空紅茶盒排在桌邊。思妤趴在會議桌上睡著,手裡還握著鉛筆。子嘉去便利商店買飯糰,回來後才發現忘了拿發票。
那一百八十七元由他自己付掉。
我們沒有直接參與醫院現場應變,也沒有出現在事後新聞裡。兩天後的成果簡報寫著「跨中心協作掌握受影響設備」。沒有人說資料是從一名離職同仁的私人信箱找回來的。
一週後,魏紹庭副院長在主管會議上問,下一次遇到電力或自來水系統,是否仍要靠離職同仁找附件。
沒有人回答。
他要求前瞻籌獲中心在三週內做出跨系統查詢畫面。
四 三週
正式介接需要用途說明、欄位清單、個資評估、測試環境和廠商修改。
公文系統管理單位要求我們列出需要的每一個欄位。人事單位要先確認是否涉及個人資料。採購系統的維護廠商表示,新增介接模組需要另案報價。資產管理單位問我們是否會修改原始資料,我們說只讀取,對方仍要求補一份資料不落地聲明。
期限剩十二天時,我們拿到一份四年前的資料字典。
九十七個欄位裡,有三十二個已經停用。另有十一個欄位在正式系統存在,資料字典完全沒有記載。
魏紹庭到沙崙看進度。
那場會議只有六個人。魏紹庭、黎恆之、柏勳、思妤、我,還有一名很少說話的院長室秘書。秘書中途接電話離開,之後沒有回來。
沒有人開正式會議紀錄。我把手機放在桌角,啟動語音轉文字,準備會後整理重點。
黎恆之說,依現有程序不可能在三週內完成。
魏紹庭問,公文系統搬遷時留下的服務帳號能不能使用。
柏勳說可以登入。
思妤問服務帳號能讀到什麼。
沒有人知道。
魏紹庭說,先做出可以展示的版本,介接程序由他協調。
黎恆之又問一次,若權責單位不同意,展示是否延後。
魏紹庭看著牆上的進度表。
「部裡的會議不會延後。」
手機把「先把資料打通」辨識成「先把資料大同」。
柏勳笑了一聲。
魏紹庭看了他一眼,沒有問原因。
會後,我把錯字改掉。
服務帳號原本用於資料搬遷。一般使用者開啟公文時,前端會依單位、職務和密等判斷權限。服務帳號直接連到後端。後端只確認帳號仍然有效。
第一次測試時,一份限閱文件出現在螢幕上。
檔名是一串數字。首頁右上角有紅色方框,受文者欄位是院長室。
思妤把椅子拉到我旁邊。
「關掉。」
我關閉預覽。
柏勳說,只測一份無法知道影響範圍。
思妤說,至少已經知道權限有問題。
黎恆之站在我們後面,沒有坐下。他問我能不能在文件下載後立即辨識密等,將全文加密,只留下雜湊值、標題、日期和承辦單位。
我說舊文件的標示不一致。資料庫的密等欄位可能是空的,掃描首頁卻蓋著紅章。有些一般件的附件也可能含個資。
他問能不能先做。
我說可以。
思妤在問題追蹤系統開了一張工單。
「服務帳號可繞過前端存取控制,正式環境使用前必須完成權責確認。」
她將嚴重度標為最高,指定給黎恆之。
程式原本遇到權限錯誤就會略過。我在凌晨一點十七分加了一個備援流程。一般帳號回傳失敗後,系統會改用服務帳號重試。
參數名稱是legacy。
我測了三次。
第一次,服務帳號無法取得附件路徑。第二次,索引器把掃描檔當成空白文件。第三次,一批檔名開始從螢幕下方向上捲動。
速度很快。
思妤已經回家。柏勳到樓下買紅茶。黎恆之坐在會議室裡,門沒有關。他正在修改部裡簡報,投影幕上寫著「提升國家級資安治理之即時可視性」。
我沒有叫他過來看。
第一次完整索引取得七萬三千多份文件。
其中六百多份標為限閱。另有十幾份在資料庫中沒有密等,掃描首頁卻有紅色標記。兩千多份文件包含身分證字號、薪資資料、就醫證明、員工申訴和採購檢舉。
我們建立隔離區。解密金鑰由我和黎恆之保管。
早上八點半,魏紹庭看展示。
他輸入醫院名稱。畫面列出資產、維護廠商、弱點紀錄和改善追蹤。從首頁到完整關聯圖,用了三秒。
他又輸入一家電力公司的名稱。系統找出三個專案、兩份稽核紀錄和一張過期的資產清冊。
「這個版本可以拿去部裡。」
黎恆之問,正式介接是否繼續走原本流程。
魏紹庭說會處理。
他離開後,柏勳在登入頁加上一句話:
請謹慎許願,系統可能真的會回答。
暫存區從此被叫作許願池。
兩週後,思妤開的工單被關閉。
狀態是「風險已接受」。
處理人是黎恆之。
五 許願池
XMAS原本只打算執行一次。
部裡簡報結束後,魏紹庭要求增加人力、經費和採購進度。其他中心也開始提出需求。有人要找使用特定開源套件的專案,有人想查沒有管理者的設備,有人只記得公文裡的一句話。
程式改成每晚兩點執行。
柏勳替查詢頁增加收藏功能。子嘉把惡意程式家族名稱和弱點編號放進同一套索引。思妤建立個資遮罩規則,身分證字號只顯示前三碼和後兩碼,病歷資料預設不提供預覽。
XMAS確實有用。
它找到一百多台沒有明確管理者的主機,其中十七台仍在對外提供服務。它找出三個單位分別採購功能相近的威脅情資平台,也發現一批驗證憑證會在演練前一晚失效。
承辦單位連夜更換憑證。演練照常舉行。
成果簡報裡沒有提到XMAS。
柏勳並不在意。他說系統有沒有名字不重要,重要的是有人終於用了。
思妤不同意。
「沒有名字,就不會有責任。」
柏勳把吸管折了第二次。
「有名字只會比較容易被關掉。」
子嘉坐在旁邊拆一顆新的路由器。他沒有加入爭論,只問我們要不要吃晚餐。
那段時間,我們常在晚上九點以後叫便當。送餐員找不到大樓入口,總要打電話。柏勳每次都說,看到一棟還亮著燈、外面什麼人都沒有的大樓就是了。
有一天晚上,其他人先走了。
我在許願池的搜尋欄輸入自己的名字。
陳芷微。
系統回傳三十二筆結果。大多是會議簽到、教育訓練和專案分工。第十九筆是一份試用期考核草稿。
我點開預覽。
「技術能力佳,可獨立處理複雜問題。工作投入度高。跨單位溝通與行政層級理解仍待加強。」
最後一句曾經被刪除,後來又在修訂紀錄裡重新出現。
考核表下方還有一段沒有送出的主管意見。
「對問題本質掌握快速,對組織邊界敏感度不足。宜由資深人員陪同處理跨單位工作。」
送出版本沒有這段話。
我看了兩遍,關閉視窗。
查詢紀錄保留了關鍵字、帳號、時間和點選文件。它沒有記下我在最後一段停留多久。
我沒有刪除紀錄。
隔天下午,我測試個資遮罩。搜尋結果出現一份員工申訴。預覽窗載入後,我看見主管姓名、精神科診斷和一段家庭狀況。申訴人寫,她父親剛做完手術,她因照顧家人遲到,主管在全組面前說她把私人問題帶進工作。
我立即關閉,新增遮罩條件。
操作紀錄顯示,那份文件在螢幕上停留四十一秒。
思妤看完紀錄後,問我看見多少。
「三行。」
「哪三行?」
我沒有回答。
她把預覽功能關閉,要求所有涉及申訴、考核和就醫紀錄的文件只保留中繼資料。
柏勳說,這樣會讓關聯圖缺一塊。
思妤說,那一塊本來就不該存在。
黎恆之最後同意關閉預覽,全文仍留在隔離區,以便日後重新分類。
我沒有告訴思妤,前一晚我搜尋過自己的名字。
六 採購案
真正引起爭議的是一張採購關聯圖。
三個名稱不同的計畫,在兩年內向同一家廠商購買相近模組。每一案都有需求書、驗收紀錄和付款文件。分開查看時沒有明顯問題,放在同一張圖上後,金額、功能和人員重疊得很整齊。
其中一名專案顧問曾是廠商員工,離職後進入資服院,隔年又以外部顧問身分回到原本的計畫。這些經歷都依法揭露,單獨看來也有合理說明。
XMAS只把它們排在一起。
黎恆之將關聯圖送進院長室,建議停止重複投資,重新檢查三案的技術邊界。
兩天後,某中心主任在主管會議上要求停止系統。他說前瞻籌獲中心使用未經核定的資料,對其他單位進行實質稽核。
魏紹庭沒有同意停止。
他要求暫時移除採購關聯。
同一週,我們發現對外簡報裡的事件處理件數有重複。同一場攻擊被威脅分析、通報應變和技術支援分別列為成果。每個單位都做了工作。加總後,三項工作成為三起事件。
柏勳把兩年的數字重新計算,總數少了接近三成。
黎恆之把結果放進簡報。
魏紹庭將他叫到台北。
我帶著電腦陪他去。
會議室裡只有我們三人。魏紹庭把簡報翻到採購圖,再翻到事件統計。
「這兩頁先拿掉。」
黎恆之問資料有沒有錯。
「目前沒有人在談資料正確性。」
「那他們在談什麼?」
「你們用什麼權限看到這些資料。」
黎恆之摘下眼鏡。
「這些都是院內資料。」
「院內不代表所有人都能看。」
「平台的目的就是找出跨單位問題。」
「平台的目的原本是找技術資產。」
魏紹庭把簡報闔上。
「預算下個月進委員會。三個中心已經向院長反映,前瞻中心正在查他們。董事會也在問,為什麼一個研究組能讀到採購和人事資料。」
「你要求增加經費和人力。」
「我要求的是治理視圖。」
「完整治理不可能只看沒有爭議的資料。」
魏紹庭沒有立刻回答。
窗外是台北的雨。水沿著玻璃向下流,遠處的建築變成灰色方塊。
「平台要先留下來。」
黎恆之把眼鏡戴回去。
「留下來之後呢?」
「之後再談邊界。」
回到沙崙後,黎恆之把採購和績效頁面從選單移除。功能仍然存在,輸入網址便能開啟。
我負責更新前端。
刪除選單時,系統跳出確認視窗。
「是否確定隱藏。」
我按了確定。
思妤知道後,把自己的風險工單重新開啟。
她增加一段說明:
「現行系統已具備跨越原始業務目的之能力,且使用範圍持續擴張。建議在正式權責核定前暫停全文索引。」
黎恆之沒有關閉這張工單,也沒有暫停系統。
狀態一直停在「處理中」。
柏勳說,組織只在系統找到不好看的資料時才開始談權限。
思妤問他,員工申訴算不好看的資料,還是本來就不該看的資料。
柏勳沒有回答。
子嘉把路由器上的最後一顆螺絲拆下來,放在白紙右下角。
「如果現在停,前面那些漏洞會有人修嗎?」
思妤說不知道。
「如果不停,這套東西最後會變成什麼?」
也沒有人知道。
那天晚上,黎恆之留到很晚。
我離開前經過會議室,看見他一個人坐在裡面。投影幕上開著思妤的工單,游標停在「風險接受理由」的欄位。
隔天早上,欄位裡多了一句話。
「基於重大公共利益及專案時效,於隔離環境持續驗證,後續補正程序。」
填寫人是黎恆之。
七 事件
隔年一月,內部稽核發現凌晨兩點有固定流量進入公文系統。
流量來自沙崙的測試工作站。登入帳號屬於柏勳,排程服務由我維護,資料最後進入院內私有雲。
楊主任帶著兩名資訊人員到沙崙。
他先要求停止排程,再檢查網路路由和存取紀錄。
「資料有沒有出去?」
「沒有。」
「誰可以解密?」
「我和組長。」
「服務帳號是誰提供的?」
「原本就在系統裡。」
「誰核准使用?」
黎恆之說,副院長同意先做概念驗證。
楊主任看著他。
「有書面紀錄嗎?」
「有會議錄音。」
「正式簽核呢?」
黎恆之沒有回答。
楊主任又問,為什麼服務帳號持續使用超過三個月。
柏勳說,因為正式介接一直沒有完成。
「所以你們自己決定繼續?」
「每次展示都有人要求增加功能。」
「誰?」
柏勳說了幾個主管的名字。
楊主任沒有記錄。他請柏勳把所有需求郵件匯出,交給稽核保全。
下午,全組被要求到台北。
會議通知上的名稱是「異常資訊行為說明會」。
法務主管在會議中稱它為「未授權存取事件」。
魏紹庭最後進場。他沒有帶上次來沙崙時使用的紙本資料夾。
楊主任說明流量、文件數量和服務帳號權限。法務主管問,有沒有人收到明確指示,要求繞過公文系統的存取控制。
黎恆之說,魏紹庭曾提出服務帳號。
魏紹庭說,他要求的是資料整合。
「服務帳號由你先提出。」黎恆之說。
「我提到院內有可供測試的帳號。」
「你要求三週內完成。」
「期限不代表可以規避權限。」
「你看過展示,也要求增加採購、人力和經費。」
魏紹庭翻開面前的文件。
「我一直以為技術團隊會用合法方法完成。」
柏勳笑了一聲。
人事主管請他不要插話。
會議紀錄人員問,剛才那一段是否需要完整記錄。法務主管說,只記載雙方對授權範圍認知不同。
會議紀錄最後寫成:
「副院長曾指示加速推動跨系統資料介接。經查,尚無具體事證顯示其授權相關人員規避既有權限機制。」
下一段寫道:
「研究人員基於專業判斷,自行採取技術措施,取得大量非屬業務必要之文件。」
法務主管處理是否通報。
人事主管處理是否停職。
稽核單位處理證據保存。
預算室要求當天提出一頁說明,以供部裡回應立法院詢問。
院長室要求新聞回應不得提到文件內容,只能說明院方主動發現、主動調查、依法處理。
沒有人討論XMAS是否還要繼續存在。
散會前,院方決定通報檢調。
我們的門禁在會議結束前停用。
警衛陪我們回沙崙拿私人物品。柏勳的紅茶還放在桌上,吸管沒有拆。思妤收走鉛筆盒和那塊磨得很薄的橡皮擦。子嘉站在自己的桌前,看著那台拆開的路由器。
「你不帶走嗎?」我問。
「少一顆螺絲。」
「哪一顆?」
「不知道。」
他最後只拿走白紙上的螺絲,路由器留在原位。
我拿了馬克杯、外套和一盆薄荷。
走到門口時,門禁燈亮紅色。
警衛替我開門。
柏勳在群組裡把名稱從「XMAS開發」改成「離線」。
八 錄音
新聞在兩天後出現。
第一篇報導寫,資服院研究人員以技術手段取得內部密件,資料是否流向境外仍待調查。第二篇報導把事件稱為「資服院間諜門」。晚間政論節目在畫面上放了一張資料庫示意圖,背景是一串綠色英文字。
來賓問,最懂資安的人若成為內鬼,國家還能相信誰。
另一名來賓說,這可能是院內派系鬥爭。
沒有人知道許願池是什麼,也沒有人知道服務帳號原本由誰保留。
資服院聲明表示,內部稽核主動發現異常,院方依法通報,全力配合偵辦。
母親從彰化打電話來。
「新聞裡有妳嗎?」
「還沒有。」
「妳有沒有把資料給別人?」
「沒有。」
「有沒有看?」
我把手機換到另一隻手。
「有。」
她沉默一會兒。
「看了什麼?」
「考核、申訴,還有一些不該從我們那裡開啟的公文。」
「妳為什麼要看考核?」
「我搜尋自己的名字。」
電話另一端傳來膠帶被拉開的聲音。母親的店早上七點營業,她正在替貨架補標價。
「看完有比較好嗎?」
「沒有。」
她又問搜索那天電鍋裡的飯。
「後來有沒有吃?」
「沒有熟。」
「倒掉了嗎?」
「倒掉了。」
她說沒有熟就不能吃,接著問我要不要回彰化。
我說案件還沒結束。
第一次偵訊時,調查官把四十一秒的紀錄放在桌上。
第二次,他拿出legacy參數的版本紀錄。
第三次,他問我為什麼搜尋自己的名字。
「功能測試?」
「不是。」
「工作需要?」
「不是。」
「那為什麼?」
「想知道他們怎麼寫我。」
「看完以後做了什麼?」
「沒有做什麼。」
「有沒有把紀錄刪除?」
「沒有。」
他把筆放下。
「妳知道自己沒有權限嗎?」
「知道。」
「知道還點開?」
「是。」
「後來妳又看見員工申訴。」
「那次不是主動搜尋。」
「但妳知道這套系統可以看見什麼。」
「知道。」
筆錄寫成,我明知系統存取範圍逾越業務需要,仍曾基於私人目的進行查詢。
交保後,柏勳約我們在高鐵站吃飯。
思妤沒有來。子嘉戴著口罩,幾乎沒有說話。黎恆之面前放著一碗湯,直到冷掉都沒有喝。
柏勳問我,沙崙會議的錄音還在不在。
我說在。
「交給記者。」
黎恆之說,完整錄音涉及系統帳號和弱點,不能公開。
「剪掉技術細節。」
「剪過的錄音會被質疑。」
「那就把原檔交給律師,再由律師證明。」
黎恆之看著桌面。
「事件還在偵查。」
柏勳把筷子放下。
「我們已經被寫成間諜了。」
沒有人回答。
回家後,我把錄音附在電子郵件裡。主旨寫著「資服院事件授權經過」。
我刪除帳號名稱、機關名稱和系統入口。刪到最後,只剩兩段聲音。
「先做可以展示的版本。」
「程序由我協調。」
游標停在寄出鍵上。
我想到服務帳號,也想到那次搜尋。若完整紀錄被調出,考核草稿的查詢會跟著出現。記者可能會問,我究竟是在保護系統,還是在保護自己。
我把郵件存成草稿。
柏勳在凌晨把我移出群組。
我隔天早上才發現。
思妤傳了一封私人郵件給我。內容只有一句:
「我應該在第一張工單被關閉時,直接通報權責單位。」
我回覆她:
「我應該沒有寫legacy。」
寄出後,我又讀了一次。
我們都沒有寫,事情便不會發生。醫院的資料仍然分散,那些無人管理的主機也仍然存在。
我沒有再寄第二封信。
九 責任
行政調查會議在台北舉行。
桌上有姓名牌、水瓶和一台錄音設備。窗簾全拉上。主席說明程序時,所有人的手機都被要求放在門外。
我的律師要求播放沙崙會議錄音。
聲音很清楚。
「先做可以展示的版本。」
「程序由我協調。」
主席問魏紹庭是否說過。
他說有。
「是否授權使用搬遷服務帳號?」
「我授權推動資料整合。技術方法由專業主管評估。」
黎恆之說,正式介接不可能在三週內完成。
主席提醒他只回答問題。
魏紹庭看著黎恆之。
「我知道期限很緊,但我沒有要求任何人取得無權閱覽的文件。」
「你看過系統展示。」黎恆之說。
「我看到的是關聯結果,沒有看到權限繞行方式。」
「你從來沒有問。」
「技術細節由你負責。」
主席再次提醒雙方只回答問題。
接著輪到思妤。
委員把她的風險工單投在螢幕上,問她是否認為系統存在重大風險。
「是。」
「為什麼沒有向資訊單位或稽核單位通報?」
「我依內部流程交由組長處理。」
「工單被標示為風險已接受後,妳是否繼續參與開發?」
「是。」
「理由?」
思妤握著一枝鉛筆。會議規定不能攜帶手機,沒有規定不能帶文具。
「我以為至少可以把遮罩和隔離做好。」
委員問,這是否代表她接受系統繼續運作。
她沒有回答。
輪到柏勳時,委員問他是否將服務帳號交給我使用。
「帳號原本就在共用密碼庫。」
「誰告訴你可以用?」
「副院長在會議裡提出。」
「他是否明確說可以繞過權限?」
「沒有人用『繞過』這兩個字。」
「所以這是你們的技術判斷?」
柏勳靠在椅背上。
「如果所有命令都會寫得那麼清楚,就不需要開這場會。」
主席請他注意態度。
最後輪到我。
委員把legacy參數投在螢幕上。
「這段程式碼由妳新增?」
「是。」
「有沒有人命令妳使用服務帳號重試?」
「沒有。」
「妳是否知道這會擴大存取範圍?」
「第一次測試後知道。」
「發現限閱文件後,為什麼沒有停止?」
我想起那份試用考核,也想起申訴人的診斷。
「我們在做展示。」
「展示需要取得七萬多份文件?」
「為了確認關聯範圍。」
「搜尋自己的名字也屬於確認關聯範圍?」
「不是。」
會議室裡很安靜。
委員翻到下一頁。
「妳是否認為自己違反規範?」
律師在桌下碰了我一下。
我看著投影幕上的程式碼。legacy後面有一行我早已忘記的註解:
「temporary fallback until official integration」
在正式介接完成前使用的暫時備援。
正式介接從來沒有完成。
「有。」
「妳是否認為主管應共同負責?」
「有。」
主席請紀錄人員將兩個回答都記下。
人事單位提出處分建議。三名直接參與系統開發和資料管理的人解聘。相關主管停職調查。前瞻籌獲中心研發組停止運作,職掌拆分到其他單位。
黎恆之當場提出辭呈。
他從公事包裡拿出員工證,放在桌上。
魏紹庭說,事情發展至此令人遺憾。
黎恆之沒有看他。
行政調查報告後來寫道:
「管理階層在專案督導及權限確認方面有疏失,尚難認定曾明確指示違規存取。」
關於我們的段落寫道:
「相關人員明知權限可能逾越業務需要,仍持續執行資料取得與索引作業。」
兩段在同一頁。
幾個月後,立法院審查資服院預算。
委員拿著新聞影本,詢問國家級資安機構為何由內部人員取得密件。有人提案刪減一千萬元,也有人要求凍結部分預算,等改善報告提出後再解凍。
部裡承認管理疏失。
資服院表示,將建立專責資訊管理單位、重新盤點權限、強化存取紀錄和資料分級。
那些項目曾經出現在XMAS下一年度的計畫書裡。
院長在預算審查後提出辭呈。他表示願意承擔行政責任,以維持組織正常運作。
網站上的組織圖很快更新。
前瞻籌獲中心仍然存在。
研發組不見了。
十 保護貼
我投了二十七份履歷。
兩家公司在第二次面試前取消。一家公司問我是不是新聞裡的陳姓研究員。
我說是。
面試官把原本放在桌上的技術測驗收回資料夾。
「案件有結果了嗎?」
「還沒有。」
「資料有外流嗎?」
「目前沒有證據。」
「所以還不能確定?」
我沒有回答。
他說公司會再聯絡。
之後沒有聯絡。
我回彰化幫母親顧店。店裡賣手機殼、充電線、行動電源和保護貼。母親把新聞剪報收在櫃檯下面,與進貨單放在一起。她沒有告訴我為什麼留著。
第一週,我貼壞九張保護貼。氣泡總留在靠近聽筒的位置。母親說,刮板要慢慢推,看到灰塵就整張掀起來,不要假裝氣泡之後會自己消失。
有客人問我以前做什麼。
「寫程式。」
「什麼程式?」
「搜尋。」
「搜尋引擎?」
「差不多。」
他點點頭,把手機交給我。
那是一支舊型號。螢幕右上角有一道裂痕。保護貼貼上後,裂痕仍然看得見,只是手指摸不到。
晚上關店後,我會坐在櫃檯後面看案件文件。搜索扣押清單、偵訊筆錄、行政調查報告、解聘通知,每份文件對同一件事使用不同名稱。
異常資訊行為。
未授權存取事件。
違反工作規則。
涉嫌妨害電腦使用。
內部資安事件。
新聞使用的名稱最短:間諜門。
半年後,一家承包政府系統的公司找我做約聘工程師。
合約六個月,工作內容是文件索引、資料分類和權限治理。面試官只問我熟不熟悉Elasticsearch、文件雜湊和角色權限模型。
他沒有問新聞。
「專案很趕,客戶希望三個月內上線。」
「客戶是誰?」
「資服院。」
我看著他。
「有問題嗎?」
「沒有。」
我在合約上簽名。
母親知道後,只問薪水有沒有比店裡高。
我說有。
「那就去。」
「妳不問我為什麼要回去?」
她用刮板把保護貼下方最後一顆氣泡推出去。
「工作就是有人付錢叫妳做事。」
她把手機遞給客人,請對方檢查。
客人看了一遍,說可以。
十一 展示環境
我以廠商人員身分回到資服院。
新平台比XMAS更完整。
查詢前會檢查使用者的角色、案件編號和業務目的。高敏感資料需要第二人核准。每次預覽都有浮水印,內容包含使用者姓名、時間和來源IP。系統定期產生權限衝突清單,交由各單位主管確認。
它也更慢。
第一次查詢醫院名稱時,系統花了十一秒。XMAS當年只用三秒。
專案經理說,十一秒是可接受的安全成本。
我同意。
上線前,我在程式庫裡找到一段註解。
「先讓資料彼此看見,人才能決定該看什麼。」
那是我寫的。
版本紀錄顯示,作者是一名外包工程師,日期是新標案簽約後第三天。原始碼曾經經過兩次轉移,XMAS的提交紀錄已經消失。
我修正下一行的縮排,沒有刪除註解。
新平台上線當天,新任院長、部裡長官和幾名立委坐在前排。魏紹庭仍是副院長,頭髮比以前白了一些。
他在台上說,資服院已將過去的教訓轉化為治理韌性。新平台落實最小權限、持續驗證和完整稽核,確保每一次資料近用都有依據。
正式資料在此時跳出紅色告警。
一千八百多筆資產沒有管理者。
六十三組角色權限互相衝突。
三個單位仍使用已離職人員的帳號名稱。
其中一個帳號屬於黎恆之。
專案經理走到我旁邊。
「切展示環境。」
我看著他。
「活動先用展示資料。結束後再切回正式環境。」
我按下切換。
紅色方塊消失。資產完整率從百分之七十二變成百分之九十九點八。權限衝突從六十三組變成零。黎恆之的名字也從畫面上消失。
攝影師蹲在第一排前面。台上的人一起看向螢幕。
他們開始鼓掌。
我的手機在口袋裡震動。
律師寄來不起訴處分書。檢方認定沒有證據顯示資料流向院外,也無法證明我以取得特定機密為目的。服務帳號、全文索引和私人查詢涉及的行政及勞動責任,不影響刑事判斷。
柏勳的案件仍在偵查。
我把手機放回口袋。
專案經理問,展示畫面能不能維持到合照結束。
我說可以。
發表會結束後,魏紹庭到後台向專案團隊致意。
他依序和每個人握手。輪到我時,他看了一眼訪客證上的名字。
「妳現在在廠商這邊?」
「對。」
他停了一下。
「平台做得很好。」
「謝謝。」
「以前的事情,大家都付了代價。」
我沒有回答。
後面還有人等著握手。他很快走向下一位工程師。
晚上七點三分,我離開大樓。警衛撕下臨時證,貼在登記簿旁邊。
「明天還會來嗎?」
「會。」
「明天再申請。」
隔天早上,我再次報到。
警衛印出新的訪客證。姓名欄這次有字。
我進入辦公室,打開工作站。
九點十二分,承辦人寄來一張工單。
標題是「儀表板用語調整」。
內容只有一行:
「將『異常』統一改為『待確認』,避免未經人工判讀即產生負面意涵。」
我在程式庫裡搜尋「異常」。
共找到六十三處。
第一處出現在權限衝突頁面。
原始文字是:
「偵測到異常角色配置。」
我改成:
「偵測到待確認角色配置。」
第二處出現在離職帳號清單。
第三處出現在未指定管理者的資產。
修改到第十七處時,專案經理從後面經過。
「下午以前能完成嗎?」
「可以。」
他點頭,走向會議室。
螢幕右下角顯示,目前登入者為VISITOR-007。工作階段將在十七分鐘後失效。
我按下儲存。
接著打開第十八處。
框架:豆泥。文字:AI。