iT邦幫忙

2025 iThome 鐵人賽

DAY 14
0
Modern Web

AI 驅動的 Web 資安新時代系列 第 14

Day14 - Agent 偵測前端弱點:過時 JS Library 自動警示

  • 分享至 

  • xImage
  •  

在網站前端開發中,我們常常會引入各種第三方 JavaScript Library,像是 jQuery、Bootstrap、Lodash 等。但這些套件如果長時間沒有更新,就可能存在漏洞,例如:

  • jQuery 1.x → 已知的 XSS / 原型污染問題
  • Lodash < 4.17.21 → 任意代碼執行 (RCE) 漏洞
  • Bootstrap < 4.3.1 → XSS 漏洞

手動檢查版本號很麻煩,因此我們可以交給 AI Agent

  1. 收集前端回應 (HTML / JS 引用)
  2. 判斷 Library 是否過時
  3. 自動產生「警示 + 修正建議」

工作流程

  1. 收集
    • server.js 模擬一個前端頁面,引用舊版 jQuery。
  2. 分析
    • agent.js 爬取 HTML,抓取 <script> 標籤的 library 版本。
  3. AI 判斷
    • Gemini 檢查版本是否落後於安全版本。
  4. 回饋建議
    • AI 輸出「弱點 → 風險 → 建議更新版本」。

server - 模擬網站伺服器

建立一個簡單的 Express 伺服器,回傳含有過時 jQuery 的 HTML。

import express from "express";

const app = express();
const PORT = 3000;

app.get("/", (req, res) => {
  res.send(`
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <title>測試頁面</title>
      <!-- 故意引用過時的 jQuery 版本 -->
      <script src="https://code.jquery.com/jquery-1.8.3.min.js"></script>
    </head>
    <body>
      <h1>前端弱點測試</h1>
      <p>這個頁面引用了過時的 jQuery 版本。</p>
    </body>
    </html>
  `);
});

app.listen(PORT, () => {
  console.log(`測試伺服器啟動:http://localhost:${PORT}`);
});

AI Agent - 自動檢測與建議

1、抓取前端 HTML

fetch 取得伺服器回應

async function fetchHtml() {
  const res = await fetch(targetUrl);
  return await res.text();
}

2、Gemini 分析

下 Prompt,請 AI 判斷是否引用了過時的 JS Library,並給出修正建議

async function analyzeHtml(html) {
  const prompt = `
  你是一位資安顧問 AI。
  以下是網站的 HTML 內容,請檢查是否引用了過時或有漏洞的 JavaScript Library。
  - 請列出「弱點 → 原因 → 建議修正」。
  - 如果發現版本過時,請建議更新到最新穩定版本。

  HTML:
  ${html}
  `;

  const result = await model.generateContent(prompt);
  console.log("AI Agent 分析結果:\n");
  console.log(result.response.text());
}

3、主流程

(async () => {
  const html = await fetchHtml();
  await analyzeHtml(html);
})();

上一篇
Day13 - 我的 AI Agent 資安顧問:即問即答即執行
下一篇
Day15 - AI Agent 自動生成滲透測試腳本(SQLi / XSS 範例)
系列文
AI 驅動的 Web 資安新時代16
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言