0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是热补丁技术

openEuler 来源:openEuler 作者:openEuler 2022-07-08 11:22 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

LibcarePlus 用户态热补丁作为 openEuler 社区关键技术,受到了广大开发者的关注和讨论。openEuler 社区与天翼云基础架构技术团队通力合作,共同打造了全面支持 aarch64 及 x86 平台的 LibcarePlus 热补丁功能,可以应用于 CVE 漏洞修复,也可应用于不中断应用服务的紧急 bug 修复。下面我们就来聊聊什么是热补丁技术。

热补丁技术背景

当运行的程序存在漏洞的时候,我们一般有以下几种解决办法:

替换最新的包含修复补丁的 OS 版本,在有主备倒换能力的组网环境上,可以先将当前运行的程序迁移到备区,待主区升级完后,再将程序迁移到主区;

替换程序的 rpm 包,然后重新运行程序(注意此时需要考虑依赖包的兼容性),对于具备热替换能力的程序,则可以利用热替换能力,实现程序运行内容的替换;

直接给运行的程序内容打补丁,替换有问题的代码,实现程序漏洞的修复;

从补丁粒度上来说,上述技术漏洞修复粒度是从大到小变化的:第一个是系统级的,主要涉及的技术有热迁移技术;第二个是 rpm 包级的,主要涉及的技术有热替换;第三个是运行程序级的,主要涉及的技术有热补丁。从业务中断时长来说,上述技术的业务中断时长也是从大到小变化的:第一种技术业务中断时间一般在分钟级,且一般涉及整个系统业务的主备倒换,升级周期最长,一般需要几个月的升级窗口;第二种技术业务中断时间一般在百毫秒级,且该技术一般不通用,需要侵入式修改和适配大量业务代码,升级周期相对比较短,一般仅需要一个月的升级窗口;第三种技术业务中断时间则一般在毫秒级,该技术比较通用,不需要侵入式修改和适配业务代码,仅需要适配一些通用代码,适配工作量较小,升级周期相对比较短,一般仅需要一个月的升级窗口。

通过上述分析,我们大概能总结出热补丁的如下几个优点:一是热补丁能够在不影响现网业务的情况下,完成程序漏洞的修复;二是热补丁适用于需要快速响应的市场环境,将验证工作从版本验证简化为补丁验证。总结一句话:热补丁短小精悍,适合使用在需要快速响应的场景中。

今天,我们就来简单介绍一下,集万千宠爱于一身的 LibcarePlus 热补丁技术。

LibcarePlus 热补丁技术的基本原理

LibcarePlus 热补丁技术是基于上游社区 libcare 独立发展的分支,当前由 openEuler 社区进行自主孵化。相比于上游社区的 libcare,LibcarePlus 支持主流的 x86_64 架构和 aarch64 架构,全面支持 openEuler Qemu 组件,支持函数级过滤,支持增量补丁,支持补丁文件解析等。

我们以 LibcarePlus Qemu 热补丁技术为例,进行相关介绍。热补丁的整体架构如下:

c00289be-fde5-11ec-ba43-dac502259ad0.png

LibcarePlus 热补丁技术主要包括:热补丁制作、补丁管理和补丁加/卸载。

热补丁制作

LibcarePlus 制作热补丁的基本原理是基于汇编级指令比较技术。LibcarePlus 通过比较基线代码生成的汇编中间文件和打了补丁的基线代码生成的汇编中间文件,找到两者之间的差异部分;再基于差异部分,去除冗余段和修复重定位信息,最终得到热补丁 kpatch 文件。在分析汇编差异的前,LibcarePlus 会基于一些关键信息将汇编内容分成函数块和变量块,然后通过比较函数块和变量块之间的差异,找到差异的函数和变量。补丁制作的大概流程如下图所示:

c034497c-fde5-11ec-ba43-dac502259ad0.png

Qemu 热补丁管理

依托于 libvirt 组件对 Qemu 的管理,openEuler 同样将 Qemu 热补丁的管理集成到 libvirt 中。通过与虚拟机的生命周期交互,libvirt 能够更完美地寻找到 Qemu 补丁加载的最佳时机,完成对 Qemu 组件热补丁的管理。

