在資安領域,「時間差」往往決定攻防勝負。
攻擊者 會第一時間找到 Exploit POC(Proof of Concept),並嘗試利用;
防禦者 若 lag 幾天才知道 CVE,就可能造成大規模入侵。
透過 Agent × RAG,我們可以建立「即時漏洞追蹤系統」,讓 AI 幫你查詢最新 CVE,並比對是否已有公開 POC。
import express from "express";
const app = express();
/api/cve
endpoint 回傳範例資料,方便本地測試 Agent。// 提供模擬 CVE API
app.get("/api/cve", (req, res) => {
res.json([
{
cve: "CVE-2025-12345",
desc: "Apache Struts Remote Code Execution",
cvss: 9.8,
poc: "https://github.com/exploit-db/12345"
}
]);
});
app.listen(3000, () => console.log("伺服器啟動中: http://localhost:3000"));
node-fetch
來呼叫本地 API,並用假想的 GoogleGenerativeAI
SDK 初始化 Gemini 模型。GEMINI_API_KEY
放在 .env
import fetch from "node-fetch";
import { GoogleGenerativeAI } from "@google/generative-ai";
import 'dotenv/config';
const API_KEY = process.env.GEMINI_API_KEY;
const genAI = new GoogleGenerativeAI(API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-2.5-flash" });
/api/cve
取得 CVE 清單。注意:篩選用 .includes 為示範,正式系統建議改用向量檢索(RAG)或更嚴謹的文字相似度比對;model.generateContent 請依你實際使用的 SDK 做參數/回傳格式的調整。
async function queryCVE(keyword) {
const res = await fetch("http://localhost:3000/api/cve");
const data = await res.json();
// 篩選關鍵字 & 高風險漏洞
const filtered = data.filter(item =>
item.desc.includes(keyword) && item.cvss >= 9.0
);
const prompt = `
以下是最新 CVE 資料:
${JSON.stringify(filtered, null, 2)}
請幫我整理成報告,包含:
1. CVE 編號
2. 漏洞描述
3. CVSS 分數
4. 是否已有 Exploit POC
5. 修補建議
`;
const result = await model.generateContent(prompt);
console.log(result.response.text());
}
queryCVE("Apache Struts");