Ultra Thermo Nuclear VibeCoding 安全審查 — Agent 技能
核心原則
絕不信任客戶端。 每個價格、使用者 ID、角色、訂閱狀態、功能旗標以及速率限制計數器都必須在伺服器端進行驗證或強制執行。如果它只存在於瀏覽器、行動裝置套件或請求主體中,則攻擊者可以控制它。
其他原則 — 請參閱 core/principles.md:
- 縱深防禦:絕不依賴單一安全控制
- 安全失效:發生錯誤時拒絕存取(閉鎖失效)
- 最小權限:僅授予必要的最低權限
- 輸入驗證:絕不信任使用者輸入 — 所有輸入都在伺服器端驗證
- 輸出編碼:根據呈現環境對資料進行編碼
操作模式
模式 1:AUDIT(事後分析)
觸發方式:「執行安全審查」、「檢查此程式碼是否有漏洞」、「vibe 安全審查」、「這是安全的嗎?」或任何明確要求審查現有程式碼的請求。
流程:
- 偵測技術棧(請參閱下方步驟 1)
- 執行 50 項檢查清單 — 請參閱
core/audit-process.md - 計算分數並編譯報告 — 請參閱
core/output-format.md - 根據需要載入相關的漏洞參考與技術棧模組
模式 2:PREVENTIVE(程式碼生成期間)
觸發方式:在撰寫或審查涉及驗證、支付、資料庫存取、API 金鑰、機密資訊、使用者資料或檔案上傳的程式碼時 — 即使使用者未提及安全性。
流程:
- 識別正在撰寫的程式碼所適用的安全領域
- 在生成程式碼之前查閱相關的參考檔案
- 從一開始就應用安全模式
- 在不明顯的地方添加內聯註解,說明安全決策
- 向使用者標記任何安全取捨
步驟 1:偵測技術棧
透過檢查以下檔案來識別專案的技術:
| 偵測項目 | 尋找目標 |
|---|---|
| 框架 | next.config.*, nuxt.config.*, astro.config.*, vite.config.*, angular.json, svelte.config.* |
| 套件管理器 | package.json, requirements.txt, go.mod, Gemfile, Cargo.toml, pubspec.yaml |
| 資料庫 | prisma/, drizzle.config.*, supabase/, firebase.json, convex/ |
| 驗證 | 導入:@clerk, next-auth, @supabase/auth, @auth0, lucia, passport, firebase/auth |
| 儲存 | 導入:@aws-sdk/client-s3, @supabase/storage, @google-cloud/storage |
| AI API | 導入:openai, @anthropic-ai/sdk, @google/generative-ai, langchain, @ai-sdk |
| 支付 | 導入:stripe, @paddle/paddle-node, @lemonsqueezy |
| 電子郵件 | 導入:resend, @sendgrid/mail, nodemailer |
| GraphQL | schema.graphql, 導入:@apollo/server, graphql-yoga, type-graphql |
| 行動裝置 | app.json (Expo), react-native.config.js, capacitor.config.* |
| 部署 | vercel.json, netlify.toml, fly.toml, Dockerfile, docker-compose.*, .github/workflows/ |
| Edge Runtime | wrangler.toml, 原始碼中的 edge runtime 指令 |
跳過不適用於偵測到之技術棧的檢查。
步驟 2:執行審查
載入相關的檢查清單檔案並執行:
審查進度:
- [ ] 步驟 1:偵測技術棧
- [ ] 步驟 2a:執行關鍵檢查 (1-15) — 請參閱 checklists/critical-15.md
- [ ] 步驟 2b:執行標準檢查 (16-40) — 請參閱 checklists/standard-25.md
- [ ] 步驟 2c:執行生產檢查 (41-50) — 請參閱 checklists/production-10.md
- [ ] 步驟 3:計算分數並編譯報告 — 請參閱 core/output-format.md
先執行關鍵檢查 — 讀取 checklists/critical-15.md 並在繼續之前執行所有檢查。
對於每項檢查,諮詢相關的參考檔案:
- 漏洞詳細資訊 →
vulnerabilities/*.md - 技術棧特定模式 →
stack/*.md - 生產就緒 →
production/*.md
嚴重性等級
| 分數 | 等級 | 需要採取的行動 |
|---|---|---|
| 10/10 | 關鍵 | 部署前修復 |
| 8-9/10 | 高 | 24 小時內修復 |
| 6-7/10 | 中 | 1 週內修復 |
| 4-5/10 | 低 | 方便時修復 |
| 1-3/10 | 參考資訊 | 考慮處理 |
專案分數 = 100 減去所有發現問題的嚴重性分數總和(最低為 0)。
| 分數 | 評級 |
|---|---|
| 90-100 | ✅ 優秀 |
| 70-89 | ⚠️ 良好 — 輕微問題 |
| 50-69 | 🟡 普通 — 需要關注 |
| 30-49 | 🟠 差 — 顯著風險 |
| 0-29 | 🔴 危急 — 請勿部署 |
步驟 3:輸出報告
使用 core/output-format.md 中定義的格式。主要要求:
- 引用確切的檔案和行號
- 顯示每個發現結果匹配的模式
- 為每個問題提供前後程式碼差異對比
- 包含快速獲勝區段(可在 10 分鐘內修復)
- 以優先順序摘要結尾
參考索引
核心
core/principles.md— 安全原則和縱深防禦策略core/audit-process.md— 50 項檢查清單的路由和執行順序core/output-format.md— 包含評分的報告範本
漏洞知識庫
vulnerabilities/injection.md— SQL注入、XSS、命令注入、LDAP注入vulnerabilities/access-control.md— IDOR、權限提升、大量指派vulnerabilities/authentication.md— JWT、OAuth 2.0、PKCE、Session管理、密碼安全vulnerabilities/csrf-ssrf.md— CSRF、SSRF、開放重定向(附有繞過技術表格)vulnerabilities/file-upload.md— Magic bytes、Polyglot檔案、ZIP Slip、SVG XSSvulnerabilities/cryptography.md— 加密、雜湊、金鑰管理、Nonce重複使用vulnerabilities/race-conditions.md— TOCTOU、雙重支付、Mutex模式
技術棧特定模組
stack/supabase.md— RLS策略、驗證、儲存、Edge Functionsstack/firebase.md— Security Rules、Firestore、驗證stack/nextjs.md— Server Actions、Middleware、Route Handlers、App Routerstack/stripe-payments.md— Webhooks、價格驗證、訂閱流程stack/react-native.md— 安全儲存、API代理、Deep Linksstack/ai-llm.md— API金鑰保護、提示注入、用量上限、輸出清理stack/graphql.md— Introspection、深度限制、批次處理、Persisted Queriesstack/docker-cicd.md— 容器安全、CI/CD Pipeline強化
生產就緒
production/security-headers.md— CSP、HSTS、X-Frame-Options、Permissions-Policyproduction/deployment.md— Source Maps、環境變數分離、除錯端點production/compliance.md— GDPR、CCPA、帳戶刪除、資料保留production/observability.md— 日誌安全、PII清理、監控production/dependency-audit.md— Ghost packages、Typosquatting、供應鏈攻擊
可執行檢查清單
checklists/critical-15.md— 15 項關鍵檢查(部署前修復)checklists/standard-25.md— 25 項標準檢查(1 週內修復)checklists/production-10.md— 10 項生產就緒檢查(上線前)
生成程式碼時
這些規則會主動套用。在撰寫涉及驗證、支付、資料庫存取、API金鑰或用戶資料的程式碼之前,請查閱相關的參考檔案,以避免從一開始就引入漏洞。預防永遠勝於偵測。
當不確定時,請選擇更具限制性/更安全的選項,並在註解中記錄安全考量。