
Linux 커널 업그레이드 가이드 - CVE-2026-53359 수정
고지: 이 문서는 본인 서버 환경에서의 수정 과정만을 기록한 것이며, 전문적인 보안 분석이 아닙니다. 부적절한 부분이 있으면 지적해 주시기 바랍니다.
검증 설명: 소스 코드 비교를 통해 Linux Kernel 7.1.3에 수정 커밋
81ccda30b4e8("KVM: x86: Fix shadow paging use-after-free due to unexpected role")이 포함되어 있음을 확인했습니다. 이 패치는arch/x86/kvm/mmu/mmu.c의kvm_mmu_get_child_sp()함수에role.word일치 조건을 추가하여 role 불일치로 인한 shadow paging UAF를 근본적으로 제거합니다. 따라서 7.1.3으로 업그레이드하면 이 취약점을 효과적으로 수정할 수 있습니다.
이 문서에서는 CVE-2026-53359를 수정하기 위해 Linux Kernel을 7.1.3으로 업그레이드하는 두 가지 방법을 제공합니다: ELRepo RPM 설치(권장) 및 소스 코드 컴파일.
| 항목 | 설명 |
|---|---|
| CVE 번호 | CVE-2026-53359 |
| 취약 구성 요소 | Linux Kernel KVM x86 Shadow MMU |
| 취약점 유형 | Use After Free (UAF) |
| 수정 방법 | Linux Kernel을 7.1.3으로 업그레이드(ELRepo RPM 또는 소스 코드 컴파일) |
취약점 영향:
KVM x86 Shadow Paging 시나리오에서 비정상적인 상황이 발생하면 해제된 페이지가 여전히 rmap 항목에 의해 참조되어 메모리 안전 문제가 발생할 수 있습니다.
취약점 참고 자료:
| 항목 | 정보 |
|---|---|
| 시스템 | CentOS Stream 8 |
| 업그레이드 전 커널 | 6.18.8-1.el8.elrepo.x86_64 |
| 업그레이드 후 커널 | 7.1.3 |
| 아키텍처 | x86_64 |
현재 환경 확인:
cat /etc/os-release
uname -r
이 튜토리얼에서는 두 가지 업그레이드 방법을 제공하며, 환경에 따라 선택할 수 있습니다:
ELRepo 저장소에 정상적으로 접근할 수 있는 환경에 적합합니다. 컴파일이 필요 없으며 절차가 간단합니다.
# ELRepo GPG 키 가져오기
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# ELRepo 저장소 설치
dnf install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
# 최신 메인라인 커널 설치
dnf --enablerepo=elrepo-kernel install kernel-ml
# 새 커널을 기본 부팅 항목으로 설정
grubby --set-default /boot/vmlinuz-7.1.3-1.el8.elrepo.x86_64
# 재부팅하여 적용
reboot
참고: 커널 버전 번호는 ELRepo 업데이트에 따라 변경될 수 있으므로 실제 설치된 버전을 기준으로 하십시오. 설치 후
ls /boot/vmlinuz-*로 확인할 수 있습니다.
ELRepo 저장소에 접근할 수 없거나 kernel.org 공식 stable 버전이 필요한 환경에 적합합니다. 구체적인 단계는 아래를 참조하십시오.
본인 서버 환경의 경우:
따라서 채택한 방법:
kernel.org 공식 stable 소스 코드 컴파일 방식으로 커널을 업그레이드했습니다.
설명:
이 방법은 본인 서버 환경에서의 해결 방안일 뿐이며, 모든 환경에서 소스 코드 컴파일을 사용해야 하는 것은 아닙니다.
공식 다운로드:
https://cdn.kernel.org/pub/linux/kernel/v7.x/linux-7.1.3.tar.xz
다운로드 명령:
wget https://cdn.kernel.org/pub/linux/kernel/v7.x/linux-7.1.3.tar.xz
업로드 위치(오프라인 환경):
/root/linux-7.1.3.tar.xz
dnf groupinstall "Development Tools" -y
dnf install -y \
ncurses-devel \
elfutils-libelf-devel \
openssl-devel \
bc \
bison \
flex \
perl \
dwarves
mkdir -p /usr/src
cd /usr/src
tar -xf /root/linux-7.1.3.tar.xz
cd linux-7.1.3
ls Makefile # 표시되어야 함: Makefile
# 현재 구성 복사
cp /boot/config-$(uname -r) .config
# 새 구성 생성
make olddefconfig
# KVM 구성 확인
grep -E "CONFIG_KVM|CONFIG_KVM_INTEL" .config
예상 출력:
CONFIG_KVM=m
CONFIG_KVM_X86=m
CONFIG_KVM_INTEL=m
# CPU 스레드 수 확인
nproc
# 컴파일(모든 코어 사용)
make -j$(nproc)
# 커널 이미지 확인
ls -lh arch/x86/boot/bzImage
참고: 컴파일 시간은 CPU 및 스토리지 성능에 따라 달라집니다.
# 모듈 설치
make modules_install
# 설치 확인
ls /lib/modules/
# KVM 모듈 확인
find /lib/modules/7.1.3 -name "kvm*.ko*"
예상 출력:
kvm.ko
kvm-intel.ko
kvm-amd.ko
# 커널 설치
make install
# 설치 확인
ls -lh /boot | grep 7.1.3
예상 출력:
vmlinuz-7.1.3
initramfs-7.1.3.img
System.map-7.1.3
# GRUB 구성 생성
grub2-mkconfig -o /boot/grub2/grub.cfg
# 기본 커널 설정
grubby --set-default /boot/vmlinuz-7.1.3
# 기본 커널 확인
grubby --default-kernel
예상 출력:
/boot/vmlinuz-7.1.3
reboot
커널 버전 확인:
uname -r
# 예상: 7.1.3
KVM 모듈 확인:
lsmod | grep kvm
# 예상: kvm_intel, kvm, irqbypass
KVM 모듈 위치 확인:
modinfo kvm_intel | grep filename
# 예상: /lib/modules/7.1.3/kernel/arch/x86/kvm/kvm-intel.ko
중요: 이전 커널은 즉시 삭제해서는 안 됩니다.
사용 가능한 커널 나열:
grubby --info=ALL | grep kernel
새 커널에 문제가 있으면 이전 커널을 설정합니다:
grubby --set-default /boot/vmlinuz-6.18.8-1.el8.elrepo.x86_64
reboot
| 항목 | 업그레이드 전 | 업그레이드 후 |
|---|---|---|
| 커널 버전 | 6.18.8-1.el8.elrepo.x86_64 | 7.1.3 |
| KVM 상태 | N/A | 활성화됨 |
| CVE-2026-53359 | 영향 받음 | 수정됨 |
고지 사항: 이 저장소는 특정 서버 환경에서의 개인적인 수정 과정만을 기록합니다. 전문적인 보안 분석이 아니며, 수정 제안을 환영합니다.
검증 참고 사항: 소스 코드 비교를 통해 Linux Kernel 7.1.3에 수정 커밋
81ccda30b4e8("KVM: x86: Fix shadow paging use-after-free due to unexpected role")이 포함되어 있음을 확인했습니다. 이 패치는arch/x86/kvm/mmu/mmu.c의kvm_mmu_get_child_sp()함수에role.word일치 조건을 추가하여 role 불일치로 인한 shadow paging UAF를 제거합니다. 따라서 7.1.3으로 업그레이드하면 이 취약점을 효과적으로 해결할 수 있습니다.
이 가이드에서는 CVE-2026-53359 수정을 위해 Linux Kernel을 7.1.3으로 업그레이드하는 두 가지 방법을 제공합니다: ELRepo RPM 설치(권장) 및 소스 코드 빌드.
| 항목 | 설명 |
|---|---|
| CVE ID | CVE-2026-53359 |
| 영향을 받는 구성 요소 | Linux Kernel KVM x86 Shadow MMU |
| 취약점 유형 |
이 취약점은 KVM x86 shadow paging과 관련이 있습니다. 특정 조건에서 해제된 페이지가 여전히 rmap 항목에 의해 참조되어 잠재적인 메모리 안전 문제가 발생할 수 있습니다.
참고 자료:
| 항목 |
|---|
현재 환경 확인:
cat /etc/os-release
uname -r
이 가이드에서는 두 가지 업그레이드 방법을 제공합니다. 환경에 따라 선택하십시오:
ELRepo 저장소에 안정적으로 접근할 수 있는 환경을 위한 방법입니다. 컴파일이 필요 없습니다.
# ELRepo GPG 키 가져오기
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# ELRepo 저장소 설치
dnf install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
# 최신 메인라인 커널 설치
dnf --enablerepo=elrepo-kernel install kernel-ml
# 새 커널을 기본 부팅 항목으로 설정
grubby --set-default /boot/vmlinuz-7.1.3-1.el8.elrepo.x86_64
# 재부팅하여 적용
reboot
참고: 커널 버전 번호는 ELRepo 업데이트에 따라 변경될 수 있습니다.
ls /boot/vmlinuz-*로 실제 설치된 버전을 확인하십시오.
ELRepo에 접근할 수 없거나 kernel.org 공식 stable 릴리스가 필요한 환경을 위한 방법입니다. 자세한 단계는 아래를 참조하십시오.
본인 환경에서:
따라서:
kernel.org 공식 stable 소스 코드를 사용하여 Kernel 7.1.3을 수동으로 빌드했습니다.
참고:
이 방법은 본인 환경에서의 해결 방안일 뿐이며, 모든 시스템에 필수적인 업그레이드 방법은 아닙니다.
공식 소스:
https://cdn.kernel.org/pub/linux/kernel/v7.x/linux-7.1.3.tar.xz
다운로드:
wget https://cdn.kernel.org/pub/linux/kernel/v7.x/linux-7.1.3.tar.xz
업로드 위치(오프라인인 경우):
/root/linux-7.1.3.tar.xz
dnf groupinstall "Development Tools" -y
dnf install -y \
ncurses-devel \
elfutils-libelf-devel \
openssl-devel \
bc \
bison \
flex \
perl \
dwarves \
tar \
xz
컴파일러 확인:
gcc --version
mkdir -p /usr/src
cd /usr/src
tar -xf /root/linux-7.1.3.tar.xz
cd linux-7.1.3
ls Makefile # 표시되어야 함: Makefile
# 현재 커널 구성 복사
cp /boot/config-$(uname -r) .config
# 새 구성 생성
make olddefconfig
# KVM 구성 확인
grep -E "CONFIG_KVM|CONFIG_KVM_INTEL" .config
예상 출력:
CONFIG_KVM=m
CONFIG_KVM_X86=m
CONFIG_KVM_INTEL=m
# CPU 스레드 확인
nproc
# 컴파일(사용 가능한 모든 코어 사용)
make -j$(nproc)
# 커널 이미지 확인
ls -lh arch/x86/boot/bzImage
참고: 컴파일 시간은 CPU 및 스토리지 성능에 따라 달라집니다.
# 모듈 설치
make modules_install
# 설치 확인
ls /lib/modules/
# KVM 모듈 확인
find /lib/modules/7.1.3 -name "kvm*.ko*"
예상 출력:
kvm.ko
kvm-intel.ko
kvm-amd.ko
# 커널 설치
make install
# 설치 확인
ls -lh /boot | grep 7.1.3
예상 출력:
vmlinuz-7.1.3
initramfs-7.1.3.img
System.map-7.1.3
# GRUB 구성 생성
grub2-mkconfig -o /boot/grub2/grub.cfg
# 기본 커널 설정
grubby --set-default /boot/vmlinuz-7.1.3
# 기본 커널 확인
grubby --default-kernel
예상 출력:
/boot/vmlinuz-7.1.3
reboot
커널 버전 확인:
uname -r
# 예상: 7.1.3
KVM 모듈 확인:
lsmod | grep kvm
# 예상: kvm_intel, kvm, irqbypass
KVM 모듈 위치 확인:
modinfo kvm_intel | grep filename
# 예상: /lib/modules/7.1.3/kernel/arch/x86/kvm/kvm-intel.ko
중요: 이전 커널은 즉시 제거해서는 안 됩니다.
사용 가능한 커널 나열:
grubby --info=ALL | grep kernel
새 커널에 문제가 있으면 이전 커널로 설정합니다:
grubby --set-default /boot/vmlinuz-6.18.8-1.el8.elrepo.x86_64
reboot
| 항목 | 이전 | 이후 |
|---|---|---|
| 커널 버전 | 6.18.8-1.el8.elrepo.x86_64 | 7.1.3 |
| KVM 상태 | N/A | 활성화됨 |
| CVE-2026-53359 | 취약 | 수정됨 |
| 가상화 |
| KVM Intel |
| Use After Free (UAF) |
| 수정 방법 | Linux Kernel을 7.1.3으로 업그레이드(ELRepo RPM 또는 소스 코드 빌드) |
| 값 |
|---|
| OS | CentOS Stream 8 |
| 이전 커널 | 6.18.8-1.el8.elrepo.x86_64 |
| 새 커널 | 7.1.3 |
| 아키텍처 | x86_64 |
| 가상화 | KVM Intel |
| 컴파일러 | GCC 8.5 |