4njuT0m/cybernews

GitHub: 4njuT0m/cybernews

一个基于 Flask 和 Google Gemini AI 的轻量级威胁情报平台,通过聚合安全新闻 RSS 源和 CISA 漏洞数据,自动提取 IOC 并映射 MITRE ATT&CK 框架,帮助安全团队快速获取和分析威胁信息。

Stars: 2 | Forks: 0

# CyberNews 一个为理解全栈开发、API 设计和网络安全基础而构建的威胁情报平台。该项目集成了实时威胁源、漏洞数据,并展示了 AI 驱动的威胁分析概念。 ## 关于 这是在网络安全培训期间开发的一个学习项目,旨在理解: - 构建具有基于角色的访问控制 (RBAC) 的安全 Web 应用程序 - 集成多个威胁情报源(RSS 源,CISA KEV) - 使用 JWT token 进行 API 身份验证和授权 - 威胁数据建模和 IOC(失陷指标)提取 - 用于自动化威胁源摄取的后台作业调度 - 面向安全运营用例的数据库设计 该项目聚合了来自 The Hacker News 和 SecurityWeek 的网络安全新闻,集成了 CISA 已知被利用漏洞,并使用 Google Gemini AI 提取 IOC 并将威胁映射到 MITRE ATT&CK 技术。 ## 技术栈 - 后端:Flask, SQLAlchemy - 数据库:PostgreSQL(生产环境),SQLite(开发环境) - 身份验证:静态 Bearer Tokens,bcrypt - 调度:APScheduler - AI:Google Generative AI (Gemini) - 源解析:feedparser ## 项目结构 ``` cybernews/ ├── app/ │ ├── __pycache__/ │ ├── blueprints/ │ ├── __init__.py # App factory │ ├── admin.py # Admin operations │ ├── api.py # API endpoints │ ├── auth.py # Authentication routes │ ├── news.py # News/article routes │ ├── services/ │ │ ├── __pycache__/ │ │ ├── __init__.py │ │ ├── feed_fetcher.py # RSS feed parsing │ │ ├── gemini_service.py # IOC extraction │ │ ├── ioc_extractor.py # IOC processing │ │ └── scheduler.py # Background job scheduling │ ├── static/ │ │ ├── css/ │ │ │ └── style.css │ │ └── js/ │ │ └── main.js │ ├── templates/ # HTML templates │ │ ├── admin.html │ │ ├── base.html │ │ ├── error.html │ │ ├── incidents.html │ │ ├── index.html │ │ ├── iocs.html │ │ └── login.html │ ├── __init__.py │ └── models.py # Database models ├── venv/ ├── .env # Environment variables (local) ├── .gitignore ├── config.py # Configuration ├── requirements.txt └── run.py # Entry point └── seed.py # Database seeding ``` ## 安装与设置 1. 克隆仓库 git clone https://github.com/4njuT0m/cybernews.git cd cybernews 2. 创建虚拟环境 python3 -m venv venv source venv/bin/activate 3. 安装依赖项 pip install -r requirements.txt 4. 配置环境 cp .env.example .env 编辑 `.env`: SECRET_KEY=your_secret_key_here BEARER_TOKEN=your_bearer_token_here GEMINI_API_KEY=your_gemini_api_key_here # Database (Supabase) DATABASE_URL=your_Database url_here 5. 初始化数据库 python seed.py 6. 运行应用程序 python run.py 访问地址 `http://localhost:5000` ## 测试凭据 初始化数据库后: - analyst1 / analyst1pass(级别 1) - analyst2 / analyst2pass(级别 2) - admin / adminpass(管理员) ## 主要功能 **威胁源聚合**:每 30 分钟自动获取并解析来自安全新闻源的 RSS 源。 **基于角色的访问控制**:三种用户角色(级别 1 分析师、级别 2 分析师、管理员),具有不同的权限级别和数据可见性。 **IOC 提取**:Google Gemini API 分析文章内容以提取失陷指标(IP 地址、域名、文件哈希)。 **MITRE ATT&CK 映射**:将威胁技术映射到 MITRE ATT&CK 框架,以实现更好的威胁分类。 **漏洞跟踪**:集成 CISA KEV 数据以跟踪联邦政府规定的可利用漏洞。 **身份验证**:使用 Bearer token 身份验证保护 API 端点,以供编程访问。 ## 数据库设计 **User 表** - username(唯一) - password_hash(bcrypt) - role(analyst_l1,analyst_l2,admin) - clearance level - last_login timestamp **NewsArticle 表** - title, source, URL - published_at timestamp - category(漏洞、泄露、威胁行为者等) - severity(严重、高、中、低) - summary - cve_id, epss_score - iocs(一对多关系) - mitre_tags(一对多关系) - ai_processed 标志 ## API 端点 ``` POST /login - Web interface authentication POST /logout - Secure session termination GET /api/news - Fetch filtered intelligence feed DELETE /admin/reports/ - Purge intelligence records POST /admin/incidents - Create new SOC incident ``` 所有端点都需要 Bearer token 身份验证。 ## 配置 该项目支持三种环境: - 开发环境:启用 Debug 模式,SQLite 数据库,不安全的 cookies - 生产环境:禁用 Debug 模式,PostgreSQL 数据库,安全的 HTTPS cookies - 测试环境:内存 SQLite,禁用 CSRF 通过 `FLASK_ENV` 环境变量进行配置。 ## 后台作业 APScheduler 每 30 分钟运行一次 RSS 源收集: 1. 从配置的源获取文章 2. 根据 URL 对文章进行去重 3. 将新文章存储在数据库中 4. 将文章排队以进行 AI 处理(每次运行最多 10 篇) Gemini AI 处理未经处理的文章,以提取 IOC 并映射 MITRE 技术。 ## 学习目标 该项目演示了: - 使用 bcrypt 进行安全的密码哈希处理 - 基于 JWT token 的 API 身份验证 - 基于角色的访问控制实现 - 威胁情报数据建模 - 后台作业调度 - 第三方 API 集成(RSS,Gemini) - 数据库查询优化 - 使用 ORM 防止 SQL 注入 - Session 安全配置 ## 许可证 MIT 许可证
标签:AI安全分析, API安全, API设计, APScheduler, bcrypt, CISA KEV, Cloudflare, DLL 劫持, feedparser, Flask, GPT, IOC提取, JSON输出, JWT认证, masscan, MITRE ATT&CK, nuclei, PostgreSQL, Python, RBAC, RSS订阅, SQLAlchemy, SQLite, TIP, 加密哈希, 后台任务调度, 基于角色的访问控制, 大语言模型, 失陷标示符, 威胁情报平台, 安全培训, 安全数据建模, 安全资讯聚合, 实时处理, 无后门, 测试用例, 漏洞管理, 网络安全, 网络安全学习, 逆向工具, 隐私保护