热补丁加载/卸载

热补丁加/卸载的基本原理如下图所示:

c0551076-fde5-11ec-ba43-dac502259ad0.png

LibcarePlus 热补丁加/卸载基于内核提供的 ptrace 能力。通过 ptrace 目标进程,将目标进程短暂冻结,随后进行补丁加载环境的安全校验,在确保补丁加载环境安全的情况下,以 mmap 映射的方式,将适配好的补丁文件插入到目标进程的内存空洞中。在执行完上述步骤后,通过修改缺陷函数的前面五个字节的代码,让缺陷函数在被调用时跳转到新函数的地址中,从而使热补丁生效。最后,解冻目标进程,完成热补丁的加载。

在热补丁加载过程中,缺陷函数被替换的前五个字节代码会保存在目标进程的热补丁的管理结构中,将这五个字节代码重新写回原地址处,可使热补丁回滚到原来状态,从而实现了热补丁卸载。

原文标题:LibcarePlus 用户态热补丁技术那些事

文章出处:【微信公众号:openEuler】欢迎添加关注!文章转载请注明出处。

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 代码
    +关注

    关注

    30

    文章

    4941

    浏览量

    73135
  • BUG
    BUG
    +关注

    关注

    0

    文章

    156

    浏览量

    16225
  • 补丁
    +关注

    关注

    0

    文章

    27

    浏览量

    8757
  • openEuler
    +关注

    关注

    2

    文章

    335

    浏览量

    6665

原文标题:LibcarePlus 用户态热补丁技术那些事

