| # ThreatHunter — Agent 本質說明 |
|
|
| > 每個 Agent 在做什麼?用一句話說清楚。 |
|
|
| --- |
|
|
| ## 🎯 Orchestrator Agent |
| **本質:交通指揮員** |
|
|
| 看你輸入的是什麼(套件清單?原始碼?設定檔?), |
| 決定後面要走哪條路。它自己不做任何分析。 |
|
|
| | 輸入 | 輸出 | |
| |------|------| |
| | 用戶的技術堆疊 / 原始碼 / 套件清單 | `Path A / B / C / D` 的路由決定 | |
|
|
| ``` |
| 套件清單 → Path A(套件 CVE 掃描) |
| 原始碼 → Path B(程式碼靜態審計) |
| 設定檔 → Path C(設定錯誤審計) |
| 回饋/補充 → Path D(記憶增強再分析) |
| ``` |
|
|
| --- |
|
|
| ## 🔍 Security Guard Agent |
| **本質:靜態掃描器(不用 LLM)** |
|
|
| 用 AST + 正則表達式,確定性地找出程式碼裡的危險模式。 |
| 它**不猜測、不推理**,只比對已知的 20+ 種攻擊格式。 |
|
|
| | 輸入 | 輸出 | |
| |------|------| |
| | 原始程式碼(PHP/Python/Java/JS) | 偵測到的 CWE 列表 + 行號 + 危險片段 | |
|
|
| ``` |
| 原始碼中有 eval() → CWE-95 (Code Injection) |
| 有 SQL 字串拼接 → CWE-89 (SQL Injection) |
| 有 shell_exec() → CWE-78 (Command Injection) |
| 有 include($var) → CWE-98 (File Inclusion) |
| ``` |
|
|
| --- |
|
|
| ## 🌐 Intel Fusion Agent |
| **本質:CVE 情報聚合器(只對第三方套件有效)** |
|
|
| 給它一個套件名稱(如 `requests`、`flask`), |
| 它去查 NVD / OSV / KEV / EPSS 六個來源, |
| 返回這個套件所有已知 CVE 的風險分數。 |
|
|
| | 輸入 | 輸出 | |
| |------|------| |
| | 第三方套件名稱列表 | 每個 CVE 的六維複合分數(CVSS + EPSS + KEV + ...) | |
|
|
| ``` |
| requests → CVE-2023-32681 (CVSS 6.1, EPSS 0.03, not in KEV) |
| flask → CVE-2023-30861 (CVSS 7.5, EPSS 0.12, not in KEV) |
| ``` |
|
|
| > ⚠️ **限制**:只對已知第三方套件有效。 |
| > 自定義程式碼(PHP/Java 純 JDK)沒有 CVE,它找不到東西。 |
|
|
| --- |
|
|
| ## 🕵️ Scout Agent |
| **本質:威脅情報彙整員 + 記憶比對員** |
|
|
| 拿到 Security Guard + Intel Fusion 的結果, |
| 整理成統一格式,並和記憶系統比對: |
| 「這個漏洞是新的,還是上次就有?」 |
|
|
| | 輸入 | 輸出 | |
| |------|------| |
| | SG 的 CWE 清單 + IF 的 CVE 分數 | 結構化威脅清單(new / repeated / resolved) | |
|
|
| ``` |
| 上次有 CVE-2023-32681 → 這次還有 → REPEATED ⚠️ |
| 這次新出現 CVE-2024-X → NEW 🔴 |
| 上次有,這次沒有 → RESOLVED ✅ |
| ``` |
|
|
| --- |
|
|
| ## 🧠 Analyst Agent |
| **本質:攻擊鏈推理師** |
|
|
| Scout 只是列清單,Analyst 負責**想攻擊者的思路**: |
| 「這幾個漏洞組合起來,最壞情況是什麼?」 |
|
|
| | 輸入 | 輸出 | |
| |------|------| |
| | 威脅清單(Scout 輸出) | 攻擊鏈分析 + 組合風險評估 | |
|
|
| ``` |
| SSRF (Medium) + Redis 無密碼 (Medium) |
| → SSRF 打到內網 Redis → 寫入 crontab → shell 執行 |
| → 組合風險 = CRITICAL 🔴(兩個 Medium 組合 ≠ 中危) |
| ``` |
|
|
| --- |
|
|
| ## ⚔️ Critic Agent |
| **本質:魔鬼代言人** |
|
|
| 用對抗式思維質疑 Analyst 的結論: |
| 「這個攻擊鏈真的可行嗎?還是誇大了?」 |
|
|
| | 輸入 | 輸出 | |
| |------|------| |
| | Analyst 的攻擊鏈分析 | 驗證後的風險評估(修正誤報 / 確認高風險) | |
|
|
| ``` |
| Analyst:這個 RCE 是 CRITICAL |
| Critic:攻擊者需要內網存取才能觸發 |
| → 降為 HIGH(修正誇大風險) |
| ``` |
|
|
| --- |
|
|
| ## 📋 Advisor Agent |
| **本質:行動報告產生器(最後一關)** |
|
|
| 把所有分析轉換成**人看得懂、可直接執行的行動清單**。 |
| 並通過 Harness Layer 4.5 憲法守衛確保: |
| - `URGENT` 只放有真實 CVE 佐證的漏洞 |
| - 沒有 CVE 來源的 CODE-pattern 不進入行動清單 |
|
|
| | 輸入 | 輸出 | |
| |------|------| |
| | Analyst + Critic 結論 | URGENT / IMPORTANT / MONITOR 行動清單 | |
|
|
| ``` |
| URGENT: |
| CVE-2023-32681 | requests 2.28.0 | CVSS 6.1 |
| → pip install requests>=2.31.0 |
| ``` |
|
|
| --- |
|
|
| ## 整體流程 |
|
|
| ``` |
| 用戶輸入 |
| → Orchestrator 決定路徑 |
| → Security Guard 找危險模式(確定性) |
| → Intel Fusion 查套件 CVE(LLM + API) |
| → Scout 整理並比對記憶 |
| → Analyst 推理攻擊鏈 |
| → Critic 質疑是否誇大 |
| → Advisor 輸出行動報告 |
| ``` |
|
|
| **每個 Agent 只做自己的事,不越界。** |
|
|
| --- |
|
|
| *ThreatHunter v5.3 | AMD Developer Hackathon 2026* |
|
|