LiadMatus/ai-security-trends
GitHub: LiadMatus/ai-security-trends
一个基于实时网络搜索的 AI/LLM 威胁情报仪表板,解决威胁更新慢、噪声大且缺乏分类的问题。
Stars: 0 | Forks: 0
# AI 安全情报仪表板
为 AI/LLM 安全研究人员提供的实时威胁情报源。背景搜索引擎每日(按需)向 Anthropic API 发起实时网络搜索,将结果存储在本地 SQLite 数据库中,并通过 Express API 为 React 前端提供服务。
    
## 为什么需要这个情报源
AI 安全领域的发展速度远超人工手动跟踪。新出现的越狱技术、提示注入漏洞、模型窃取论文以及供应链事件每天都在发布——分散在 arXiv 预印本、厂商安全博客、Reddit 帖子、CVE 数据库、GitHub 安全建议和会议论文集中。没有单一的聚合器能覆盖全部,而且大多数安全仪表板都会滞后数天甚至数周。
**现有方法的痛点:**
- **MITRE ATLAS / OWASP LLM Top 10** — 权威分类法但更新不频繁;不是实时情报源
- **Google Alerts / RSS** — 噪声大、未分类、无严重性信号、无去重
- **手动浏览标签页** — 不可扩展;容易错过灰色网络披露(Reddit PoC、研究人员 LinkedIn 帖子、Exploit-db 提交),这些往往比主流报道提前数天
- **商业威胁情报平台** — 昂贵、通用的,非专门针对 AI 安全
**本情报源的不同之处:**
1. **始终最新** — 依托 Anthropic API 层的实时网络搜索;每次获取反映当前网络真实存在的内容,而非静态快照
2. **关注灰色网络** — 明确针对 Reddit、LinkedIn、Hacker News、Exploit-DB、seclists.org 和 GitHub PoC 仓库中的研究者披露;这些是威胁首次出现的地方
3. **AI 安全专属** — 每条结果均通过严格分类和黑名单进行相关性过滤;不包含加密货币新闻或与 AI/ML 系统无关的通用 CVE
4. **严重性分级** — 通过 Critical/High/Medium/Low/Info 标签实现一眼概览,无需逐条阅读
5. **持久化与可搜索** — 结果累积在本地 SQLite 数据库中,支持全文搜索、同义词扩展和模糊匹配;这是一个可查询的订阅源,而不仅仅是滚动浏览
6. **零基础设施** — 仅凭一台笔记本电脑即可运行,单条 `npm run dev` 指令;除 Anthropic API 调用外无云端依赖
目标是让 AI 安全研究人员和实践者获得与全职威胁情报分析师相当的态势感知能力,而无需手动操作。
## 功能特性
### 订阅源
- **实时网络搜索** — 基于 `claude-sonnet-4-5` 和 `web_search_20250305`,结果反映当前威胁态势
- **广泛的来源覆盖** — 安全研究(arXiv、Black Hat、DEF CON)、厂商博客(Google、Microsoft、OpenAI、Anthropic)、新闻(Bleeping Computer、Dark Reading、Krebs)、灰色网络来源(Reddit r/netsec、LinkedIn 网络安全小组、Hacker News)以及漏洞数据库(Exploit-DB、PacketStorm、seclists.org、NVD/CVE、GitHub 安全建议)
- **7 个分类** — All、Prompt Injection、Jailbreaks、Model Theft、Supply Chain、Policy & Regulation、Research
- **多分类标签** — 每条条目可携带所有相关分类标签,而不仅是一个
- **严重性分级** — Critical / High / Medium / Low / Info 标签,支持一键过滤
- **阅读追踪** — 标记条目为已读/未读;状态在服务器端以 SQLite 持久化
- **三态阅读过滤器** — All / Unread only / Read only
- **展开详情模态框** — 点击任意卡片可打开完整详情覆盖层,包含来源、URL、日期和所有分类;可使用 ‹ › 或方向键在条目间导航
- **全部展开 / 过滤展开** — 工具栏按钮可在条目 1 处打开模态框,并允许通过方向键遍历所有已加载条目(或当前过滤集合)
- **加载更多** — 获取超出初始 10 条的结果;当本地数据库耗尽时触发多角度后台搜索
- **全部加载** — 一次性获取当前分类下的所有数据库条目
- **威胁摘要** — 实时汇总栏显示严重性分布、顶级攻击类别、日期覆盖范围和最严重条目标题;每次请求均根据完整数据库状态实时计算
- **深色模式** — 通过 CSS 变量遵循系统偏好
- **响应式布局** — 居中布局,最大宽度 960 px,使用 `clamp()` 实现流体内边距
### 架构
- **SQLite 持久化** — 所有威胁存储在 `data/threats.db` 中(通过 `better-sqlite3`);服务器重启后数据仍保留
- **后台搜索引擎** — 与 Web UI 独立运行;前端不会等待 Anthropic 调用
- **扫描持久化** — 活动扫描在分类切换和页面刷新后仍保持;全局轮询引用(`scanPollRef`)独立跟踪扫描状态
- **每日定时任务** — 搜索引擎每天 06:00 UTC 自动运行,每次最多获取 60 条新条目(6 个分类 × 每类 10 条)
- **按需扩展搜索** — “加载更多”耗尽数据库时触发每个分类 4 次查询的扩展搜索,调用之间间隔 15 秒;“全部”分类提供快速扫描(6 次查询)与深度扫描(24 次查询)两种选择
- **Express 后端** — API 密钥仅保存在服务器端,绝不暴露给浏览器或网络面板
- **5 分钟服务器缓存** — 基于内存的共享缓存,位于 SQLite 之上;新数据到达时自动清除
- **浏览器 localStorage 缓存** — 缓存镜像服务器数据,实现页面加载时的即时显示(版本化键 `aisec_v2_`,在模式变更时失效)
- **Stale-while-revalidate** — 缓存数据立即渲染,同时后台执行新鲜获取
- **日期准确性** — 所有日期在插入前统一规范化为 `YYYY-MM-DD`;未来日期(模型幻觉)在插入时和启动迁移时会被钳制为当天
### 搜索
- **同义词扩展** — 18 组 AI 安全术语;`vuln` 匹配 “vulnerability / flaw / CVE”,`inject` 匹配 “prompt injection / indirect injection / PIA”,`llm` 匹配 “model / GPT / Gemini” 等
- **模糊匹配** — 基于 Levenshtein 编辑距离的容错机制,可捕获拼写错误(`jailbreka`、`expolit`)
- **相关性评分** — 按加权字段得分排序(标题 › 摘要 › 来源);查询激活时按相关性排序
- **语法** — `"精确短语"`、`-排除`、`term OR term`
- **字段切换** — 可在标题 / 摘要 / 来源 / 分类 / 严重性 / 日期 / URL 之间任意组合搜索
- **匹配模式** — 全词匹配(AND)/ 任意词匹配(OR)
- **模糊与高亮开关** — 关闭模糊以进行严格匹配;切换琥珀色高亮显示卡片文本中的匹配词
- **最近搜索** — 最近 8 条查询保存在 localStorage 中,焦点时以下拉菜单显示
- **`/` 快捷键** — 在任意位置按下 `/` 即可聚焦搜索框
## 安装与运行
### 前置条件
- Node.js 20+
- Anthropic API 密钥(需包含对 `claude-sonnet-4-5` 和 `web_search_20250305` 工具的访问权限)
### 安装并运行
```
npm install
npm run dev
```
访问 [http://localhost:5173](http://localhost:5173)。Vite 开发服务器(`:5173`)与 Express API 服务器(`:3001`)会通过 `concurrently` 一起启动。
在首次运行且数据库为空时,搜索引擎会在后台自动触发——订阅源将在约一两分钟内开始填充数据。
### API 密钥
在项目根目录创建 `.env.local` 文件(已排除在 Git 跟踪之外):
```
ANTHROPIC_API_KEY=sk-ant-...
```
该密钥仅由 Express 服务器读取,绝不会发送到浏览器。
### 生产构建
```
npm run build
npm run preview
```
`npm run preview 以生产模式运行 Express,提供静态 Vite 构建并处理 `/api` 路由。
## 项目结构
```
server/
index.js # Express API server — cache, routing, startup seeding
db.js # SQLite setup, schema, insert/query helpers, date migration
searchEngine.js # Anthropic fetch logic, QUERY_MAP, QUERY_VARIANTS, run functions
scheduler.js # node-cron daily job + on-demand trigger wrappers
data/
threats.db # SQLite database (gitignored)
ai_security_dashboard.jsx # React component — feed, search engine, all UI
src/
main.jsx # React root mount
theme.css # CSS variable definitions (light + dark)
index.html # HTML entry point
vite.config.js # Vite config + /api proxy to Express in dev
.env.local # API key — gitignored, never committed
```
## API 接口
| 端点 | 方法 | 描述 |
|---|---|---|
| `/api/threats` | POST | 从数据库读取指定分类的威胁条目 |
| `/api/search/run` | POST | 触发后台搜索(可指定分类或全部) |
| `/api/search/status` | GET | 当前搜索引擎状态及最后运行信息 |
| `/api/health` | GET | 服务器状态、数据库条目数、运行状态 |
| `/api/cache/clear` | POST | 清除 5 分钟服务器端缓存 |
| `/api/read` | GET | 返回所有已读条目的标题 |
| `/api/read/toggle` | POST | 切换条目的已读/未读状态 |
### `/api/threats` 请求体
```
{
"category": "all",
"noCache": false,
"excludeTitles": [],
"loadAll": false
}
```
- `category` — 可选值:`all`、`prompt_injection`、`jailbreak`、`model_theft`、`supply_chain`、`policy`、`research`
- `noCache` — `true` 表示跳过服务器缓存(用于“加载更多”/“全部加载”)
- `excludeTitles` — 已展示的标题;服务器会排除这些并检查数据库是否耗尽
- `loadAll` — `true` 表示返回该分类下所有数据库条目(无 LIMIT)
响应中的 `total` 字段反映的是分类条目数,而非全局数据库总数。
### `/api/search/run` 请求体
```
{ "category": "jailbreak", "expanded": false }
```
省略 `category` 表示运行全部分类。传入 `expanded: true` 表示执行深度扫描(每个分类 4 次查询)。返回 `{ started: true }` 或 `{ alreadyRunning: true }`。始终返回 202 状态码。
### `/api/read/toggle` 请求体
```
{ "title": "Exact item title string" }
```
返回 `{ title, read: true|false }`。
## 搜索引擎
### 调度计划
| 时机 | 函数 | 查询次数 | 最多新条目 |
|---|---|---|---|
| 服务器启动(空数据库) | `runAll()` | 每个分类 1 次 × 6 | 60 |
| 每日 06:00 UTC | `runAll()` | 每个分类 1 次 × 6 | 60 |
| 加载更多 — 特定分类(数据库耗尽) | `runForCategoryExpanded()` | 每个分类 4 次 | ~40 |
| 加载更多 — “全部”快速扫描 | `triggerAll()` | 每个分类 1 次 × 6 | 60 |
| 加载更多 — “全部”深度扫描 | `triggerAllExpanded()` | 每个分类 4 次 × 6 | ~240 |
### 查询变体(加载更多 / 扩展路径)
每个分类包含 4 个定向角度查询,以最大化多样性,包括面向社区/灰色网络的变体:
| 分类 | 角度 |
|---|---|
| Prompt injection | 应用绕过 · 间接/代理注入 · 系统提示提取 · PoC / 研究者披露(GitHub、Reddit、Exploit-db) |
| Jailbreaks | 防护栏绕过 · DAN/角色扮演技巧 · 模型特定方法 · 论坛 / 研究者披露 |
| Model theft | API 提取 · 蒸馏攻击 · 成员推断 · PoC / 漏洞披露 |
| Supply chain | 包/注册表攻击 · 权重中毒 · 数据集中毒 · 安全建议 / Exploit-db 披露 |
| Policy | NIST / EU AI 法案 · 政府命令 · 企业责任 · CISO 社区讨论 |
| Research | 对抗性 ML · 红队基准 · 幻觉攻击向量 · arXiv / GitHub / Hacker News |
### 去重机制
- 服务端:SQLite 的 `url UNIQUE` 约束 + 插入前标题去重
- 每次运行:当前运行中已见标题排除在后续角度查询之外
- 提示级:将现有标题作为“不得返回这些内容”传递给模型
### 日期处理
- 所有日期在插入前统一规范化为 `YYYY-MM-DD`(支持 ISO 时间戳、月份名称、仅年份等)
- 未来日期(模型幻觉)在插入时和启动迁移时钳制为当天
- 启动时数据库迁移修正任何先前存储的未来日期
## 威胁分类
| 分类 | 查询重点 |
|---|---|
| All threats | AI/LLM 漏洞与攻击的广泛范畴 |
| Prompt injection | 直接与间接注入攻击 |
| Jailbreaks | 模型绕过与对齐失效 |
| Model theft | 提取、蒸馏与知识产权攻击 |
| Supply chain | Hugging Face、PyTorch、npm、模型中毒 |
| Policy & regulation | NIST、EU AI 法案、厂商安全建议 |
| Research | 对抗性 ML、新的学术发现 |
## 搜索同义词组
| 查询 | 匹配项 |
|---|---|
| `inject` | injection、prompt injection、indirect injection、PIA |
| `jailbreak` | bypass、circumvent、escape、jailbreaking |
| `theft` / `steal` | extraction、extract、exfiltration、clone |
| `vuln` | vulnerability、flaw、weakness、CVE、bug |
| `attack` | exploit、breach、compromise、hack、intrusion |
| `llm` | model、GPT、Claude、Gemini、Mistral、language model |
| `supply chain` | dependency、package、poisoning、Hugging Face、PyPI、npm |
| `policy` | regulation、compliance、act、NIST、GDPR、EU AI Act |
| `adversarial` | evasion、perturbation、adversarial example、adversarial ML |
| `backdoor` | trojan、data poisoning、sleeper |
| `privacy` | PII、personal data、leak、leakage、exfil |
| `hallucination` | confabulation、fabrication |
| `rag` | retrieval、embedding、vector、retrieval augmented |
| `agent` | agentic、autonomous、tool use、function calling |
| `red team` | redteam、penetration、pentest |
| `fine-tune` | finetune、training、LoRA |
| `watermark` | fingerprint、provenance、attribution |
| `multimodal` | vision、image、audio、speech |
## 上下文
旨在替代针对 MITRE ATLAS、OWASP LLM Top 10、arXiv cs.CR 以及厂商安全建议的零散标签页浏览;提供一个单一面板、分类明确、可刷新的订阅源,并依托实时网络搜索。
## 作者
由 **Liad Matus** 构建
标签:AI威胁情报, AI安全, Anthropic, arXiv, Chat Copilot, CIS基准, Claude, CVE, CVE检测, DNS通配符暴力破解, Exploit-DB, Express API, Hacker News, LinkedIn, MITM代理, MITRE ATLAS, OWASP LLM Top 10, React, Reddit, SEO, SQLite, Syscalls, Vite, Web搜索, 仪表盘, 大语言模型安全, 威胁情报, 开发者工具, 提示注入, 数字签名, 数据聚合, 新闻聚合, 机密管理, 模型盗窃, 漏洞披露, 灰色文献, 网络搜索, 自定义脚本, 集群管理