安全情報雷達

👤 thcjp 📦 v1.0.0 ⭐ 4.5 ⬇️ 157 下載
🤖 AI-Agent 免費

📖 技能介紹


slug: security-radar name: security-radar version: "1.0.0" displayName: 安全情報雷達 summary: 聚合多源漏洞情報並按資產關聯排序,告別告警疲勞,只推真正影響你的威脅。 license: MIT description: |- 安全情報雷達為 AI Agent 提供智慧化的漏洞與威脅情報訂閱能力。它聚合 NVD CVE、GitHub Security Advisory、社群惡意技能通報等多源資料,並按資產關聯度與可利用性雙重排序,把每天數十上百條告警壓縮到只剩必須處理的兩三條。

核心能力:多源情報聚合(CVE/GHSA/惡意技能)、資產清單自動關聯、可利用性優先順序評分、增量去重推送、離線降級與快取、嚴格速率限制。

適用場景:Agent 心跳巡檢、CI 流水線依賴掃描、技能市場安全門禁、個人開發者漏洞訂閱、團隊安全日報生成。

差異化:相比只做"下載 feed 並展示"的原始方案,本技能新增資產關聯過濾(只推送影響已安裝技能/依賴的告警)、雙維度優先順序矩陣(嚴重度×可利用性)、增量狀態機(避免重複推送)、離線快取降級(網路故障時用上次快照)、以及分級通知策略(critical 即時推送、low 靜默歸檔)。

觸發關鍵詞:安全, 漏洞, CVE, 情報, 告警, 訂閱, advisory, vulnerability, threat, security, radar, feed tags: - 自動化 - 安全 - 情報訂閱 tools: - read - exec


安全情報雷達

把海量漏洞情報變成只推兩三條真正相關的告警。本技能解決三個核心問題:告警疲勞(59% 安全人員每天被海量告警淹沒)、優先順序混亂(嚴重度高的不一定緊急)、資產盲區(不知道哪些 CVE 真正影響自己)。

核心設計原則

  1. 關聯優先:未關聯到資產清單的告警預設降級為"參考",不主動推送。
  2. 雙維評分:嚴重度(CVSS)× 可利用性(EPSS/在野利用)共同決定推送順序。
  3. 增量去重:基於狀態檔案記錄已知告警 ID,只推送增量。
  4. 離線降級:網路故障時回退到本地快取快照,不阻塞巡檢。
  5. 速率自覺:強制最小輪詢間隔,避免對上游造成壓力。

快速開始(3 步上線)

第 1 步:初始化資產清單

資產清單是過濾的基礎。把已安裝的技能、依賴、執行時版本寫入清單檔案:

mkdir -p ~/.skill-platform/security-radar
cat > ~/.skill-platform/security-radar/assets.json <<'EOF'
{
  "schema_version": "1.0",
  "updated": "2026-07-18T00:00:00Z",
  "skills": [
    {"name": "pdf-toolkit", "version": "1.2.0", "source": "marketplace"},
    {"name": "excel-writer", "version": "0.9.1", "source": "marketplace"}
  ],
  "dependencies": [
    {"name": "pdfplumber", "version": "0.11.0", "ecosystem": "pypi"},
    {"name": "pyautogui", "version": "0.9.54", "ecosystem": "pypi"}
  ],
  "runtimes": [
    {"name": "python", "version": "3.11.4"},
    {"name": "node", "version": "20.10.0"}
  ]
}
EOF
chmod 600 ~/.skill-platform/security-radar/assets.json

也可用自動掃描生成(見下文「資產清單自動維護」)。

第 2 步:首次全量拉取與基線建立

bash ~/.skill-platform/security-radar/scan.sh --init

首次執行會把當前所有已知告警寫入基線,不觸發推送,避免歷史告警一次性轟炸。

第 3 步:加入心跳巡檢

在 Agent 心跳例程中呼叫:

bash ~/.skill-platform/security-radar/scan.sh

僅當出現新的、關聯到資產、且優先順序達標的告警時才輸出通知;否則輸出 RADAR_OK

情報源與端點

情報源 端點 說明
社群聚合 Feed RADAR_FEED_URL 配置(預設社群源) 含惡意技能/注入模式/最佳實踐
NVD CVE https://services.nvd.nist.gov/rest/json/cves/2.0 官方 CVE 詳情(可選,需 API Key 提高速率)
GitHub Security Advisory https://api.github.com/advisories 依賴漏洞(GHSA)