文章出处:【微信号:openEulercommunity,微信公众号:openEuler】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    技术分享 | RK3588增加Xenomai3实时补丁

    Xenomai是一套为嵌入式系统设计的实时开发框架,通过“双内核”架构,让Linux既能处理复杂的通用任务,又能可靠地完成那些对响应时间有极端要求的任务,广泛用于工业自动化、机器人、航空航天等对实时性要求极高的场景。本篇文章以启扬RK3588开发板为例,分享如何增加Xenomai3实时补丁
    的头像 发表于 11-27 17:29 1054次阅读
    <b class='flag-5'>技术</b>分享 | RK3588增加Xenomai3实时<b class='flag-5'>补丁</b>

    别让小疏忽酿成大风险,这些补丁误区你避开了吗?

    补丁管理始终是维护系统安全与稳定的核心环节,它能确保操作系统、应用程序及终端设备时刻保持最新状态,获取最新的安全防护与功能支持。这一关键环节中的细微疏漏,往往成为引爆安全危机的导火索,可能让企业直面
    的头像 发表于 11-12 17:02 943次阅读
    别让小疏忽酿成大风险,这些<b class='flag-5'>补丁</b>误区你避开了吗?

    【米尔RK3506国产开发板评测】3、实时补丁以及EtherCAT IGH移植

    对实时性能要求较高的应用场景中被广泛使用。瑞芯微提供配套SDK的Preempt-RT补丁。 1、添加depmod和Linux PREEMPT_RT补丁 米尔提供的SDK的busybox中默认没有添加
    发表于 10-27 10:09

    从微秒级响应到确定性延迟:深入解析米尔全志T536核心板的实时性技术突破

    RT-PREEMPT:最流行的内核补丁方案核心技术:将Linux内核改造成完全可抢占,用RT-mutex替代自旋锁,实现优先级继承。优势:兼容性好,无需修改应用程序。 挑战:需要重新编译内核,某些驱动可能不兼容
    发表于 10-22 17:25

    深入解析米尔全志T536核心板的实时性技术突破

    的内核补丁方案核心技术:将Linux内核改造成完全可抢占,用RT-mutex替代自旋锁,实现优先级继承。优势:兼容性好,无需修改应用程序。挑战:需要重新编译内核,某些驱动可能不兼容,最坏情况延迟仍有
    发表于 10-17 17:41

    行业观察 | 微软发布高危漏洞更新,涉及 Windows、Office、SQL Server 等多款产品

    微软于2025年9月的“补丁星期二”发布了81个漏洞的修复更新,覆盖Windows、MicrosoftOffice、SQLServer等核心产品。本次更新修复了2个已被公开披露的零日漏洞,并有9个
    的头像 发表于 09-12 17:05 2157次阅读
    行业观察 | 微软发布高危漏洞更新,涉及 Windows、Office、SQL Server 等多款产品

    【米尔NXP i.MX 91开发板评测】移植和运行RT-Linux,实时性能测试

    介绍 实时性系统应用广泛,在工业自动化、医疗设备、汽车电子等领域扮演着十分重要的角色,我们用i.MX91开发板来移植运行RT-Linux,看看它的实时性能表现如何 实时补丁 下载并应用RT补丁
    发表于 09-01 10:11

    迅为RK3568开发板OpeHarmony学习开发手册1.1-内核移植优化

    在上一小节的内核移植过程中,我们重新创建了内核补丁文件。然而,对于频繁修改内核源代码进行开发的情况来说,每次都制作内核补丁并不是一种方便的方法。为了解决这个问题,本小节将介绍另一种方法。 上一小
    发表于 07-26 10:37

    ZEISS GEAR PRO软件荣获PTB认证,延续二十年计量级精度传承,重构齿轮检测生态的精密计量方案

    2024 年,ZEISS GEAR PRO 7.2 版本软件荣获德国联邦物理技术研究院(PTB)颁发的权威认证,根据《Evaluation software for gear
    发表于 07-10 16:41 1231次阅读
    ZEISS GEAR PRO软件荣获PTB认证,延续二十年计量级精度传承,重构齿轮检测生态的精密计量方案

    SD42524TR 36V宽压输入、±1%精度1A大功率LED驱动芯片方案设计

    在于: 精准恒流控制 :±1%输出电流精度(全温度范围),解决LED亮度一致性难题 全集成化设计 :单芯片集成功率开关、PWM调光接口及多重保护,BOM成本降低40%以上 工业级可靠性 :内置热补
    发表于 06-26 08:54

    用DevEco Studio增量补丁修复功能,让鸿蒙应用的调试效率大增

    DevEco Studio中得到了很好的解答,而增量补丁修复便是其中的核心特性之一。今天,我们要深入探讨鸿蒙应用增量补丁修复及其两个能够大幅加速开发进度的强大功能——Hot Reload和Apply
    发表于 04-14 17:35

    用DevEco Studio增量补丁修复功能,让鸿蒙应用的调试效率大增

    DevEco Studio中得到了很好的解答,而增量补丁修复便是其中的核心特性之一。今天,我们要深入探讨鸿蒙应用增量补丁修复及其两个能够大幅加速开发进度的强大功能——Hot Reload和Apply
    发表于 04-14 14:47

    Siemens PADS Standard 标准版 VX.2.15 最新下载与详细安装教程

    西门子PADS标准版系列近期发布VX.2.15版本,本次更新主要体现为维护性质的版本迭代。通过分析官方更新日志可以发现,此次版本升级的技术改进力度较为有限。 经查阅安装包内附的「PADS
    发表于 03-15 12:08

    【贝启科技BQ3568HM开源鸿蒙开发板深度试用报告】1 - 开箱测试和技术资料准备

    要接上的,否则无法接入WiFi网络。USB转TTL的接口板暂时用不到。两根USB是用于程序烧录的,后面可能会用到。 技术资料 厂商的技术资料主要通过自己的论坛:开源鸿蒙技术交流-Bearkey-开源
    发表于 01-21 11:17

    南亚科技与补丁科技携手开发定制超高带宽内存

    Memory)的开发。 此次合作将充分融合南亚科技在10nm级DRAM技术领域的深厚积累,以及补丁科技在定制内存产品设计方面的卓越能力。双方将强强联手,共同打造出针对AI与边缘应用需求的高附加值、高性能、低功耗的定制超高带宽内存解决方案。 这一战略合作的达成,标志着南亚
    的头像 发表于 12-20 14:28 931次阅读