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

    文章

    4976

    浏览量

    74384
  • BUG
    BUG
    +关注

    关注

    0

    文章

    156

    浏览量

    16307
  • 补丁
    +关注

    关注

    0

    文章

    27

    浏览量

    8805
  • openEuler
    +关注

    关注

    2

    文章

    340

    浏览量

    6764

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Windows 和 Mac 设备混着管,一个控制台,补丁管理轻松拿捏

    曾经企业办公系统高度统一,清一色全是Windows电脑,或者全员都用Mac,一套工具就能搞定全公司补丁。但如今,混合办公、BYOD普及,绝大多数公司都变成了Windows+Mac双系统混用的环境
    的头像 发表于 03-26 16:59 1133次阅读
    Windows 和 Mac 设备混着管,一个控制台,<b class='flag-5'>补丁</b>管理轻松拿捏

    IT 补丁管理的8大深坑,一招全破解

    很多IT团队一到每月的“补丁星期二”就头疼,设备多、远程管不过来、补丁总漏打、怕更崩系统、审计要的材料拿不出来。对企业来说,补丁管理绝不仅仅是看到更新提示点一下“立即更新”那么简单,而是一套关乎终端
    的头像 发表于 03-19 17:05 849次阅读
    IT <b class='flag-5'>补丁</b>管理的8大深坑,一招全破解

    Rockchip CIF驱动深度解析:从架构设计到电源计数补丁修复

    稳定性。本文将从「驱动整体架构」入手,拆解核心文件功能与调用关系,再聚焦「Sensor 电源引用计数补丁」,详解如何通过补丁解决实际运行中的稳定性问题,为驱动开发与调试提供完整参考。
    的头像 发表于 02-06 16:49 4798次阅读
    Rockchip CIF驱动深度解析:从架构设计到电源计数<b class='flag-5'>补丁</b>修复

    为什么偏偏是周二?一文了解微软“补丁星期二”的前世今生

    某个寻常的周二。办公室的IT同事面色凝重,咖啡杯见底的速度异于往常,甚至对着闪烁的屏幕低声自语……如果你看到类似的场景,请别轻易打扰。他们很可能正在应对微软每月一次的“补丁星期二
    的头像 发表于 12-23 17:02 985次阅读
    为什么偏偏是周二?一文了解微软“<b class='flag-5'>补丁</b>星期二”的前世今生

    C语言单元测试在嵌入式软件开发中的作用及专业工具的应用

    精度达99.9%以上 ‌硬件虚拟化与热补丁技术****‌: 通过GPIO/CAN虚拟化驱动层,在硬件原型未完成阶段即可模拟ECU与传感器/执行器的交互 动态热补丁(Hot Patching)允许在不重
    发表于 12-18 11:46

    NVMe over Fabrics 国产 IP:高性能网络存储解决方案

    近期发现NVMe over Fabrics只有国外知名FPGA厂家推出,2025年初给出补丁,但是听说面临无技术团队支持的窘境。 我们根据以往NVMe和RDMA 开发经验,推出国产化NVMe-oF
    发表于 12-12 14:19

    NVMe-oF 国产IP:高性能网络存储解决方案

    目前相关IP较少,网上主要是知名FPGA厂家的IP,疑似被泄露。但是技术支持可能没有了,补丁会限制部分使用,由于其接口复杂,不利于二次开发。这里给出一种高性能网络存储技术,走国产化设计.
    的头像 发表于 12-12 10:02 231次阅读
    NVMe-oF 国产IP:高性能网络存储解决方案

    技术分享】RK3588如何搭建xenomai3+ethercat

    说明使用的RK3588的分支版本是linux-6.1-stan-rkr6内核版本是6.1.99把瑞芯微的SDK更新到linux-6.1-stan-rkr6这个版本即可。编译xenomai3的内核请参考上一篇技术分享:技术分享|RK3588如何增加Xenomai3实时
    的头像 发表于 12-11 17:26 1387次阅读
    【<b class='flag-5'>技术</b>分享】RK3588如何搭建xenomai3+ethercat

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

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

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

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

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

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

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

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