暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

一条 SQL 搞定 MySQL 漏洞筛查?DuckDB 做到了!

251

 

在日常的数据库安全运维和漏洞管理中,掌握 MySQL 相关 CVE 信息,对漏洞修复和风险评估至关重要。

CVE 是通用漏洞披露(Common Vulnerabilities and Exposures)的英文缩写,列出了已公开披露的各种计算机安全缺陷。

对于使用 MySQL 的企业来说,如何在本地高效、准确地检索与分析漏洞信息,也直接影响到系统安全性。

今天我分享一个如何用 DuckDB 构建极简漏洞筛查工具,实现 MySQL CVE 信息的离线本地化查询与报告生成,无需依赖商业化漏洞扫描工具,适合 DBA 自查自用。


技术方案

1. 数据来源

  • • 采用 CVEProject[1] 官方公开仓库,涵盖所有公开 CVE 条目,将其克隆到本地,数据是以 JSON 文件存储。

2. 数据引擎

从CVE仓库中,提取和MySQL相关的CVE记录,我选择 DuckDB[2] 作为分析引擎,原因如下:

  • • 原生支持 JSON 文件读取与解析。
  • • 支持标准 SQL 查询语法,学习成本低。
  • • 无需安装服务进程,支持零配置本地运行。
  • • 性能优秀,适用于中小规模数据的快速分析。

DuckDB 也是近两年迅速走红嵌入式分析数据库,其具备高性能、轻量级和易用性等特点。

正好想试试,是不是真的好用。实际使用下来,体验非常丝滑,仅用SQL就完成数据处理任务,也不用任何配置。相比使用jq处理json简单多了。

深刻体现了其产品设计中的一个理念:好用优于性能

The important feature of a database is how quickly you can go from idea to answer, not query to result. Perf is not enough[3]

3. 设计目标

  • • 极简部署: 只需DuckDB + git + nc,适合所有类 Unix 系统。
  • • CVE数据自动拉取:每次更新前自动同步CVE数据,保证数据实时。
  • • 高性能解析:DuckDB 直接解析 JSON,无需中间转换。
  • • 版本号扫描:支持主、次、补丁号的精确比对,避免误报/漏报。
  • • 结果自动导出:生成结构化的 Markdown报告。

4. 使用场景

  • • DBA 日常安全自查
  • • 版本升级前的风险评估
  • • 安全漏洞报告自动生成
  • • 离线环境下的漏洞检索

使用方法

  1. 1. 克隆 项目
    git clone https://github.com/kevinbin/mysqlcve.git
  2. 2. 一键更新(全量或指定年份)
    ./mysql_cve.sh update         # 全量更新,耗时较长
    ./mysql_cve.sh update 2025    # 只更新2025年

  3. 3. 扫描指定网段 MySQL 版本
    ./mysql_cve.sh scan 192.168.1
    正在扫描 192.168.1.1-254 网段的MySQL服务...
    [+] 192.168.1.8   - MySQL Version: 8.0.42
    [+] 192.168.1.22  - MySQL Version: 5.7.44
    [+] 192.168.1.51  - MySQL Version: 8.0.21
    [+] 192.168.1.54  - MySQL Version: 8.0.21
    [+] 192.168.1.87  - MySQL Version: 8.0.35
    [+] 192.168.1.84  - MySQL Version: 8.0.35
    [+] 192.168.1.148 - MySQL Version: 8.0.32
    [+] 192.168.1.160 - MySQL Version: 8.0.30
    [+] 192.168.1.232 - MySQL Version: 8.0.35

  4. 4. 查找指定 MySQL 版本CVE
    ./mysql_cve.sh match 8.0.32
    # 结果自动输出为 scan_result.md 


总结

本项目构建了一个轻量、可靠、离线可用的 MySQL CVE 漏洞扫描工具,具备部署简单、查询灵活、结果直观的优势,适合个人安全研究、企业运维自查及自动化漏洞管理场景。

如果你正在寻找一种无需繁琐配置、可本地运行的 MySQL 漏洞筛查解决方案,欢迎试用提出你的建议。如需源码,可访问 mysqlcve[4] 。


引用链接

[1]
 CVEProject: https://github.com/CVEProject/cvelistV5.git
[2]
 DuckDB: https://duckdb.org/
[3]
 Perf is not enough: https://motherduck.com/blog/perf-is-not-enough/
[4]
 mysqlcve: https://github.com/kevinbin/mysqlcve



故障分析 | MySQL 8.0 中多字段虚拟列引发的宕机
故障分析 | 如何解决由触发器导致 MySQL 内存溢出?
故障分析 | 查询 ps.data_locks 导致 MySQL hang 住
故障分析 | TCP 缓存超负荷导致的 MySQL 连接中断


✨ Github:https://github.com/actiontech/sqle

📚 文档:https://actiontech.github.io/sqle-docs/

💻 官网:https://opensource.actionsky.com/sqle/

👥 微信群:请添加小助手加入 ActionOpenSource

🔗 商业支持:https://www.actionsky.com/sqle


 

文章转载自爱可生开源社区,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论