File size: 4,285 Bytes
c8d30bc | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 | # 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*
|