logo
0
0
WeChat Login
Wang Tiaoke<wangtiaoke@cqsoftware.com.cn>
docs: update documentation to reflect Linux CVE Issue Analysis Assistant identity

Linux CVE Issue Analysis Assistant

一个 Chrome 浏览器插件,为 GitLab Issue 页面提供 CVE 信息聚合、厂商安全公告展示和快速指派功能,简化 Linux 维护者的 CVE 处置工作流程。

功能特点

  • 📰 CVE 信息聚合:自动从 CVE.org 获取 CVE 详细信息(CVSS 评分、受影响产品、CWE 等)
  • 🛡️ 厂商安全公告:在 Chrome Side Panel 中聚合展示 RedHat、OpenEuler、OpenAnolis、Debian 等安全公告
  • 一键指派:在 Issue 详情页和列表页快速指派给默认用户
  • 🔍 隐藏 CVE/UNRESOLVE:在 Issue 列表页提供快速过滤 CVE/UNRESOLVE 标签的选项
  • 🎯 简单配置:只需设置一次默认指派人,即可在内部 GitLab 实例使用

安装方法

Chrome 浏览器(开发者模式安装)

  1. 下载或克隆此项目到本地
  2. 安装依赖:pnpm install
  3. 构建项目:pnpm build
  4. 打开 Chrome 浏览器,访问 chrome://extensions/
  5. 开启右上角的"开发者模式"
  6. 点击"加载已解压的扩展程序"
  7. 选择 .output/chrome-mv3 目录
  8. 插件安装完成!

使用说明

1. 配置插件

  1. 点击浏览器工具栏中的插件图标
  2. 点击"打开设置"按钮
  3. 在设置页面完成以下配置:
    • 默认指派人:输入您的 GitLab 用户名(例如:johndoe,系统会自动添加 @ 前缀)
    • 安全厂商公告来源:通过滑块开关启用或禁用特定厂商(OpenEuler 默认禁用,其他默认启用)
    • AtomGit Token(如需启用 OpenEuler):填写 AtomGit API Token
  4. 点击"保存配置"

2. 使用快速指派

配置完成后,访问任何 GitLab Issue 页面:

  • Issue 详情页:在 Assignee 字段旁边会显示"快速指派"按钮
  • Issue 列表页:在每个 Issue 卡片的操作栏会显示"快速指派"按钮

点击按钮即可将 Issue 指派给您设置的默认用户。

3. 查看其他厂商安全公告

在 GitLab Issue 详情页(Issue 标题包含 CVE 编号时):

  • 浏览器 Side Panel 会启用(可通过插件图标手动打开)
  • CVE.org 卡片:展示 CVE 详细信息,包括 CVSS 评分、受影响产品、CWE、参考文献等
  • 厂商公告卡片:展示已启用的安全厂商公告(RedHat、OpenEuler、OpenAnolis、Debian)
  • 每个厂商卡片包含:公告标题、发布时间、状态、原文链接及描述摘要
  • 点击 Side Panel 顶部的「目录」按钮可快速跳转到指定厂商
  • 也可通过 Chrome 原生「目录」面板在厂商之间跳转

4. 隐藏 CVE/UNRESOLVE Issue

在 GitLab Issue 列表页:

  • 页面顶部会出现「隐藏 CVE/UNRESOLVE」复选框
  • 勾选后,列表将过滤掉带有 CVE/UNRESOLVE 标签的 Issue
  • 设置会持久化保存,下次访问时自动应用

5. 按钮状态说明

  • 默认状态[快速指派] - 可点击
  • 加载状态[指派中...] - 正在执行指派操作
  • 成功状态[✓ 成功] - 指派成功(绿色,2秒后恢复)
  • 失败状态[✗ 失败] - 指派失败(红色,2秒后恢复)

项目结构

