syscare讨论汇总

在这里会陆续更新一下syscare的使用、demo、原理等相关内容,后续也会整理一些FAQ

3 个赞

使用说明

Readme README.md · openEuler/syscare - Gitee.com

Demo测试指导

自验环境信息

X86虚拟机一台:
硬件配置:32CPU 16G内存(非独占)
操作系统:openEuler-22.03-LTS 执行yum update更新到最新版本
软件信息:依赖rust >= 1.60.0 (使用openEuler-22.03-LTS-SP1的rust版本即可)
Kernel = 5.10.0-60.66.0.91.oe2203.x86_64 (例子,实际使用openEuler-22.03-LTS-SP1版本即可)

安装syscare

Syscare 版本:可以使用openEuler-22.03-LTS-SP1版本自带syscare,或者由源码编译

	1.  git clone https://gitee.com/openeuler/syscare.git
	2.  cd syscare
	3.  mkdir tmp
	4.  cd tmp
	5.  cmake ..
	6.  make
	7.  sudo make install 

编译依赖ko

注意:如使用非openEuler-22.03-LTS-SP1版本,需要手动重编kernel,合入一个内核修改

  1. kernel 修改
a)	yumdown yumdownloader --source kernel
b)	rpm -I kernel-xxxxx.src.rpm
c)	到rpmbuild/SPEC目录下执行 rpmbuild -bp –nodeps kernel.spec
d)	到rpmbuild/BUILD/kernel-5.10/linux-xxxxx目录下
e)	patch -p1 < syscare源码目录/upatch/kmod/kernel-patch/0001-uprobe-add-UPROBE_ALTER_PC-flag-for-uprobe-handlers.patch
f)	make openeuler_defconfig
g)	make -j16 KERNELRELEASE=`uname -r`
h)	make modules_install KERNELRELEASE=`uname -r`
i)	make install KERNELRELEASE=`uname -r`
j)	reboot
  1. 编译ko
a)	到syscare源码目录/upatch/kmod/ 执行 make kernel=~/ rpmbuild/BUILD/kernel-5.10.0/linux-xxxxxxx.x86_64/
  1. 插入ko
insmod upatch.ko

测试内核热补丁

补丁制作

下载内核src和debuginfo包

yumdownloader --source kernel
yumdownloader --debuginfo kernel

准备patch文件:version.patch 修改了/proc/version的显示
制作内核热补丁:

syscare build --name kernel-1 --source ./kernel-5.10.0-60.66.0.91.oe2203.src.rpm --debuginfo kernel-debuginfo-5.10.0-60.66.0.91.oe2203.x86_64.rpm version1.patch

执行成功

生成文件:
kernel-5.10.0-60.66.0.91.oe2203.patched.kernel_1.1.c15c1a6a.src.rpm
patch-kernel-5.10.0-60.66.0.91.oe2203-kernel-1-1-c15c1a6a.x86_64.rpm

测试功能:

1、 安装补丁

sudo rpm -ivh patch-kernel-5.10.0-60.66.0.91.oe2203-kernel-1-1-c15c1a6a.x86_64.rpm

2、 应用并激活补丁

sudo syscare apply kernel-1

3、 反激活补丁

测试用户态热补丁

所需rpm、patch、conf等文件可从 文件服务器 (renoseven.net)获取
以CVE-2021-32675为例,使用CVE-2021-32675修复之前的版本作为基线,制作出rpm
redis-6.2.5-1.x86_64.rpm
redis-6.2.5-1.src.rpm
redis-debuginfo-6.2.5-1.x86_64.rpm

补丁制作

syscare build --name redis-1 --source redis-6.2.5-1.src.rpm --debuginfo redis-debuginfo-6.2.5-1.x86_64.rpm --target-elfname redis-server 0001-Prevent-unauthenticated-client-from-easily-consuming.patch

生成patch-redis-6.2.5-1-redis-1-1-31fc7544.x86_64.rpm redis-6.2.5-1.patched.redis_1.1.31fc7544.src.rpm

测试功能

安装补丁

sudo rpm -ivh patch-redis-6.2.5-1-redis-1-1-31fc7544.x86_64.rpm

启动redis-server

sudo redis-server ./redis.conf &

激活前测试功能:

激活补丁

测试功能

CVE漏洞已修复
反激活补丁

3 个赞

SysCare是一个系统级热修复软件,为操作系统提供单机级与集群级安全补丁和系统错误热修复,主机无需重新启动即可修复该系统问题。​ 当前仅融合统一内核态/用户态热补丁技术,用户需聚焦在自己核心业务中,系统修复问题交予SysCare进行处理。后期计划根据修复组件的不同,提供系统热升级技术,进一步解放运维用户提升运维效率。

不错的

用户态补丁只支持redis和nginx,不跟硬件,交互的一些项目是不是只能打用户态补丁。还有那种二进制文件可以打补丁吗