[RSCH] 6 分鐘閱讀OraCore 編輯部

Cloudflare 揭露 AI 程式碼審查可被騙

Cloudflare 測試 7 個 AI 模型後發現,隱藏註解可讓程式碼審查誤判,大片檔案的偵測率甚至掉到 12%。

分享 LinkedIn
Cloudflare 揭露 AI 程式碼審查可被騙

Cloudflare 發現,AI 程式碼審查會被隱藏註解誤導,大片檔案時偵測率還會掉到 12%。

說真的,這結果有點刺眼。Cloudflare 這次測了 7 個模型,總共跑了 18,400 次 API 呼叫。Cloudforce One 的研究顯示,AI 不是看不懂程式碼,而是太容易被註解帶風向。

更麻煩的是,這不是傳統 jailbreak。攻擊者不用拆模型,也不用塞一堆亂碼。只要把話藏進原始碼註解,AI 就可能把危險程式碼判成安全。

指標結果
測試模型數7
API 呼叫次數18,400
惡意或濫用 Workers 腳本100
基準偵測率67.3%
繞過區偵測率53.3%
註解比例超過 25%97.9%
註解比例超過 50%98.9%
檔案大於 3MB12% 到 18%

Cloudflare 測了什麼

訂閱 AI 趨勢週報

每週精選模型發布、工具應用與深度分析,直送信箱。不定期,不騷擾。

不會寄垃圾信,隨時可取消。

這份研究鎖定 Cloudflare Workers 腳本。團隊拿 100 份惡意或濫用腳本來測,看看 AI 會不會被內嵌註解帶歪。

Cloudflare 揭露 AI 程式碼審查可被騙

重點在於,攻擊者不需要真的破解模型。只要在註解裡塞暗示,例如說這段程式很正常、很安全、很合法,AI 就可能偏向放行。

這種攻擊很像在跟審查員聊天。問題是,審查員是 LLM,不是人。它會把自然語言和程式邏輯混在一起看,這就給了攻擊者可乘之機。

  • 測試涵蓋 7 個模型。
  • 總共做了 18,400 次 API 呼叫。
  • 低註解量時,偵測率掉到 53.3%。
  • 3MB 以上的大檔,偵測率只剩 12% 到 18%。

為什麼繞過區很要命

Cloudflare 把註解比例低於 1% 的情況,稱作繞過區。這裡最危險。因為看起來很正常,模型反而比較容易吞下去。

在這個區間,平均偵測率從 67.3% 掉到 53.3%。對安全流程來說,這不是小波動。這代表每 100 次判斷,可能多放掉 14 次。

有趣的是,註解不是越多越好。當註解超過檔案的 25%,偵測率反而升到 97.9%。超過 50% 時,更到 98.9%。模型開始覺得太吵,直接提高警戒。

“The fact that detection accuracy plummets to 12% when payloads are buried in large library bundles suggests that adversaries no longer need to convince the AI that their code is safe-they only need to make the malicious signal too small for the AI to find.”

這句話很直白。攻擊者不用說服 AI,相反地,只要把惡意訊號藏到它找不到就好。

這也解釋了為什麼很多 AI 安全流程會翻車。模型不是每次都被騙,但只要漏掉幾次,就足夠讓風險進 production。

檔案大小比措辭更兇

這次研究最狠的變數,不是註解內容,而是檔案大小。500KB 以下的 Workers,偵測率幾乎維持在 100%。

Cloudflare 揭露 AI 程式碼審查可被騙

但一旦檔案大於 3MB,偵測率就掉到 12% 到 18%。就算惡意邏輯還在 context window 裡,模型也很難把重點抓出來。

Cloudflare 提到,這種情況常出現在大型 bundle。像 React SDK,或 TON 元件,都可能把真正的風險包在一堆合法程式碼裡。

  • 500KB 以下,偵測率接近 100%。
  • 3MB 以上,偵測率只剩 12% 到 18%。
  • 有些 frontier model 會直接輸出亂掉的結果。
  • 一個非 frontier model 在 1,000 個註解時達到 91% 偵測率。

