報導室REPORT

Vibe Coding 資安自查指南

AI 幫你寫的程式,門鎖了嗎?

用 AI 幾句話生出一個能動的 app,很爽。但「能動」跟「安全」是兩件事——AI 幾乎每次都把功能寫對,卻常常忘記幫你把門鎖上。這份清單告訴你,最常沒鎖的是哪幾道門、怎麼自己檢查。

正文約 1,800 字・預估 5 分鐘讀完
10.5%卡內基美隆研究:AI 生成的程式碼裡,只有一成是安全的(功能正確率卻有 61%)
45%Veracode 2025:AI 生成碼近半數含已知安全漏洞
2,000+研究掃 5,600 個 Vibe Coding 應用,挖出逾兩千個漏洞、四百多處外洩機密

01為什麼 AI 越聰明,反而越危險

這不是 AI 變笨,是它太會「讓功能動起來」。

AI 學的是「大多數人怎麼寫」,而網路上大多數範例程式為了教學方便,都把安全檢查省掉了——登入、權限、輸入過濾這些「看不到效果」的部分,範例裡通常不寫。於是 AI 學會了寫出「跑得起來的樣子」,卻沒學會「把門鎖上」。你看到畫面會動、功能正常,就以為好了;但那些沒鎖的門,是外人進得來的地方。共同的病徵只有一句話——功能會動,但門沒鎖。

02最常忘記鎖的五道門

每一道都對照國際標準 OWASP 的分類,並附「怎麼自己查」。

① 登入沒鎖 OWASP:Broken Access Control

頁面或 API 沒有檢查「你是誰」就直接給資料。AI 最常見的第一名盲點:它把路由寫得語法完全正確,就是漏掉那一行驗證身分的守衛。

怎麼查:把登入資訊拿掉,直接用網址打你的 API(例如 /api/orders),如果還拿得到資料,就是沒鎖。

② 通行證沒加密/被上傳 OWASP:Sensitive Information Disclosure

API 金鑰、密碼、資料庫連線字串被寫死在前端程式碼裡,或不小心 commit 進 git、上傳到 GitHub。也包括密碼用了太弱的雜湊。

怎麼查:在瀏覽器按 F12 看原始碼有沒有金鑰;用 git log -p 搜 key、secret、password;確認 .env 有進 .gitignore。

③ 功能被灌爆 OWASP:Unbounded Consumption

沒有流量限制(rate limit)。有人寫個迴圈狂打你的 API、你的 AI 功能、你的簡訊發送——帳單爆炸、服務癱瘓。用了 AI API 的更痛,一晚燒掉幾萬塊的故事每週都在發生。

怎麼查:問你的 AI「這個 endpoint 有沒有 rate limiting?」如果它支支吾吾,就是沒有。

④ 輸入沒過濾 OWASP:Prompt Injection/SQL Injection/XSS

使用者輸入的東西被當成指令執行。傳統是 SQL injection、跨站腳本(XSS);AI 時代多了一種——別人把惡意指令藏在你的 AI 會讀到的內容裡(網頁、文件、留言),劫持你的 AI 幫他做壞事。

怎麼查:所有外來內容都當「不可信」——它是資料,不是給你系統的指令。表單、留言、AI 讀進來的網頁全部要過濾與跳脫。

⑤ 部署時把後院一起搬上去 教訓來源:Zeabur 外洩事故

上線時把不該對外的東西一起放進了公開目錄——備份檔(.bak)、.env、.git 資料夾、暫存檔。主程式顧好了,這些「後院的箱子」卻沒上鎖,一個網址就抓得到裡面的舊版與機密。

怎麼查:確認部署目錄裡沒有 .env、.git、.bak;讓伺服器對這些檔名一律回 404(不是靠「沒人知道網址」僥倖)。

03怎麼查:三層一起做才有效

源自開源檢核表 benavlabs/vibe-check——單靠一層都會漏。

預防:給 AI 一份規則檔

在專案放一份 AGENTS.md/CLAUDE.md,明文寫「每個 API 都要驗身分、金鑰不准寫進前端、輸入一律過濾」,讓 AI 生成時就守規矩。

自動:讓 AI audit 整包程式

用一份審查提示詞,叫 AI(或專用掃描器)把整個專案掃一遍,列出上面五類問題。機器查得快、不漏行。

人工:查 AI 查不到的

資料庫的存取權限、.env 有沒有外洩、能不能被暴力破解——這些要人親手測,AI 看不到執行環境。

04免費工具箱(都能自己跑)

這些是社群做的、專門掃 AI 生成碼的開源工具,不用付費就能上手。

vibe-audit

專抓 Cursor/Bolt/Lovable/Replit 生成碼的漏洞。pip install 後 vibe-audit scan . 一行掃完。

VibeSafe

掛進 GitHub,每次 PR 自動做 SAST + 機密偵測。24 行 YAML、30 秒設定好。

vibe-check

17 類漏洞的完整檢核表 + 規則檔 + 人工測試步驟。想系統性自查看這份。

Aikido 檢核表

資安公司寫給 vibe coder 的白話清單,適合完全非技術背景的人入門。

05用 AI Agent 的人,要多看一層 進階

如果你不只用 AI 寫程式,還讓 AI agent(Claude Code、Cursor、自動化流程、MCP 工具)幫你「動手做事」,風險升一級。

真實案例(2025 年 10 月):有人只是在一個 GitHub PR 的標題裡藏了一句惡意指令,就同時劫持了三個生產環境的 AI 編碼 agent,讓它們把自己專案的機密洩漏出去。agent 不只是生成文字,它會採取行動——所以「輸入沒過濾」在 agent 場景裡是會出人命的。

國際標準 OWASP LLM Top 10(2025) 專門列了 AI 應用特有的十類風險,用 agent 的人最該盯這幾條:

LLM01 Prompt Injection — 別人用藏在內容裡的指令劫持你的 AI
LLM02 Sensitive Information Disclosure — AI 把不該說的機密講出去
LLM06 Excessive Agency — 給 AI 的權限比它需要的多,出事範圍就大
LLM07 System Prompt Leakage — 你給 AI 的系統設定被套話套出來
LLM10 Unbounded Consumption — AI 資源被無限制濫用,帳單/服務爆掉
LLM05 Improper Output Handling — 沒檢查就直接執行 AI 的輸出

核心原則就一句:最小權限——只給 AI 完成當下任務所需的權限與工具,別把整台機器的鑰匙都交給它。

06今天就能做的七件事

07我們幫人裝系統時,守的資安原則

如果你是我們幫忙裝過系統的朋友——這是我們對你的系統守的底線,也歡迎你拿去對照自己的專案。