nicokempe/secscore

GitHub: nicokempe/secscore

一款基于Nuxt+Nitro的轻量级CVE漏洞评分工具,整合多源威胁情报,提供时间感知的综合优先级评分和透明可复现的模型。

Stars: 14 | Forks: 0

[![SecScore GitHub Banner](https://raw.githubusercontent.com/nicokempe/secscore/main/.github/media/banner.svg)](https://github.com/nicokempe/secscore) ## 描述 这个 Security Score 概念验证是一个轻量级的 Nuxt + Nitro Web 应用程序,允许你粘贴任何 CVE ID,并返回一个结合了公共信号(NVD, EPSS, CISA KEV, ExploitDB, OSV)的时间感知威胁评分(SecScore)。在阅读了论文 [SecScore: Enhancing the CVSS Threat Metric Group with Empirical Evidences](https://arxiv.org/abs/2405.08539) 并寻找一个开放、可用的概念验证后,我找不到符合论文方法或我实际需求的项目,所以我决定构建这个 PoC 来试验该模型,将其与真实的公共源结合,并调整评分和 UX 以实现现实的漏洞优先级排序。该项目有意避免使用数据库(使用 Nitro 缓存和 routeRules),公开简单的 UI 和 API,并保持模型、参数和证据完全透明,以便于可重现的研究和扩展。 ## 功能 - 🔍 输入任何 CVE ID,即可获取带有当前威胁上下文的即时 SecScore - 🌐 仅由公共数据源驱动:NVD, EPSS, CISA KEV, OSV 和 ExploitDB - ⚡ 轻量级设计 —— 无需数据库,仅使用 Nitro 缓存和智能路由规则 - 📊 将 CVSS 基础指标与利用概率和现实世界的信号相结合 - 📝 透明的解释说明 CVE 为何被优先排序(发现 PoC,KEV 标志,EPSS 分数) - 🎨 干净直观的 Nuxt 前端,用于快速查询和演示 - 🧩 完全开源,易于扩展额外的 API 或自定义评分逻辑 ## 开发指南 本项目基于 **Nuxt 3 + Nitro** 构建,并使用 **pnpm** 作为包管理器。 ### 前置条件 - [Node.js 22+](https://nodejs.org/en/) - 全局安装 [pnpm 9+](https://pnpm.io/): corepack enable corepack prepare pnpm@latest --activate ## 数据源与更新 | Dataset | Purpose | Refresh guidance | |-------------------------------------------------------------------|------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------| | **CISA Known Exploited Vulnerabilities** (`server/data/kev.json`) | 标记正在野外被积极利用的漏洞 | `curl -s https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json -o server/data/kev.json` 然后重启(或运行 `nitro task kev:refresh`) | | **ExploitDB snapshot** (`server/data/exploitdb-index.json`) | 突出显示公开的 PoC 及其发布日期 | 使用 `cveId`、`url` 和 `publishedDate` 重新生成整理后的 JSON;重启以加载 | | **Model parameters** (`model-params/al-params.json`) | 控制特定类别的利用时间曲线 | 调整 `{ mu, lambda, kappa }` 并重新部署/重启 | ## API 接口 | Endpoint | Method | Description | |-----------------------------|--------|------------------------------------------------------------------------------------------------------------------------------------------------------| | `/api/v1/cve/:cveId` | GET | 返回标准化的 CVE 元数据以及 SecScore 上下文。验证标识符,发送缓存头,并用 `SecScore-Model-Version` 标记响应。 | | `/api/health` | GET | 公开进程运行时间、CPU/内存使用情况和 KEV 数据集元数据以供监控。 | | `/api/internal/refresh-kev` | GET | 触发 KEV 数据集刷新(部署时请在身份验证后操作)。 | 公共 API 路由继承每个 IP 每小时 120 次请求的速率限制。缓存命中通过 `X-Cache` 头标记,以便你监控有效性。 ## 配置 这些环境变量在运行时自定义行为: | Variable | Description | |-----------------------------------|-------------------------------------------------------------------------| | `CLOUDFLARE_TURNSTILE_SITE_KEY` | 设置后启用前端的 Turnstile 组件。 | | `CLOUDFLARE_TURNSTILE_SECRET_KEY` | 用于在服务端验证 Turnstile 令牌。 | | `LOG_LEVEL` | 设置客户端日志详细程度(默认为 `info`)。 | | `LOG_REMOTE_ENABLED` | 当为 `true` 时,允许将日志转发到 `LOG_SERVER_URL`。 | | `LOG_SERVER_URL` | 远程日志端点(默认为 `https://logs.secscore.net/api/logs`)。 | ### 设置 安装所有依赖: ``` pnpm install ``` ### 开发服务器 在 [http://localhost:3000](http://localhost:3000) 启动开发服务器: ``` pnpm dev ``` 热模块替换(HMR)已启用,因此更改会立即应用。 ### 生产环境 为生产环境构建应用程序: ``` pnpm build ``` 在本地预览生产构建: ``` pnpm preview ``` ### 部署 Nuxt/Nitro 支持多种部署目标(Node, serverless, edge 等)。 有关配置,请参阅 [Nuxt 部署文档](https://nuxt.com/docs/getting-started/deployment)。 ## 许可证 本项目基于 [Apache 许可证](https://github.com/nicokempe/secscore/blob/main/LICENSE) 授权。
标签:CISA KEV, CVE评分, CVSS, EPSS, ExploitDB, GNU通用公共许可证, GPT, MITM代理, Nitro, Node.js, Nuxt 3, NVD, OSV, pnpm, SecScore, Vercel, Vue.js, 威胁情报, 开发者工具, 数据聚合, 时间感知评分, 漏洞优先级, 漏洞管理, 网络安全, 网络测绘, 自动化攻击, 隐私保护