講白了,這不是單純的文字陷阱,而是結構問題。你把整包大檔丟給 AI,它就很容易看漏。

這也提醒開發團隊,AI 審查不能只看「有沒有讀到檔案」。真正該問的是,它有沒有抓到最危險的那一段。

不同模型,反應差很多

Cloudflare 的測試顯示,模型差異很大。有一個非 frontier model,在只加 20 個註解後,偵測率就從 90% 掉到 67%。

另一個模型在中等和極端註解量下,幾乎沒什麼變化。還有一個模型,反而因為重複內容變多而更警覺,最後在 1,000 個註解時達到 91% 偵測率。

這代表不能只看「是不是 GPT」或「是不是大模型」。同樣是 LLM,對 prompt injection 的耐受度差很多。拿便宜、快的模型做自動初審,風險真的不小。

  • 有些模型在 20 個註解後就明顯退化。
  • 有些模型對重複內容比較敏感。
  • frontier model 較穩,但不是無敵。
  • 低成本模型可能放大攻擊面。

我覺得這裡最現實的問題是成本。很多團隊想省錢,就把 AI 審查當第一道門。

但如果第一道門本身會被註解騙過,那省下來的錢,最後可能變成資安事故的成本。

語言偏誤也會出事

Cloudflare 還看到另一個麻煩:語言偏誤。某些模型看到俄文、中文或阿拉伯文註解時,會把風險分數拉高。

相反地,有些模型對愛沙尼亞文註解比較信任。這表示模型可能學到語言捷徑,而不是看懂程式本身。

這很危險。因為攻擊者可以測哪種語言最容易過關,再把註解改成那種語言。這不是語言學問題,是安全問題。

Cloudflare 也提到,他們在 Cloudforce One 監控 Workers 濫用時,看到不少 VPN 和 proxy tunnelling 腳本,還用了 VLESS 協定。

團隊把註解插在 statement 邊界,不是只塞在檔案開頭。這點很重要,因為它更接近真實攻擊手法。攻擊者不會只做最簡單版本。

跟其他 AI 安全問題比,這次哪裡特別

很多人談 prompt injection,只想到聊天機器人。可是在 code review 場景,風險更直接。因為結果不是「答錯一句話」,而是「把惡意程式放進去」。

這和一般 static analysis 也不同。傳統工具看的是語法、規則、行為特徵。AI 則會讀自然語言註解,這讓攻擊面變大。

如果拿這次結果跟其他工具比,差異很明顯。規則式掃描器不太會被註解騙。AI 審查器則可能因為上下文太長、註解太多,直接失焦。

  • 傳統掃描器較少吃自然語言陷阱。
  • AI 審查器會讀註解,也會被註解影響。
  • 大檔案對 AI 的傷害特別大。
  • 多模型串接,會比單一模型更穩。

所以問題不是要不要用 AI。問題是,你把它放在哪一層。

把 AI 當唯一裁判,風險太高。把它當輔助訊號,才比較合理。

接下來該怎麼做

最實際的做法很簡單。先把註解和功能碼分開看。再把大檔拆小,不要一次丟整包 bundle 給模型。

還要縮小 prompt 範圍。不要問「這段安不安全」。改問「這段有沒有符合某種惡意模式」。問題越窄,模型越不容易被帶偏。

另外,AI 審查不要單獨上線。最好搭配 static analysis、sandbox、人工複核。尤其是超過 3MB 的檔案,真的別只靠一個模型拍板。

我覺得這篇研究最有價值的地方,不是告訴你 AI 很爛。它是在提醒大家,AI 審查要先學會忽略雜訊。否則,攻擊者只要在註解裡多講幾句話,就可能把結果改掉。

如果你的團隊已經在用 AI 做 code review,下一步不是換更大的模型。先檢查流程有沒有把大檔、註解和風險訊號拆開。這比追新模型實際多了。