cover

一份列了三十個問題的資安報告,讀起來很有壓力,但它是安全的——因為你會繼續往下查。

真正危險的是很乾淨的那份。它讓你停止再看。

這篇整理的十個盲點,都不是「忘了做某件事」——忘記是容易發現的,下次補上就好。它們全都是**「以為做了,但沒做到」**:你執行了檢查、產出了報告、打了勾,而那個勾跟實際狀態之間有一段沒人跨過的距離。

跟「資安治理的 anti-pattern」那類題目不同:那些講的是設定本身做錯了(權限開太寬、憑證寫進設定檔)。這篇講的是你的檢查方法讓你看不見設定做錯了。前者是傷口,後者是為什麼你沒發現傷口。

第一組:把動作當成效果

這三個的共同根源是同一件事——完成了一個動作,就當成達成了一個效果。

把「有設定」當成「有效」。 停用了離職者的帳號,但他的存取金鑰還能用;開了備份排程,但從來沒還原過;WAF 規則設好了,但停在觀察模式沒有真的擋。介面上顯示「已啟用」不是驗證,它只證明你按過那個按鈕。

把「清單」當成「清查」。 掃出一份現況,歸檔,明年再掃一份。兩份都在,但你從來沒有把它們放在一起看過——因為人沒辦法用肉眼比對兩份幾十列的表。沒有基線可比的清查,產出的是一份現況快照,不是清查結果。

把「需要記得」當成「流程」。 「我們每季會檢查一次」——由誰在什麼時候想起來?靠人記得去執行的檢查,實際執行率遠低於你以為的數字,而且沒有人會回報「這季我忘了」。需要記得的事,就是遲早會忘的事。

第二組:看不見的那部分

這一組最難自己發現,因為它們的共同點是你的視野邊界,就是你的安全邊界。

只看自己開了什麼,不看自己刪了什麼留下的洞。 建立資源會留下紀錄、會被清查掃到、會有人負責。刪除不會。你刪掉一個服務,但指向它的 DNS 記錄還在,那個子網域可以被別人接管拿去發釣魚信;你停用了離職者的帳號,但他當初建立的服務帳號和 API token 完全不受影響,因為那些東西不掛在他名下。

沒有人在追蹤不存在的東西,所以刪除留下的洞會一直躺在那裡。

檢查範圍等於已知範圍。 你只會檢查你知道的資產。那台前同事開來測試、後來忘了關的機器不在你的清單裡,所以它不會被掃到;某個部門自己刷卡開的雲端帳號不在你的帳單裡,所以它不會被納管。

這是最根本的一個盲點,因為它會讓前面所有檢查的結論同時失效——你的報告說「全部檢查完畢,沒有問題」,而那個「全部」只是「全部我知道的」。

報告只寫發現,不寫沒查到的。 承接上一點:如果報告不誠實交代覆蓋率,讀報告的人沒有辦法知道那個「全部」有多大。一份寫著「掃描三個帳號、發現兩個問題」的報告,跟一份寫著「應掃四個帳號,其中一個因為沒有權限沒掃到,其餘三個發現兩個問題」的報告,結論的可信度完全不同。

掃不到本身就是一種發現,而且往往是最重要的那個。

第三組:把「不方便」當成「安全」

信任「沒人知道」。 管理後台沒掛認證,因為網址很長沒人猜得到;測試環境對外開著,因為沒有連結指過去。這個推理的問題在於,它假設攻擊者是用猜的——但掃描器不需要猜,它把整段 IP 和常見路徑跑一遍就好。不方便找到,跟找不到,是兩件事。

測試環境用真實資料。 為了測得準,把正式資料庫複製一份到測試環境。於是防護較低的環境裡有了真實的個人資料,而測試環境的存取權限通常比正式環境寬鬆得多。一個動作同時擴大了外洩範圍和稽核範圍。

第四組:時間感的錯誤

處置順序搞反。 發現憑證被 commit 進 git,多數人第一件事是清 history。但清理需要時間,那段時間憑證還是有效的——如果已經外流,你在整理歷史紀錄的同時,別人正在用它。正確順序是先輪替,輪替完之後 history 裡那串字就只是一串沒用的字元。

同樣的錯誤也出現在修補優先順序上:先修好修的,因為容易有成就感。但好不好修跟危不危險沒有關係。

例外沒有到期日。 檢查一定會遇到「這個確實不合規,但現在不能動」的項目,於是記成例外放行。放行沒有問題,沒有到期日才有問題。沒有到期日的例外會安靜地變成永久狀態,兩三年後沒有人記得當初為什麼放行,也沒有人敢動它。

到期日的作用不是逼你在那天之前解決,是逼你在那天重新確認一次「還要不要繼續放行」。


這十個盲點放在一起看,會發現它們有一個共同的結果:它們都讓你感覺安全。

這才是它們真正的危險之處。一個從來沒做過資安檢查的人,知道自己不知道;一個做了帶著這些盲點的檢查、拿到一份乾淨報告的人,以為自己知道。後者比前者更難被說服去看第二次。

所以每一項檢查真正該問的最後一個問題不是「有沒有發現問題」,而是——如果這裡真的有問題,我現在這套做法看得見嗎?

盲點對應的驗證動作
有設定當有效用結果驗證,不看介面顯示
清單當清查建立基線,產出差異而不是快照
需要記得當流程能做成監控的就不要靠人啟動
只看開了什麼把「刪除留下的東西」列成獨立檢查項
檢查範圍等於已知範圍主動尋找不在清單上的資產
報告不寫沒查到的報告固定加一段覆蓋率說明
信任沒人知道從外部視角掃一次,不用內部知識
測試環境用真實資料複製流程強制加去識別化步驟
處置順序搞反先讓傷害停止,再處理現場
例外沒到期日例外欄位強制填到期日,過期自動回到待辦

延伸閱讀


檢查的價值不在於你發現了多少問題,在於你能不能相信「沒發現問題」這個結論。