
openeuler/cve-void核心功能全解析从补丁检索到KABI校验的完整流程【免费下载链接】cve-voidThis tool is used to fix CVEs from list. Automated repetitive work allows developers to focus on whether CVEs patches need to be merged, greatly improving the efficiency of CVE remediation.项目地址: https://gitcode.com/openeuler/cve-void前往项目官网免费下载https://ar.openeuler.org/ar/openEuler / cve-void是一个面向内核维护场景的CVE自动化合入工具主要用于根据CVE列表从openEuler、Ubuntu以及上游社区抓取已修复补丁并自动合入到待修复内核分支中。项目将补丁检索、cherry-pick合入、提交信息规范化、编译验证和kabi校验串联为一套可批量执行的流程帮助维护人员降低漏洞修复成本、提升批量处理效率和结果可追踪性。 为什么选择cve-void6大核心优势解析cve-void作为天翼云自主创新项目已在欧拉社区开放源码它通过自动化流程解决了内核CVE修复中的重复性工作让开发者专注于补丁是否需要合入的决策环节。其核心优势包括1️⃣ 多源补丁自动检索工具支持从openEuler内核仓库、Ubuntu安全页面和NVD国家漏洞数据库三大来源自动抓取CVE修复补丁确保覆盖主流修复渠道。通过智能匹配算法优先选择经过验证的稳定补丁减少人工筛选成本。2️⃣ 提交信息智能规范化自动将合入的补丁提交信息标准化通过config.json配置文件中的个人信息如Signed-off-by和Reviewed-by和CTKfeat编号生成符合项目规范的提交记录。对于复杂的提交信息工具会自动插入CVE编号和上游commit链接确保追溯性。3️⃣ 编译与KABI兼容性双重校验提供可选的编译验证功能--compile_each_cve参数在每个CVE合入后自动执行内核编译和KABI内核二进制接口校验。通过config.json中定义的make_defconfig和check_kabi命令确保补丁不会引入编译错误或破坏ABI兼容性。4️⃣ 冲突自动分析与依赖追踪当补丁合入出现冲突时工具会自动分析冲突文件的历史提交记录识别可能缺失的前置依赖补丁并生成详细的冲突报告。这一功能大幅降低了手动解决冲突的复杂度尤其适合批量处理场景。5️⃣ 结构化结果输出与统计每个CVE的处理结果成功/失败原因、补丁来源、编译状态等会以JSON格式存储在cve_json/目录中便于后续分析和审计。工具还提供详细的统计报告清晰展示不同来源openEuler/Ubuntu/上游的补丁合入情况。6️⃣ 灵活的离线与调试模式支持离线运行--offline参数和调试模式--debug参数满足不同网络环境和问题排查需求。离线模式下工具仅使用本地仓库数据进行处理适合无网络环境调试模式则输出详细日志帮助定位问题。 完整工作流程从CVE列表到补丁合入cve-void的工作流程设计遵循内核开发最佳实践将整个CVE修复过程拆分为6个关键步骤形成闭环自动化处理1. 准备工作配置与环境搭建核心配置文件cve_list需修复的CVE编号列表每行一个CVE IDconfig.json包含个人信息、CTKfeat编号、编译命令和KABI校验命令环境部署命令# 克隆代码仓库 git clone https://gitcode.com/openeuler/cve-void cd cve-void # 安装依赖 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt # 配置内核仓库示例 git clone your-kernel-repo-url cd your-kernel-repo-dir git worktree add ../project/feature-batch-cve your-fix-branch git remote add euler https://gitee.com/openeuler/kernel.git git fetch euler2. 补丁检索多源智能匹配工具通过cve_void.py的main函数启动检索流程按优先级从以下渠道获取补丁openEuler内核仓库使用git log --grepCVE: {cve}命令搜索相关提交Ubuntu安全页面解析https://ubuntu.com/security/{cve}页面提取修复commitNVD数据库从https://nvd.nist.gov/vuln/detail/{cve}页面抓取上游commitLinux LTS仓库搜索稳定版内核分支中的相关修复这一过程通过get_fixed_commits_from_dir和get_fixed_commits_from_nvd等函数实现确保优先选择经过社区验证的补丁。3. 补丁合入cherry-pick与冲突处理检索到补丁后工具通过cherry_pick_commits函数执行合入操作核心流程包括执行git cherry-pick命令应用补丁自动检测并处理补丁已存在情况冲突时通过why_conflict函数分析依赖关系对合入成功的补丁调用modify_commit函数规范化提交信息对于openEuler来源的补丁工具会特别处理提交信息中的stable inclusion等区块插入CTKfeat编号和CVE信息生成符合项目规范的提交记录。4. 编译验证确保代码正确性启用--compile_each_cve参数后工具会在每个CVE合入后执行make_defconfig命令默认make openeuler_defconfig生成配置make -j$(nproc)并行编译内核check_kabi命令默认python3 build/check-kabi验证KABI兼容性编译和KABI校验结果会记录到JSON报告中若失败则终止流程并提示错误原因。5. 结果输出结构化报告与统计每个CVE的处理结果以JSON格式保存到cve_json/目录包含补丁来源openEuler/Ubuntu/上游合入状态成功/失败编译和KABI校验结果失败原因和冲突文件列表处理完成后工具还会输出汇总统计示例From openeuler: Total successful cherry-pick commits: 12 From openeuler: Total commits already upstream (and therefore skipped): 36. 人工干预异常处理与优化对于无法自动处理的情况工具会明确提示需要人工干预的内容包含CAN_NOT_PROCESS_THIS_COMMIT标记的提交信息需要手动编辑冲突无法自动解决的补丁列表编译或KABI校验失败的详细日志这些信息通过logger模块输出到控制台同时记录到JSON报告中。 实用操作指南快速上手与高级技巧基础使用命令python3 cve_void.py \ --cve_list cve_list \ --openeuler_dir project/OLK-5.10/ \ --linux_lts_dir project/linux-5.10.y/ \ --linux_rolling_lts_dir project/linux-rolling-lts/ \ --fix_cve_dir project/feature-batch-cve/ \ --compile_each_cve关键参数解析参数作用推荐场景--compile_each_cve每个CVE合入后编译验证生产环境确保稳定性--offline离线模式不访问网络无网络环境或本地测试--debug输出详细调试日志问题排查和开发调试--reset_hard_each_cve每个CVE后重置分支多轮测试或网站展示配置文件优化通过config.json定制化工具行为person_info添加项目所需的签名信息CTKfeat关联内部需求编号make_defconfig指定项目特定的defconfigcheck_kabi调整KABI校验命令常见问题解决补丁冲突查看cve_json/目录下的JSON报告根据failedReason分析缺失依赖编译失败检查compileFailReason字段确认是否为配置问题或补丁兼容性问题提交信息错误运行git log --grepCAN_NOT_PROCESS_THIS_COMMIT查找需要手动编辑的提交 项目价值与应用场景cve-void特别适合以下场景大型内核项目维护批量处理多个CVE减少重复劳动多版本内核支持同时维护多个LTS版本的CVE修复安全响应团队快速响应漏洞通报缩短修复周期开源社区贡献标准化CVE修复流程提升贡献效率通过自动化处理占比约70%的重复性工作cve-void让开发者能够专注于补丁评估和冲突解决等核心决策环节平均可提升CVE修复效率3-5倍。 许可证与开源贡献本项目严格遵循木兰宽松许可证, 第2版由天翼云科技有限公司长期维护。欢迎社区贡献代码、报告问题或提出改进建议共同完善国产操作系统的安全生态。项目核心代码文件cve_void.py主程序逻辑scraper.py网页内容抓取模块logger.py日志处理模块【免费下载链接】cve-voidThis tool is used to fix CVEs from list. Automated repetitive work allows developers to focus on whether CVEs patches need to be merged, greatly improving the efficiency of CVE remediation.项目地址: https://gitcode.com/openeuler/cve-void创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考