NullRoutedSec/info_sec_news

GitHub: NullRoutedSec/info_sec_news

基于 Next.js 与 Gemini AI 的网络安全情报聚合面板,自动从多源抓取安全新闻与 CVE 数据并生成每日威胁简报。

Stars: 0 | Forks: 0

# INFOSEC_NEWS **🔗 在线演示:https://info-sec-news.vercel.app** 专为安全专业人员及爱好者打造,将威胁情报像 SOC 简报一样直接送达——而非千篇一律的普通新闻流。 ## 功能简介 - **聚合** 6 大来源的网络安全新闻(Krebs on Security、BleepingComputer、The Hacker News、Dark Reading、r/netsec、r/cybersecurity) - **AI 增强** 每篇文章,提供 TL;DR 摘要、威胁评分(1-100)、相关性评分、分类以及所属国家检测 - **追踪 CVE**(来自 NIST NVD)并标记 CISA KEV 目录中被活跃利用的漏洞 - **生成每日情报简报**,采用 CISO 风格的情报报告格式 - **可视化全球威胁态势**,在动态世界地图上为每个国家显示闪烁的标记,并按严重程度进行颜色编码 - **CRT 终端美学**,包含磷光绿文本、扫描线、故障效果和闪烁光标 —— 可切换至简洁的企业模式 ## 技术栈 | 层级 | 选择 | |---------------|------------------------------------------| | 框架 | Next.js 16 (App Router) | | 语言 | TypeScript | | 样式 | Tailwind CSS v4 | | 数据库 | Supabase (Postgres) | | AI | Google Gemini API (免费层) | | 可视化 | D3.js + world-atlas topojson | | 托管 | Vercel (内置 cron) | ## 架构 ``` RSS / Reddit feeds ──┐ ├──> /api/ingest ──> Supabase (articles) │ │ NIST NVD ────────────┤ ├──> /api/enrich ──> Gemini AI CISA KEV ────────────┤ │ (summary, scores, country) └──> /api/cve ──> Supabase │ (cves) ├──> /api/briefing │ (daily intel report) ▼ Next.js pages (SSR + ISR) ``` - **API 路由是只写 pipeline** —— 由 Vercel Cron 触发,绝不会被 UI 调用 - **页面直接从 Supabase 读取数据**(在 Server Components 中) - **每篇文章仅需单次 AI 调用**,即可在一次结构化请求中返回摘要 + 评分 + 分类 + 国家信息 ## 项目结构 ``` src/ ├── app/ # Pages and API route handlers │ ├── page.tsx # Homepage (world map + paginated feed) │ ├── cves/ # CVE Spotlight │ ├── briefing/ # Daily intelligence briefing │ └── api/ │ ├── ingest/ # RSS + Reddit ingestion (cron) │ ├── enrich/ # AI enrichment (cron) │ ├── cve/ # NVD + KEV ingestion (cron) │ └── briefing/ # Daily briefing generation (cron) ├── components/ │ ├── crt/ # CRT aesthetic primitives │ ├── feed/ # Article cards, list, filters, pagination │ ├── cve/ # CVE cards, severity badges │ ├── viz/ # WorldThreatMap (D3) │ ├── briefing/ # Briefing renderer │ └── layout/ # Nav, theme toggle ├── lib/ │ ├── supabase/ # Browser, server, admin clients │ ├── feeds/ # RSS parser, Reddit fetcher, source registry │ ├── ai/ # Gemini client, enrichment, briefing prompts │ └── cve/ # NVD + KEV API clients └── styles/ └── globals.css # Tailwind v4 theme + CRT animations ``` ## 本地运行 ### 前置条件 - Node.js 20+ - 一个免费的 Supabase 项目 — https://supabase.com - 一个免费的 Google Gemini API 密钥 — https://aistudio.google.com/app/apikey ### 设置 ``` # 1. 克隆并安装 git clone https://github.com/NullRoutedSec/info_sec_news.git cd info_sec_news npm install # 2. 配置环境变量 cp .env.local.example .env.local # 然后使用你的 Supabase + Gemini 凭证编辑 .env.local # 3. 在你的 Supabase SQL Editor 中运行数据库 migrations # 查看 supabase/migrations/ 获取 SQL 文件 # 4. 启动 dev server npm run dev ``` ### 手动触发数据 pipeline ``` # 从 RSS + Reddit 获取文章 curl -H "Authorization: Bearer $CRON_SECRET" http://localhost:3000/api/ingest # 使用 AI 丰富文章内容(节奏适用于 free-tier 限制) curl -H "Authorization: Bearer $CRON_SECRET" http://localhost:3000/api/enrich # 从 NIST + CISA KEV 拉取 CVE curl -H "Authorization: Bearer $CRON_SECRET" http://localhost:3000/api/cve # 生成今日简报 curl -H "Authorization: Bearer $CRON_SECRET" http://localhost:3000/api/briefing ``` ## 环境变量 | 变量 | 用途 | |-----------------------------------------|------------------------------------------| | `NEXT_PUBLIC_SUPABASE_URL` | Supabase 项目 URL | | `NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY` | Supabase 可发布(anon)key | | `GEMINI_API_KEY` | 用于 AI 增强的 Google Gemini API key | | `CRON_SECRET` | 保护 cron 路由的 Bearer token | ## 部署 可顺利部署至 Vercel。`vercel.json` 文件定义了四个 cron 任务: | 路径 | 计划任务 | 功能描述 | |-----------------|-------------------------|-----------------------------------------| | `/api/ingest` | 每 2 小时 | 从所有来源获取最新文章 | | `/api/enrich` | 每 2 小时(错开执行) | 对新文章进行 AI 增强 | | `/api/cve` | 每天 UTC 时间 06:00 | 从 NIST + CISA KEV 获取 CVE | | `/api/briefing` | 每天 UTC 时间 08:00 | 生成每日情报报告 | ## 设计说明 - **CRT 美学是通过 CSS 叠加实现的,而非基于单个组件。** 扫描线、闪烁和磷光效果是由主题切换的全局效果 —— 组件仅使用设计 token。 - **不使用红色。** 配色方案有意避免使用红色来表示严重程度。真正的绿色磷光终端从来没有红色,因此威胁程度的升级是通过 绿色 → 黄色 → 琥珀色 → 橙色 来体现的。这样更简洁,也更原汁原味。 - **URL 是文章收录的去重键** —— 简单、可靠,能处理跨来源的重复内容。 - **AI 分批次运行并带有明确节奏**,以确保安全地保持在 Gemini 免费层的速率限制内。 ## 许可证 MIT — 随意学习、fork 或在此基础上进行开发。
标签:CVE跟踪, DLL 劫持, 大语言模型, 威胁情报, 开发者工具, 新闻聚合, 网络安全, 自动化攻击, 隐私保护