下拉重新整理

用魔法對付魔法,我請 AI 先打自己的站

攻擊者已經用 AI 挖洞、寫攻擊程式。我請兩個 AI 分開對自己的部落格做白箱檢測,交叉比對結果,也記下 AI 判斷錯、漏掉的地方。

| 1,114 字 | 3 分鐘閱讀 | 75 次閱讀 |
字級
行距

fight-fire-cover.png

這個禮拜的資安新聞特別多。

PHP、GitLab、Node.js,這幾套全世界很多網站都在用的軟體,幾天之內接連公布漏洞。資安界會替漏洞打 0 到 10 分,分數越高越危險。這幾個都在 9 分以上,GitLab 那個是滿分 10 分。

這種新聞以前也有。這次不太一樣的地方是,找到漏洞的,越來越多是 AI。

攻擊的成本變低了

PHP 那個漏洞,是研究人員用 AI 輔助檢查程式碼時找到的。PHP 已經被全世界的工程師看了快三十年。

找到漏洞之後,下一步是寫出攻擊程式。有研究者做了一套 AI 系統,讀完漏洞公告,十幾分鐘就寫得出來,成本大約一美元。

速度也不一樣了。有資安公司統計過,漏洞從公開到被拿來攻擊,2018 年平均要兩年多。今年大約 8 小時。

fight-fire-01-time-to-exploit.png

這代表什麼?

以前我會覺得,我的部落格只是一個個人網站,沒什麼好打的。攻擊者時間有限,會挑值得的目標。

現在打一個網站的成本低到這種程度,攻擊者不用挑了。全部打一遍就好。

用魔法對付魔法

英文有一句話叫 Fight fire with fire,以火攻火。

攻擊者用 AI,那我也用 AI。我請 AI 扮演攻擊者,對自己的網站做一次白箱檢測。白箱的意思是把原始碼整份攤開來看,不是只從外面試。

這裡防守的一方有一個優勢。

網站底層用的框架是開源的,我看得到,攻擊者也看得到。那一層只能比誰快,修正版一出來就趕快升級。

但網站上大部分的功能是我自己寫的,原始碼只在我手上。攻擊者的 AI 只能從外面一次一次試,我的 AI 可以直接讀程式碼。

fight-fire-02-who-sees-source.png

這個優勢,不用就浪費了。

我請了兩個不同公司的 AI,分開檢查,彼此不知道對方的結果。一個列了 32 個問題,一個列了 5 個。

fight-fire-03-two-ai-overlap.png

數量差很多,但我在意的不是數量。兩邊都抓到的,我比較確定是真的。只有一邊抓到的,就是另一邊漏掉的地方。只問一個 AI,這些就看不到。

AI 也會錯

AI 幫我省了很多時間,但它不是每次都對。

其中一個 AI 在報告裡寫,某個功能不會讓伺服器主動連到外面。我自己打開程式碼看,那個功能每次發文都會連出去一次。

如果我只看那一份報告,這個問題就過去了。

另一件事讓我比較在意。今年 7 月 Rails 有一個嚴重漏洞,可以讓攻擊者讀取伺服器上的檔案。我在公告隔天就升級了,一直以為這件事處理完了。

這次回頭把那份公告整份讀完,才看到後面還有一段:修好之後,所有的密鑰都要換掉。

為什麼?因為修好之前,密鑰可能已經被讀走了。換了鎖,鑰匙卻沒換。

兩份 AI 的檢測報告都沒提到這件事。我請它們看的是程式碼,沒請它們回頭看公告。

AI 可以幫你把範圍拉大,但哪些是真的、還漏了什麼,最後還是要人來判斷。

修到哪裡了

檢測找到的嚴重問題,都已經修好上線了。

密鑰還沒換。這一項我還沒做。換密鑰會讓所有登入狀態失效,要挑時間處理,排在接下來要做的事情裡。

你可以做的事

如果你也有一個自己維護的網站,或是要對公司的網站負責,可以先做這幾件事。

升級之後,把公告整份讀完。升級只是第一步。

請 AI 讀你的原始碼。原始碼在你手上,這是攻擊者沒有的東西。

找兩個 AI 分開看。意見不同的地方,最值得細看。

AI 說沒問題的地方,挑幾個自己打開來確認。

攻擊者已經在用 AI 了。

那防守的這一邊,也該開始用了。


參考資料:GitLab 談 PHP2Shell、AI 產生攻擊程式的研究、SL Cyber 統計、Rapid7 對 7 月 Rails 漏洞的分析

security 公開 security ai whitebox-testing claude-code codex rails