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

    文章

    4596

    浏览量

    67332
  • BUG
    BUG
    +关注

    关注

    0

    文章

    154

    浏览量

    15605
  • 补丁
    +关注

    关注

    0

    文章

    24

    浏览量

    8427
  • openEuler
    +关注

    关注

    2

    文章

    292

    浏览量

    5719

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

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

收藏 人收藏

    评论

    相关推荐

    Efinity软件安装教程与Efinity入门使用教程 大牛手把手教程

    了,软件安装时会自己安装python3.8,也不需要下载。 step2 :安装efinity。该步骤比较简单,一路选择Next,或者勾选同意。 stpe3:安装补丁。如果所选择的版本有补丁则安装补丁,如果
    的头像 发表于 05-20 17:10 285次阅读
    Efinity软件安装教程与Efinity入门使用教程 大牛手把手教程

    微软五月补丁修复61个安全漏洞,含3个零日漏洞

    值得注意的是,此次修复并不包含5月2日修复的2个微软Edge漏洞以及5月10日修复的4个漏洞。此外,本月的“补丁星期二”活动还修复了3个零日漏洞,其中2个已被证实被黑客利用进行攻击,另一个则是公开披露的。
    的头像 发表于 05-15 14:45 389次阅读

    微软将在Win10、Win11增加细分控制选项

    据 IT 之家早前报道,微软曾于 2024 年 4 月补丁星期二活动日发布补丁,使 Windows 11 23H2 及 Windows 10 22H2 用户可在锁屏界面查看天气预报、体育资讯、金融数据等扩展内容。
    的头像 发表于 04-09 15:50 145次阅读

    微软发布Linux内核Rust模块优化补丁

    在此之前,Linux 内核中要想实现模块初始化,必须先创建一个实例,再将其移至特定内存空间。然而,经过新补丁调整后,各模块可直接在预设定好的内存地址上完成初始化工作。
    的头像 发表于 04-02 15:11 288次阅读

    Efinity软件安装-v3

    安装python了,软件安装时会自己安装python3.8,也不需要下载。 step2 :安装efinity。该步骤比较简单,一路选择Next,或者勾选同意。 stpe3:安装补丁。如果所选择的版本
    的头像 发表于 03-29 08:38 69次阅读

    请问如何给STM32MP157上Linux5.4.31打实时内核补丁

    我这边想给STM32MP157芯片A7上面的Linux打实时内核补丁,从而运行一些对实时性要求较高的应用程序。我看到我的Linux内核版本是5.4.31的。然而,Linux内核官方网站上面找不到这个
    发表于 03-11 06:09

    LineageOS 18.1停更在即,后续更新将不再提供

    谷歌每年定期提供最新Android安全补丁,至2024年2月已发布适配安卓11的终极安全补丁。鉴于此种情况,基于安卓11的LineageOS 18.1版本不得不停更。
    的头像 发表于 03-08 14:18 622次阅读

    索尼新型掌机与PS5游戏兼容性:18个CU单元或"补丁"支持

    它兼容PlayStation 4和PS5平台,为兼顾PS4游戏的兼容性,可能内置18个CU单元。开发者需准备相关补丁以确保PS5游戏在掌机上顺畅运行。
    的头像 发表于 02-02 11:39 393次阅读

    兆芯正引入Linux首选内核调度技术,优化性能

    近期,兆芯工程团队亦在致力于将首选内核调度技术引进Linux系统中。他们试图通过提议的Linux内核补丁,利用已有的ACPI功能来辨别每个核心的特性。这项补丁将在ACPI CPUFreq驱动程序中体现。这意味着调度程序能自动在首
    的头像 发表于 12-29 14:30 313次阅读
    兆芯正引入Linux首选内核调度<b class='flag-5'>技术</b>,优化性能

    AMD Zen5架构处理器曝光,预计2024年亮相

    AMD此前多次提及的“Family 1Ah CPU”补丁,以及此批在2024年前密集推送的Linux驱动补丁,预示着他们正为新款处理器打好基础,确保发布之际能得到Linux操作系统的稳固支持。
    的头像 发表于 12-28 14:48 1633次阅读

    CredSSP远程执行代码漏洞CVE-2018-0886漏洞的修复

    实际上,如果你下载的补丁版本和操作系统是对应的,但是还是无法安装,当安装补丁提示“此更新不适用于你的计算机”时,可以首先查看操作系统是否已经升级到最新SP版本。
    的头像 发表于 11-29 16:04 4434次阅读
    CredSSP远程执行代码漏洞CVE-2018-0886漏洞的修复

    Linux实时内核准备支持RISC-V

    目前,Linux RT补丁集允许为ARM64(AArch64)、ARM、PowerPC和x86/x86_64架构启用PREEMPT_RT。最近正在处理的一组补丁也将扩展对RISC-V的支持。
    的头像 发表于 10-31 16:29 409次阅读

    ARM Cortex®-M3处理器技术参考手册

    中断处理。 ·多个高性能总线接口。 ·具有以下可选功能的低成本调试解决方案: -实现断点和代码补丁。 -实施观察点、跟踪和系统分析。 -支持printf()风格的调试。 -桥接到跟踪端口分析器(TPA)。 ·可选的内存保护单元(MPU)。
    发表于 08-18 06:09

    LSISAS2108/2208 MegaCLI-Linux的补丁

    电子发烧友网站提供《LSISAS2108/2208 MegaCLI-Linux的补丁.zip》资料免费下载
    发表于 08-11 11:26 0次下载
    LSISAS2108/2208 MegaCLI-Linux的<b class='flag-5'>补丁</b>

    四核八线处理器龙芯3A6000的补丁功能介绍

    从提交的补丁内容来看,基于龙架构 (LoongArch) 的 3A6000 将是一款四核八线处理器。 此前曾报道过,3A6000 是国内自主研发的首款支持 SMT 技术的通用 CPU 产品,集成 4 个龙芯自主设计的 LA664 核心,每个物理核心有 2 个逻辑核心。
    发表于 07-06 11:33 811次阅读
    四核八线处理器龙芯3A6000的<b class='flag-5'>补丁</b>功能介绍