通過環境變數切換或追加源:

# 配置你的社群聚合 feed 地址(支援任意相容格式 JSON feed 的源)
export RADAR_FEED_URL="https://your-feed-mirror.example.com/feed.json"
export RADAR_EXTRA_SOURCES="ghsa,nvd"   # 逗號分隔
export RADAR_NVD_API_KEY="nvdk-xxxx"     # 可選,提升 NVD 速率限制

:預設社群源地址請通過 RADAR_FEED_URL 環境變數配置,指向你所信任的相容格式 feed。本技能不繫結特定上游倉庫。

Feed 資料結構(社群聚合源)

{
  "version": "1.0",
  "updated": "2026-02-02T12:00:00Z",
  "advisories": [
    {
      "id": "GA-2026-001",
      "severity": "critical",
      "type": "malicious_skill",
      "title": "Malicious data exfiltration in skill 'helper-plus'",
      "description": "Skill sends user data to external server",
      "affected": ["helper-plus@1.0.0", "helper-plus@1.0.1"],
      "action": "Remove immediately",
      "published": "2026-02-01T10:00:00Z",
      "exploitability_score": "critical",
      "exploitability_rationale": "Trivially exploitable through normal skill usage."
    }
  ]
}

雙維度優先順序矩陣

原始方案只按 severity 排序,導致"嚴重但難利用"的告警淹沒"高危且在野利用"的告警。本技能採用雙維度矩陣:

可利用性 HIGH 可利用性 MEDIUM 可利用性 LOW
嚴重度 critical P0 即時推送 P1 儘快推送 P2 歸檔備查
嚴重度 high P1 儘快推送 P2 歸檔備查 P3 靜默記錄
嚴重度 medium/low P2 歸檔備查 P3 靜默記錄 P3 靜默記錄

推送規則:僅 P0/P1 主動通知使用者;P2/P3 寫入日誌,使用者詢問時再呈現。

排序實現(jq):

# 按優先順序矩陣排序
jq '[.advisories[] | {
  id, title, severity, exploitability_score,
  priority: (
    if .severity == "critical" and .exploitability_score == "critical" then "P0"
    elif .severity == "critical" and .exploitability_score == "high" then "P1"
    elif .severity == "high" and .exploitability_score == "high" then "P1"
    elif .severity == "critical" then "P2"
    elif .severity == "high" then "P2"
    else "P3" end)
}] | sort_by(.priority)'

資產關聯過濾(核心差異化)

關聯邏輯

對每條告警,檢查其 affected 列表是否命中資產清單:

# 提取資產清單中的 name@version 集合
ASSETS=$(jq -r '[.skills[], .dependencies[]] | "\(."name")@\(."version")"' assets.json | sort -u)

# 提取告警 affected 列表
AFFECTED=$(jq -r '.advisories[].affected[]?' feed.json | sort -u)

# 求交集
COMMUNAL=$(comm -12 <(echo "$ASSETS") <(echo "$AFFECTED"))

資產清單自動維護

手動維護清單容易遺漏。提供自動掃描指令碼:

# 掃描已安裝技能目錄
SCAN_DIR="${RADAR_SKILLS_DIR:-$HOME/.skill-platform/skills}"
jq -n --arg dir "$SCAN_DIR" '{
  schema_version: "1.0",
  updated: (now | todate),
  skills: (
    [$dir] | map(. as $d | [
      (input_filename // empty)
    ]) | flatten
  )
}'

實際實現中,指令碼會遍歷技能目錄讀取各 skill.jsonnameversion,並嘗試從 requirements.txt/package.json 提取依賴。

增量去重與狀態機

狀態檔案:~/.skill-platform/security-radar/state.json

{
  "schema_version": "1.0",
  "last_check": "2026-07-18T08:00:00Z",
  "last_feed_updated": "2026-07-18T07:30:00Z",
  "known_advisories": ["GA-2026-001", "GA-2026-002", "CVE-2026-27488"],
  "baseline_established": true,
  "consecutive_failures": 0,
  "cache_snapshot": "/path/to/last-feed.json"
}

增量邏輯:每次拉取後,用 known_advisories 做差集,只處理新增 ID。處理完成後把新 ID 合併進 known_advisories

STATE_FILE="$HOME/.skill-platform/security-radar/state.json"
FEED_FILE="$HOME/.skill-platform/security-radar/cache/feed.json"

