Achuth07/ThreatIntelDigest

GitHub: Achuth07/ThreatIntelDigest

一个基于 React 和 Express 的现代化威胁情报聚合平台,整合多源 RSS 安全新闻与 NVD 漏洞数据,为安全专业人员提供实时监控与分类管理。

Stars: 1 | Forks: 0

# CyberFeed - 威胁情报聚合器 一个专注于网络安全的 RSS 新闻聚合器,提供来自多个来源的实时威胁情报和安全新闻。专为安全专业人员设计,可浏览、搜索、过滤和收藏带有威胁级别分类的安全文章。 ## 🎯 项目概述 CyberFeed 是一个威胁情报聚合平台,使安全分析师和研究人员能够: - **聚合**来自多个 RSS 源的威胁情报到统一界面中 - **监控**来自国家漏洞数据库 (NVD) 的 CVE/漏洞数据 - **管理**威胁情报来源的高效性 - **收藏**重要文章以备将来参考 - **过滤**按威胁级别(严重、高、中、低)过滤文章 - **浏览**带有 CVSS 评分和严重性过滤的 CVE 数据 - **搜索**安全新闻和威胁情报 - **保持更新**了解最新的网络安全威胁和发展动态 - **认证**通过 Google OAuth 获得个性化体验 - **自定义**具有用户特定偏好的订阅源 - **获取指导**通过交互式工具提示和新手指引 ## 🏗️ 架构 ### 技术栈 **前端:** - React 18 与 TypeScript - Vite 用于快速开发和构建 - Tailwind CSS 用于样式设计 - Radix UI + shadcn/ui 提供可访问的组件 - TanStack React Query 用于状态管理和缓存 - Wouter 用于轻量级客户端路由 **后端:** - Node.js 与 Express.js 框架 - TypeScript 与 ES modules - RESTful API 设计 - RSS-parser 用于 Feed 处理 - Axios 用于 HTTP 请求 **数据库:** - PostgreSQL (Neon Serverless) - Drizzle ORM 用于类型安全的数据库操作 - Zod 用于模式验证和类型安全 - CVE/漏洞数据存储和管理 **开发工具:** - tsx 用于 TypeScript 执行和热重载 - Vite 用于前端打包 - esbuild 用于后端打包 - ESLint 和 TypeScript 用于代码质量控制 **部署优化:** - 为 Vercel serverless functions 整合的 API 架构 - 数据库工具整合到具有基于操作路由的单一 endpoint 中 - 针对 Vercel Hobby plan 函数限制(12 个函数以下)进行了优化 ### 内置 RSS 源 该应用程序预配置了 25+ 个分类的网络安全新闻源: **供应商与私人威胁研究:** - **Google Mandiant Threat Intelligence** - 高级威胁研究和分析 - **Cisco Talos Intelligence** - 网络安全和威胁情报 - **CrowdStrike Blog** - 端点安全和威胁狩猎 - **Red Canary Blog** - 威胁检测和安全运营 - **Securelist (Kaspersky)** - 全球威胁研究和分析 - **ESET WeLiveSecurity** - 安全研究和威胁情报 - **Trustwave SpiderLabs** - Web 应用和网络安全 - **FireEye Threat Research** - 高级持续性威胁分析 - **McAfee Labs** - 恶意软件研究和威胁情报 - **Symantec Security Response** - 企业安全研究 - **Flashpoint** - 商业风险情报和威胁分析 - **Juniper Networks Threat Research** - 网络安全研究和威胁情报 **政府与机构警报:** - **CISA Alerts** - 美国官方网络安全建议 - **FBI IC3** - 互联网犯罪和欺诈警报 - **NCSC-UK** - 英国国家网络安全指南 **专业与恶意软件焦点:** - **Malwarebytes Labs** - 消费者和企业恶意软件研究 - **Recorded Future** - 威胁情报和安全分析 - **ThreatPost** - 突发网络安全新闻和分析 - **Krebs on Security** - 独立安全新闻报道 **一般安全新闻:** - **Bleeping Computer** - 最新网络安全新闻和威胁报告 - **The Hacker News** - 突发网络安全新闻和分析 - **Dark Reading** - 企业安全新闻和见解 - **SecurityWeek** - 信息安全新闻和分析 - **InfoSecurity Magazine** - 全球网络安全新闻报道 **历史来源:** - **The DFIR Report** - 数字取证和事件响应 ## 🚀 快速开始 ### 前置条件 - **Node.js**(推荐 v18 或 v20) - **npm**、**yarn** 或 **pnpm** - **Git** - **PostgreSQL** 数据库(或 Neon Serverless 账户) ### 安装 1. **克隆代码库:** git clone cd ThreatIntelDigest 2. **安装依赖:** npm install 3. **设置环境变量:** 在根目录创建一个 `.env` 文件: # 必需:PostgreSQL 数据库 URL,用于持久化存储 DATABASE_URL=postgresql://username:password@localhost:5432/cyberfeed # 必需:用于获取 CVE 数据的 NVD API Key NVD_API_KEY=your-nvd-api-key-here # Google OAuth 配置 GOOGLE_CLIENT_ID=your-google-client-id GOOGLE_CLIENT_SECRET=your-google-client-secret # 服务器配置 PORT=5000 NODE_ENV=development # 生产环境 URL(用于 OAuth 回调) BACKEND_URL=https://your-domain.com FRONTEND_URL=https://your-domain.com 4. **初始化数据库(如果使用 PostgreSQL):** npm run db:push 5. **启动开发服务器:** npm run dev 6. **打开浏览器:** 访问 `http://localhost:5000` ### 首次运行 1. **认证:** 点击“Sign In”通过 Google OAuth 进行认证 2. **添加 RSS 源:** 使用“Add RSS Source”对话框从分类的内置网络安全 RSS 订阅源中进行选择 3. **管理源:** 将鼠标悬停在侧边栏的源上并点击减号图标即可将其移除 - 稍后可以重新添加 4. **获取文章:** 点击“Refresh All Feeds”用最新文章填充应用程序 5. **获取 CVE 数据:** 导航到 Vulnerabilities 部分并点击刷新,以从 NVD 获取最新的 CVE 数据 6. **探索:** 浏览文章、按威胁级别过滤、探索 CVE 数据并收藏重要情报 ## 📁 项目结构 ``` ThreatIntelDigest/ ├── api/ # API route handlers │ ├── articles.ts # Articles API endpoints │ ├── auth.ts # Google OAuth authentication │ ├── bookmarks.ts # Bookmarks management │ ├── fetch-feeds.ts # RSS feed fetching logic │ ├── fetch-cves.ts # CVE data fetching from NVD API │ ├── vulnerabilities.ts # CVE/vulnerability data endpoints │ ├── sources.ts # RSS sources management │ ├── user-management.ts # User management and statistics │ ├── user-source-preferences.ts # User-specific source preferences │ ├── database.ts # Database management utilities │ └── index.ts # API routes index ├── client/ # React frontend application │ ├── src/ │ │ ├── components/ # React components │ │ │ ├── ui/ # shadcn/ui components │ │ │ ├── sidebar.tsx # Main navigation sidebar with source management │ │ │ ├── header.tsx # Application header with authentication │ │ │ ├── article-card.tsx # Article display component │ │ │ ├── cve-list.tsx # CVE/vulnerability display component │ │ │ ├── add-sources-dialog.tsx # Categorized RSS sources selector │ │ │ └── article-viewer.tsx # Slide-in article reader │ │ ├── pages/ # Application pages │ │ ├── hooks/ # Custom React hooks │ │ ├── lib/ # Utility functions and configurations │ │ └── App.tsx # Main application component │ └── index.html # HTML entry point ├── server/ # Express.js backend │ ├── auth/ # Google OAuth implementation │ ├── db.ts # Database connection setup │ ├── index.ts # Server entry point │ ├── routes.ts # API route definitions │ ├── storage.ts # Storage interface and in-memory implementation │ ├── postgres-storage.ts # PostgreSQL storage implementation │ └── vite.ts # Vite development server setup ├── shared/ # Shared TypeScript types and schemas │ └── schema.ts # Drizzle ORM schemas and Zod validation ├── package.json # Dependencies and scripts ├── vite.config.ts # Vite configuration ├── tailwind.config.ts # Tailwind CSS configuration ├── tsconfig.json # TypeScript configuration └── drizzle.config.ts # Drizzle ORM configuration ``` ## 🛠️ 开发命令 ``` # 启动带 hot reloading 的开发服务器 npm run dev # Type checking npm run check # 为 production 构建 npm run build # 启动 production 服务器 npm start # Push database schema 更改 npm run db:push # 验证部署就绪状态(自定义 script) npm run validate-deployment ``` ## 🎨 功能 ### 核心功能 - **RSS Feed 聚合:** 自动获取和解析网络安全 RSS 订阅源 - **CVE/漏洞管理:** 与国家漏洞数据库 (NVD) API 集成 - **文章管理:** 浏览、搜索和过滤安全文章 - **威胁级别分类:** 自动分类(严重、高、中、低) - **CVSS 评分:** 显示带有 CVSS v2/v3 分数和严重性级别的 CVE 数据 - **收藏系统:** 保存重要文章以备将来参考 - **实时更新:** 手动刷新,并计划支持自动调度 - **源管理:** 添加、停用和重新激活 RSS 源而不丢失数据 - **用户认证:** 安全的 Google OAuth 2.0 认证 - **用户偏好:** 个性化的来源选择和管理 - **新手指引:** 交互式工具提示和新手指导 ### 认证与用户管理 - **Google OAuth 2.0:** 使用 Google 账户进行安全认证 - **用户特定偏好:** 个性化的 Feed 源和设置 - **会话管理:** 通过 token 刷新进行安全的会话处理 - **管理员仪表板:** 用户统计和管理界面 ### 源管理功能 - **非破坏性移除:** 停用源而不是永久删除 - **轻松重新激活:** 已停用的源可以从内置源列表中重新添加 - **悬停控制:** 悬停时出现减号图标,可快速移除源 - **分类源:** 按供应商、政府、恶意软件焦点和一般新闻进行组织 - **智能防重:** 防止多次添加相同的源 - **用户特定源:** 每个用户都可以自定义自己的 Feed 源 ### 用户设置与偏好 - **综合设置页面:** 可通过标题栏中的齿轮图标访问的集中设置界面 - **账户管理:** 查看和编辑个人资料信息,管理显示名称 - **安全与隐私:** 查看活动会话,在所有设备上登出(即将推出) - **应用程序偏好:** - 管理 RSS 订阅源 - 用于跟踪特定威胁的关注列表关键字(即将推出) - IOC 提取偏好(即将推出) - 可自定义的 IOC 类型可见性(即将推出) - **API 与集成:** - 生成和管理个人 API 密钥 - 第三方服务的集成设置(即将推出) - **订阅管理:** 查看当前计划和功能(Pro 计划即将推出) - **通知偏好:** - 每周摘要电子邮件(即将推出) - 关注列表提醒(即将推出) ### 用户界面 - **暗色主题:** 为安全专业人员优化 - **响应式设计:** 移动优先方法,具有基于断点的布局 - **可访问性:** 完整的键盘导航和屏幕阅读器支持 - **现代组件:** 使用 Radix UI 原语构建以保证可访问性 - **交互式指导:** 新手工具提示和标注框 - **动画过渡:** 流畅的动画以增强用户体验 ### RSS 源管理 - **分类选择:** 从有组织的网络安全源类别中进行选择 - **一键添加:** 简单的界面用于添加可信的 RSS 订阅源 - **非破坏性移除:** 使用悬停减号图标停用源 - **智能重新激活:** 先前添加的源可以在不丢失数据的情况下重新激活 - **防重机制:** 仅显示当前未激活的源 - **用户偏好:** 每个用户都可以管理自己的源偏好 ## 🔧 配置 ### 数据库设置 该应用程序支持两种存储模式: 1. **内存存储(默认):** 不需要数据库,重启后数据会重置 2. **PostgreSQL 存储:** 具有完整数据库功能的持久化数据 要使用 PostgreSQL,请设置 `DATABASE_URL` 环境变量: ``` DATABASE_URL=postgresql://username:password@host:port/database ``` ### 环境变量 | Variable | Description | Default | Required | |----------|-------------|---------|----------| | `DATABASE_URL` | PostgreSQL 连接字符串 | - | 是 | | `NVD_API_KEY` | 国家漏洞数据库 API 密钥 | - | 是 | | `GOOGLE_CLIENT_ID` | Google OAuth 客户端 ID | - | 是 | | `GOOGLE_CLIENT_SECRET` | Google OAuth 客户端密钥 | - | 是 | | `BACKEND_URL` | 后端生产环境 URL | - | 是(生产环境) | | `FRONTEND_URL` | 前端生产环境 URL | - | 是(生产环境) | | `PORT` | 服务器端口 | `5000` | 否 | | `NODE_ENV` | 环境模式 | `development` | 否 | ## 🚦 API 端点 ### 文章 - `GET /api/articles` - 获取带有过滤选项的文章 - `POST /api/articles` - 创建新文章 ### CVE/漏洞 - `GET /api/vulnerabilities` - 获取带有过滤和分页的 CVE 数据 - `POST /api/fetch-cves` - 从 NVD API 获取最新的 CVE 数据 ### RSS 源 - `GET /api/sources` - 获取所有 RSS 源 - `POST /api/sources` - 添加新的 RSS 源 - `PATCH /api/sources/:id` - 更新 RSS 源(激活/停用) - `DELETE /api/sources/:id` - 永久删除 RSS 源 ### 收藏 - `GET /api/bookmarks` - 获取用户收藏 - `POST /api/bookmarks` - 创建收藏 - `DELETE /api/bookmarks/:articleId` - 移除收藏 ### 用户管理 - `GET /api/user-management` - 获取所有用户 - `GET /api/user-management?stats=true` - 获取用户统计信息 ### 用户源偏好 - `GET /api/user-source-preferences` - 获取用户的源偏好 - `POST /api/user-source-preferences` - 更新用户的源偏好 ### 认证 - `GET /api/auth?action=google` - 发起 Google OAuth 流程 - `GET /api/auth?action=callback` - Google OAuth 回调 - `GET /api/auth?action=logout` - 登出当前用户 - `GET /api/auth?action=status` - 检查认证状态 ### Feed 管理 - `POST /api/fetch-feeds` - 手动刷新所有 RSS 订阅源 - `POST /api/fetch-article` - 从 URL 提取完整文章内容 ### 数据库管理 - `GET /api/database?action=check` - 检查数据库连接 - `POST /api/database?action=init` - 初始化数据库模式 - `GET /api/database?action=ping` - API 健康检查 - `GET /api/database?action=test` - 基本数据库测试 - `GET /api/database?action=test-steps` - 详细的数据库测试 - `POSTapi/database?action=initialize-sources` - 初始化默认 RSS 源 ## 🔒 安全功能 - **输入验证:** 对所有 API 输入进行 Zod 模式验证 - **类型安全:** 前后端完整的 TypeScript 覆盖 - **SQL 注入防护:** 使用带有参数化查询的 Drizzle ORM - **安全会话:** Express-session 与 PostgreSQL 存储(配置后) - **Google OAuth 2.0:** 使用 Google 账户进行安全认证 - **JWT Tokens:** 带有刷新机制的安全基于 Token 的认证 - **HTTPS 强制:** 在生产环境中自动重定向到 HTTPS ## 🎯 近期增强 ### 认证系统 - **Google OAuth 2.0 集成:** 使用 Google 账户进行安全认证 - **用户会话管理:** 自动 Token 刷新和会话处理 - **用户特定数据:** 个性化的收藏和源偏好 - **管理员仪表板:** 用户统计和管理界面 ### 用户体验改进 - **交互式引导:** 为新用户提供工具提示和指导 - **动画过渡:** 流畅的动画以增强用户体验 - **响应式设计:** 针对所有设备尺寸进行了优化 - **可访问性功能:** 完整的键盘导航和屏幕阅读器支持 ### 源管理 - **用户特定偏好:** 每个用户都可以自定义自己的 Feed 源 - **非破坏性移除:** 源可以被停用和重新激活 - **增强的 UI:** 改进的带有悬停控制的源管理界面 - **防重机制:** 防止添加重复源的智能逻辑 ### 性能优化 - **整合 API:** 减少了 Vercel 部署的 serverless functions 数量 - **数据库优化:** 高效的查询和索引 - **缓存策略:** 使用 React Query 进行前端数据缓存 - **打包优化:** 使用 ESBuild 进行高效的后端打包 ## 📈 访客分析 该项目集成了 CounterAPI 以跟踪访客统计数据。访客计数显示在应用程序的页脚中。 ### 设置 CounterAPI 1. 在 [https://counterapi.com](https://counterapi.com) **创建一个 CounterAPI 账户** 2. **创建一个工作区**,命名为 `threatfeed` 3. **创建一个计数器**,详细信息如下: - 名称:`visitors` - Slug:`visitorstothreatfeed` - 工作区:`threatfeed` 4. 从 CounterAPI 仪表板**获取你的 API token** 5. **将 token 添加到你的 Vercel 环境变量中**: - 变量名:`VITE_THREATFEED_COUNTER` - 值:你的 CounterAPI token 每次用户访问网站时,集成都会自动增加计数器,并在页脚显示当前计数。 ## 🗺️ 路线图 ### 即将推出的功能 #### IOC 提取与分析 - **自动 IOC 提取:** 从文章中提取失陷标 IOC(IP 地址、域名、哈希值、URL、电子邮件) - **IOC 富化:** 与 VirusTotal、AbuseIPDB、Shodan 集成以进行信誉查询 - **可配置的 IOC 类型:** 允许用户隐藏他们不需要的特定 IOC 类型 - **IOC 导出:** 以常见格式(CSV、JSON、STIX)导出提取的 IOC #### 关注列表与警报 - **关键字跟踪:** 监控文章中的特定 CVE、威胁行为者名称或公司名称 - **实时警报:** 检测到高优先级关键字时的电子邮件通知 - **每周摘要:** 顶级威胁和匹配关注列表项的摘要电子邮件 - **自定义警报规则:** 根据威胁级别、来源和关键字创建复杂的警报条件 #### API 与集成 - **公共 API:** 用于访问策划的 Feed、书签和提取的 IOC 的 RESTful API - **API 速率限制:** API 访问的公平使用策略 - **第三方集成密钥:** 存储和使用个人 API 密钥以进行富化服务 - **Webhook 支持:** 检测到新威胁时向外部系统推送通知 - **SIEM 集成:** Splunk、QRadar、Sentinel 的预构建连接器 #### 多会话管理 - **会话跟踪:** 查看跨设备和浏览器的所有活动会话 - **远程登出:** 远程登出特定会话或所有会话 - **会话详情:** 查看每个会话的登录时间、位置和设备信息 #### 订阅计划 - **免费层:** 当前功能保持免费 - **Pro 计划功能:** - 每天无限的 IOC 提取 - 高级富化服务 - 优先电子邮件支持 - 扩展的 API 速率限制 - 自定义 Webhook 集成 - 导出到 SIEM/SOAR 平台 #### 增强分析 - **威胁趋势:** 随时间可视化威胁态势趋势 - **来源分析:** 跟踪哪些来源提供最相关的情报 - **个人统计:** 查看你的阅读习惯、收藏趋势和 Feed 参与度 ## 🤝 贡献 1. Fork 该代码库 2. 创建一个功能分支 (`git checkout -b feature/amazing-feature`) 3. 提交你的更改 (`git commit -m 'Add amazing feature'`) 4. 推送到该分支 (`git push origin feature/amazing-feature`) 5. 发起一个 Pull Request ## 📝 许可证 该项目根据 MIT 许可证授权 - 详情请参阅 [LICENSE](LICENSE) 文件。 ## 🆘 故障排除 ### 常见问题 **服务器无法启动:** - 确保已安装 Node.js v18+ - 检查端口 5000 是否可用 - 验证所有依赖项是否已安装 (`npm install`) **数据库连接错误:** - 验证 `DATABASE_URL` 格式是否正确 - 确保 PostgreSQL 服务器正在运行(如果使用本地数据库) - 检查数据库凭据和权限 **RSS 订阅源未加载:** - 检查互联网连接 - 验证 RSS 源 URL 是否可访问 - 某些订阅源可能具有速率限制或需要特定的 user agent **CVE 数据未加载:** - 验证环境变量中的 NVD_API_KEY 是否设置正确 - 检查与国家漏洞数据库的互联网连接 - 运行数据库初始化:`POST /api/database?action=init` - 手动获取 CVE 数据:`POST /api/fetch-cves` - 检查数据库连接性:`GET /api/database?action=check` - 运行详细的数据库测试:`GET /api/database?action=test-steps` **认证问题:** - 验证 GOOGLE_CLIENT_ID 和 GOOGLE_CLIENT_SECRET 是否设置正确 - 检查生产环境的 BACKEND_URL 和 FRONTEND_URL - 确保 OAuth 回调 URL 已在 Google Cloud Console 中注册 - 检查浏览器控制台是否存在认证错误 **macOS 特定问题:** - 该应用程序已配置为使用 `localhost` 而不是 `0.0.0.0` 以兼容 macOS ## 📞 支持 如需支持和提问: - 在 GitHub 上开启一个 issue - 查看上面的故障排除部分 - 查阅项目文档 **用 ❤️ 为网络安全社区而构建**
标签:CVSS评分, Drizzle ORM, Express.js, GNU通用公共许可证, Google OAuth, GPT, MITM代理, Node.js, PostgreSQL, React, RSS聚合器, Syscalls, Tailwind CSS, TypeScript, Vite, 书签功能, 威胁分级, 威胁情报, 安全分析师, 安全插件, 安全资讯, 安全运营, 实时处理, 开发者工具, 扫描框架, 新闻聚合, 测试用例, 漏洞管理, 网络安全, 自动化攻击, 隐私保护