.
├── wxt.config.ts              # WXT 配置文件
├── package.json               # 项目依赖与脚本
├── tsconfig.json              # TypeScript 配置
├── entrypoints/               # 插件入口点
│   ├── background.js          # 后台服务脚本
│   ├── content.js             # 内容脚本(核心功能)
│   ├── popup/
│   │   ├── index.html         # 弹窗页面
│   │   ├── popup.js           # 弹窗逻辑
│   │   └── popup.css          # 弹窗样式
│   ├── options/
│   │   ├── index.html         # 配置页面
│   │   ├── options.js         # 配置页面逻辑
│   │   └── options.css        # 配置页面样式
│   └── sidepanel/
│       ├── index.html         # 侧边栏页面
│       ├── sidepanel.js       # 侧边栏逻辑
│       └── sidepanel.css      # 侧边栏样式
├── utils/vendors/             # 厂商数据获取模块
│   ├── config.js              # 厂商配置常量
│   ├── storage.js             # 存储管理
│   ├── request.js             # HTTP 请求工具
│   ├── cve-org.js             # CVE.org 数据获取
│   ├── redhat.js              # RedHat 数据获取
│   ├── openanolis.js          # OpenAnolis 数据获取
│   ├── openeuler.js           # OpenEuler 数据获取
│   └── debian.js              # Debian 数据获取
├── assets/                    # 内容脚本样式等资源
│   └── content.css
├── public/                    # 静态资源
│   └── icons/
│       ├── icon16.png         # 16x16 图标
│       ├── icon48.png         # 48x48 图标
│       └── icon128.png        # 128x128 图标
└── README.md                  # 说明文档

技术栈

  • 框架WXT + Chrome Extension Manifest V3
  • 语言:原生 JavaScript (ES6+)
  • 样式:原生 CSS
  • 存储:browser.storage.local
  • API:GitLab REST API v4, CVE.org API, 各厂商安全公告 API

兼容性

  • ✅ Chrome 90+
  • ✅ 内部 GitLab 实例 (192.168.10.152)

权限说明

  • storage:用于保存用户配置(默认指派人)
  • host_permissions:用于访问 GitLab 页面和调用 GitLab API

隐私声明:本插件不收集任何用户数据,所有配置仅存储在本地浏览器中。

注意事项

图标文件

插件需要以下尺寸的图标文件(请将图标放置在 public/icons/ 目录下):

  • icon16.png - 16x16 像素
  • icon48.png - 48x48 像素
  • icon128.png - 128x128 像素

建议

  • 使用 GitLab 官方配色(橙色 #FC6D26)
  • 简洁的图标设计,例如:用户图标 + 箭头
  • 可以使用在线工具生成图标,如:

支持的 GitLab 实例

插件当前仅支持内部 GitLab 实例:

  • 192.168.10.152

开发说明

调试方法

Content Script 调试

  1. 打开任意 GitLab Issue 页面
  2. 按 F12 打开开发者工具
  3. 在 Console 中查看日志输出

Background 调试

  1. 访问 chrome://extensions/
  2. 找到本插件,点击"Service Worker"链接
  3. 在打开的开发者工具中查看日志

开发命令

# 启动开发模式(热重载)
pnpm dev

# 构建生产版本
pnpm build

# 打包为 zip
pnpm zip

开发模式下,WXT 会自动监听文件变化并重新构建。在 chrome://extensions/ 页面加载 .output/chrome-mv3 目录即可测试。

常见问题

Q: 为什么点击按钮后显示"✗ 无权限"? A: 您可能没有权限指派该 Issue,请确认您具有 Maintainer 或 Owner 角色。

Q: 为什么点击按钮后显示"✗ 用户不存在"? A: 请检查配置的用户名是否正确,确保该用户在当前 GitLab 实例中存在。

Q: 指派成功后为什么页面会刷新? A: 为了确保页面显示最新的指派信息,插件会在指派成功后自动刷新页面。

Q: 支持批量指派吗? A: 当前版本不支持批量指派,如需此功能请在 GitHub 上提 issue。

贡献指南

欢迎贡献代码、报告问题或提出建议!

  1. Fork 本项目
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

许可证

MIT License

联系方式

如有问题或建议,请通过以下方式联系:

  • 提交 GitHub Issue
  • 发送邮件至项目维护者

享受高效的 GitLab 工作流程! 🚀