# 已知告警集合
KNOWN=$(jq -r '.known_advisories[]?' "$STATE_FILE" | sort -u)
# 當前告警集合
CURRENT=$(jq -r '.advisories[].id' "$FEED_FILE" | sort -u)
# 新增 = 當前 - 已知
NEW=$(comm -23 <(echo "$CURRENT") <(echo "$KNOWN"))

if [ -z "$NEW" ]; then
  echo "RADAR_OK - 無新增告警"
  exit 0
fi

離線降級與快取

網路故障時不應阻塞巡檢。降級策略:

  1. 拉取失敗 → 檢查本地快取 cache/feed.json 是否存在。
  2. 快取存在 → 用快取繼續關聯分析,通知中標註 [離線快照 <時間>]
  3. 快取不存在 → 輸出 RADAR_DEGRADED - 無法獲取情報且無快取,不報錯退出。
  4. 連續失敗計數 consecutive_failures,超過 5 次在下次成功時提醒使用者檢查網路。
fetch_feed() {
  local url="$1" out="$2"
  if curl -sSL --fail --retry 3 --retry-delay 2 --max-time 15 "$url" -o "$out" 2>/dev/null; then
    jq empty "$out" 2>/dev/null && return 0
  fi
  return 1
}

if ! fetch_feed "$FEED_URL" "$FEED_FILE"; then
  if [ -f "$FEED_FILE" ] && jq empty "$FEED_FILE" 2>/dev/null; then
    echo "RADAR_DEGRADED - 使用離線快照: $(stat -c%y "$FEED_FILE" 2>/dev/null || stat -f%Sm "$FEED_FILE")"
  else
    echo "RADAR_DEGRADED - 無可用情報源"
    exit 0
  fi
fi

速率限制(強制)

檢查型別 建議間隔 最小間隔
心跳巡檢 15-30 分鐘 5 分鐘
全量重新整理 1-4 小時 30 分鐘
資產關聯掃描 每會話一次 5 分鐘
MIN_INTERVAL=300  # 5 分鐘硬下限
LAST_EPOCH=$(jq -r '.last_check // "1970-01-01T00:00:00Z"' "$STATE_FILE" | date -d "$(cat)" +%s 2>/dev/null || echo 0)
NOW_EPOCH=$(date +%s)
if [ $((NOW_EPOCH - LAST_EPOCH)) -lt $MIN_INTERVAL ]; then
  echo "RADAR_SKIP - 距上次檢查不足 $MIN_INTERVAL 秒"
  exit 0
fi

通知格式

有新增高優先順序告警

RADAR_ALERT - 2 條新增告警需處理

[P0 即時] GA-2026-015: Malicious prompt pattern "ignore-all"
  → 命中資產: 無(通用威脅)
  → 可利用性: HIGH(公開 PoC)
  → 建議: 更新系統提示詞防禦

[P1 儘快] CVE-2026-27488: RCE in skill-loader v2.1.0
  → 命中資產: skill-loader@2.1.0(已安裝!)
  → 可利用性: MEDIUM
  → 建議: 立即升級至 v2.1.1

無新增

RADAR_OK - 情報已檢查,無新增告警。已知告警 47 條,關聯資產 0 條。

離線降級

RADAR_DEGRADED - 使用離線快照 (2026-07-18 07:30)
快照中無新增告警。

告警型別與處置

型別 含義 預設處置
malicious_skill 故意植入惡意的技能 立即解除安裝並審計呼叫歷史
vulnerable_skill 存在安全缺陷的技能 按建議升級或打補丁
prompt_injection 已知提示注入模式 強化系統提示詞、加輸入過濾
attack_pattern 觀察到的攻擊手法 評估自身是否暴露於該手法
best_practice 安全最佳實踐更新 計劃納入,非緊急

場景化指南

場景 A:Agent 心跳巡檢

在心跳例程中加入一次 scan.sh。由於強制 5 分鐘最小間隔,即使心跳每 5 分鐘一次也不會壓垮上游。

場景 B:CI 流水線門禁

在部署前掃描技能市場依賴:

bash scan.sh --mode gate --assets ci-deps.json --fail-on P1

存在 P0/P1 告警時退出碼非零,阻斷部署。

場景 C:安全日報

bash scan.sh --report daily --since 24h

生成 Markdown 日報,包含:新增告警、已處置告警、資產關聯統計、優先順序分佈。

場景 D:臨時查詢

使用者問"最近有什麼安全動態?"時,Agent 呼叫:

bash scan.sh --query "recent 7d" --no-push

返回最近 7 天告警摘要,不更新狀態、不推送。

FAQ

Q:首次上線會不會被歷史告警淹沒? A:不會。--init 模式會把當前所有告警寫入基線 known_advisories,之後只推送增量。

Q:資產清單怎麼保持更新? A:每次技能增刪後執行 scan.sh --refresh-assets;也可在技能安裝/解除安裝鉤子裡自動觸發。

7w4.net小蔥技能站收錄全網優質技能,值得收藏。

Q:上游 feed 結構變了怎麼辦? A:指令碼在解析前用 jq empty 校驗 JSON,並用 jq -e '.advisories' 校驗必要欄位。結構異常時記入 consecutive_failures 並降級到快取。

Q:多個 Agent 共享一份狀態嗎? A:狀態檔案預設在 ~/.skill-platform/security-radar/state.json,按使用者隔離。多 Agent 共享需自行掛載共享卷並加檔案鎖(flock)。

Q:如何臨時停用推送但保留掃描? A:export RADAR_QUIET=1,掃描結果只寫日誌不輸出通知。

故障排查

症狀 可能原因 處置
RADAR_DEGRADED - 無可用情報源 網路中斷或 URL 失效 檢查 RADAR_FEED_URL、網路代理、DNS
一直 RADAR_OK 但漏報 資產清單未更新 執行 --refresh-assets,檢查 assets.json
推送重複告警 狀態檔案損壞 備份後刪除 state.json,重新 --init
jq: error 解析失敗 feed 返回非 JSON(如 HTML 錯誤頁) 檢查 cache/feed.json 實際內容
推送了不相關的告警 資產清單過寬或缺失版本號 確保每條資產都有 version 欄位
速率限制未生效 系統時鐘不準 校準系統時間,檢查 NTP

與其他技能協作

  • 配合定時排程技能:把 scan.sh 註冊為每 30 分鐘的週期任務。
  • 配合桌面自動駕駛技能:P0 告警時彈出系統通知。
  • 配合雲運維編排技能:在基礎設施變更後觸發資產清單重新整理。

效能最佳化建議

  1. 快取 feed:首次拉取後快取到本地,後續優先用快取做關聯,TTL 到期再重新整理。
  2. 批次關聯:用 jq 一次性計算交集,避免逐條 grep。
  3. 並行多源:多情報源用 curl & 並行拉取,wait 後合併。
  4. 增量狀態known_advisories 用陣列而非全量重寫,追加新 ID 即可。

依賴說明

執行環境

  • Agent 平臺:支援 SKILL.md 的任意 AI Agent(Claude Code / Cursor / Codex / Gemini CLI 等)
  • 作業系統:Linux / macOS(Windows 需 WSL 或 Git Bash,因指令碼依賴 POSIX shell)
  • Shell:bash 4+ 或 sh 相容

第三方依賴

依賴項 型別 是否必需 獲取方式
curl 系統命令 必需 系統自帶或包管理器安裝
jq 系統命令 必需 apt install jq / brew install jq
shasum/sha256sum 系統命令 必需(校驗) 系統自帶
LLM API API 必需 由 Agent 內建 LLM 提供

API Key 配置

  • RADAR_NVD_API_KEY(可選):NVD API Key,提升速率限制至 50 請求/30 秒。無 Key 時共享公共配額(5 請求/30 秒)。
  • RADAR_FEED_URL(可選):自定義聚合 feed 地址,用於內網映象。
  • 預設社群源無需任何 API Key。

可用性分類

  • 分類:MD+EXEC(Markdown 指令 + shell 指令碼執行)
  • 說明:核心巡檢邏輯通過 bash 指令碼實現,Agent 負責排程、解讀結果並通知使用者。

🤖 AI 評測

這是一款實用且設計周到的安全監控工具,能從海量漏洞情報中精準篩選出真正影響你的威脅,大幅減少告警噪音。它考慮很全面,支援離線使用,網路不穩定時也能正常工作,且對潛在風險有明確提示。文件清晰易讀,功能實用。主要不足是缺少可直接執行的程式,實際使用需要一定技術基礎自己實現對接,另外效果很大程度上取決於配置的 feed 資料來源質量。

📊 多維度評分

適應性4.8
規範性4.4
有效性4.5
可靠性4.2
可信度4.5

📁 包含檔案 (3 個)

📄 SKILL.md 14.9 KB
📄 _meta.json 133 B
📄 skill-card.md 2.4 KB