리눅스 커널 취약점 CVE-2026-98432: 임시 차단과 커널 패치 적용

공정위 광고 문구 Ver 3.1
공정위 광고 문구 Ver 3.2(모바일 전용)
테스트 환경RHEL 계열AlmaLinux 9.8라이트세일커널 5.14.0-687.55.1.el9_8 → 5.14.0-687.64.1.el9_82026-11-03 확인
버전 문자열과 SSH 포트 번호는 예시 값이며, 고친 커널 5.14.0-687.64.1.el9_8만 AlmaLinux 공지 값

CVE-2026-98432는 IPv4 TCP 연결을 받는 커널 코드에서 해제된 메모리를 다시 읽는 리눅스 커널 취약점으로, 리눅스 커널 CVE 팀이 Critical 등급으로 평가했습니다. 원격에서 인증 없이 공격할 수 있는 결함이라 Nginx와 Apache 구성의 AlmaLinux 9.8 라이트세일 서버에서 고친 커널 패키지로 업데이트하고 재부팅한 뒤, 실행 중인 커널 버전으로 패치를 확인하게 되었습니다.

1️⃣ 리눅스 커널 취약점 CVE-2026-98432: 결함 원리와 영향 범위

TCP 연결 요청(SYN)에 IPv4 옵션이 붙어 들어오면, 커널은 응답(SYN-ACK)에 그 옵션을 되돌려 보내기 위해 사본을 대기 중인 연결과 함께 보관합니다. 연결이 맺어지면 이 사본은 복제 없이 새 연결의 소켓으로 그대로 넘어갑니다.

그 사이 클라이언트가 SYN을 다시 보내면 다른 CPU가 같은 옵션으로 SYN-ACK를 만드는 중일 수 있습니다. 이때 새 연결이 닫히면서 커널이 옵션 메모리를 곧바로 해제하면, SYN-ACK를 만들던 코드가 이미 해제된 메모리를 읽는 use-after-free가 생깁니다.

이 코드는 애플리케이션이 연결을 보기 전, 커널이 연결 요청을 처리하는 단계에서 실행됩니다. 그래서 어떤 서비스가 열어 둔 포트든 IPv4 TCP로 듣고 있으면 원격에서 자격 증명 없이 공격이 닿고, 점수는 CVSS 3.1 기준 9.8입니다.

결함은 Linux 4.4부터 있어 대부분의 리눅스 서버가 해당합니다. AWS 안내는 라이트세일 블루프린트 가운데 AlmaLinux 9, CentOS Stream 9, Debian, openSUSE Leap, Ubuntu와 Amazon Linux 2, Amazon Linux 2023을 꼽았습니다. AlmaLinux 공지는 8, 9, 10 모두를 대상으로 밝혔고, 라이트세일의 워드프레스와 LAMP 같은 애플리케이션 블루프린트도 Debian이나 Ubuntu 위에서 실행되어 같은 대상입니다.

리눅스 커널을 사용하지 않는 FreeBSD와 Windows Server는 대상에서 빠집니다.

MPTCP(Multipath TCP)를 끈 서버도 패치 대상입니다. 공개된 공격은 MPTCP 리스너가 열린 서버를 노렸지만, 결함 자체는 일반 IPv4 TCP 코드에 있어 AlmaLinux 공지도 MPTCP가 없는 시스템 역시 고쳐야 한다고 밝혔습니다.

고친 커널은 옵션 메모리를 RCU 유예 시간(grace period)이 지난 뒤에 해제해, 다른 CPU가 SYN-ACK를 만들며 옵션을 읽는 동안에는 메모리를 남겨 둡니다.

🧩 CVE-2026-98432 use-after-free 흐름
설명 다이어그램
🔍 단계
🌐 클라이언트
📨SYN + IPv4 옵션
🔁SYN 다시 보냄
➜
🐧 커널
🧾IPv4 옵션 사본대기 중인 연결과 함께 보관복제 없이 새 연결의 소켓으로 넘어감새 연결이 닫히며 곧바로 해제RCU 유예 시간이 지난 뒤 해제
⚙️CPU 1새 연결을 맡음새 연결을 닫으며 옵션 해제새 연결을 닫고 해제는 미룸
⚙️CPU 2같은 옵션으로 SYN-ACK 만드는 중해제된 메모리를 읽음읽기를 마친 뒤 해제됨
SYN에 붙은 IPv4 옵션 사본을 대기 중인 연결에 보관합니다.
사본이 새 소켓으로 넘어간 사이, CPU 2가 같은 옵션으로 SYN-ACK를 만듭니다.
CPU 1이 연결을 닫으며 옵션을 해제하고, CPU 2는 해제된 메모리를 읽습니다.
해제를 RCU 유예 시간 뒤로 미뤄, CPU 2가 다 읽은 뒤에 해제합니다.

2️⃣ 리눅스 커널 버전 확인: 고친 커널인지 보기

패치가 필요한지는 실행 중인 커널 버전으로 정해지므로, 업데이트 전에 배포판과 커널 버전부터 확인했습니다.

cat /etc/os-release
NAME="AlmaLinux"
VERSION="9.8 (Olive Jaguar)"
ID="almalinux"
ID_LIKE="rhel centos fedora"
VERSION_ID="9.8"
PLATFORM_ID="platform:el9"
PRETTY_NAME="AlmaLinux 9.8 (Olive Jaguar)"
ANSI_COLOR="0;34"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:almalinux:almalinux:9::baseos"
HOME_URL="https://almalinux.org/"
DOCUMENTATION_URL="https://wiki.almalinux.org/"
BUG_REPORT_URL="https://bugs.almalinux.org/"

ALMALINUX_MANTISBT_PROJECT="AlmaLinux-9"
ALMALINUX_MANTISBT_PROJECT_VERSION="9.8"
REDHAT_SUPPORT_PRODUCT="AlmaLinux"
REDHAT_SUPPORT_PRODUCT_VERSION="9.8"
SUPPORT_END=2032-06-01
uname -r
5.14.0-687.55.1.el9_8.x86_64
nft --version
-bash: nft: 명령어를 찾을 수 없음

배포판은 AlmaLinux 9.8, 실행 중인 커널은 5.14.0-687.55.1.el9_8이었습니다. 임시 차단 규칙에 쓰는 nft 명령도 없어, nftables 패키지가 설치되어 있지 않은 상태였습니다.

rpm -q kernel
kernel-5.14.0-611.30.1.el9_7.x86_64
kernel-5.14.0-687.49.1.el9_8.x86_64
kernel-5.14.0-687.55.1.el9_8.x86_64

[rpm -q kernel]은 설치된 커널 목록을 출력하며, 재부팅 전까지 실제로 동작하는 것은 [uname -r]에 나온 하나입니다. 이 버전을 AlmaLinux 공지의 고친 버전과 비교합니다.

배포판고친 커널 버전(이 버전 이상)
AlmaLinux 8kernel-4.18.0-553.182.1.el8_10
AlmaLinux 9kernel-5.14.0-687.64.1.el9_8
AlmaLinux 10kernel-6.12.0-211.72.1.el10_2

5.14.0-687.55.1.el9_8은 AlmaLinux 9의 고친 버전 5.14.0-687.64.1.el9_8보다 낮아 업데이트 대상이었습니다.

공격이 닿는 길이 열려 있는지 보려고, 듣고 있는 IPv4 TCP 포트와 MPTCP 상태를 확인했습니다.

ss -lnt4
State  Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0      128          0.0.0.0:22        0.0.0.0:*
LISTEN 0      511          0.0.0.0:443       0.0.0.0:*
LISTEN 0      511          0.0.0.0:80        0.0.0.0:*
sysctl net.mptcp.enabled
net.mptcp.enabled = 0
ss -lnM
State Recv-Q Send-Q Local Address:Port Peer Address:Port

모든 주소(0.0.0.0)에서 듣는 IPv4 TCP 포트는 웹 서버의 80, 443과 SSH 22였습니다.

[net.mptcp.enabled]가 0이고 MPTCP 소켓도 없어, 공개된 공격이 사용한 MPTCP 경로는 닫혀 있었습니다. 결함은 일반 IPv4 TCP 연결에서 시작되므로, IPv4 포트 세 개를 듣는 서버는 그대로 패치 대상입니다.

3️⃣ 리눅스 커널 업데이트: 커널 패키지 일곱과 재부팅

커널을 바꾸기 전에 라이트세일 콘솔에서 인스턴스의 수동 스냅샷을 만들었습니다. 라이트세일에는 부팅할 커널을 고르는 화면이 없어, 새 커널로 서버가 올라오지 않으면 이 스냅샷으로 새 인스턴스를 만들어 되돌리게 됩니다.

🔲 라이트세일 스냅샷 시뮬레이터

📍 Lightsail › 인스턴스 › AlmaLinux-9-1 › 스냅샷
AmazonLightsail문서 검색홈example (000000000000)▼
보안 업데이트를 권장합니다.

Linux 기반 블루프린트를 사용하는 인스턴스에 취약점(CVE-2026-98432)이 발생할 수 있습니다. 인스턴스가 영향을 받는지 확인하고 사용 중인 Linux 배포판에 최신 보안 업데이트를 적용하는 것이 좋습니다.

자세히 알아보기
AlmaLinux-9-1 정보
삭제재부팅중지
2 GB RAM, 2 vCPU, 60 GB SSD 플랜 변경
알마리눅스
AWS 리전
버지니아, 영역 A
(us-east-1a)
인스턴스 유형
범용
네트워킹 유형
듀얼 스택
네트워킹 유형 변경
고정 IP 주소
203.0.113.10
프라이빗 IPv4 주소
192.0.2.10
퍼블릭 IPv6 주소
2001:db8:1234:5678::a1b2
인스턴스 상태
실행 중
시스템 상태 확인
통과됨
인스턴스 상태 확인
통과됨
연결지표스냅샷스토리지네트워킹도메인고급도움말 및 지원
수동 스냅샷

스냅샷을 생성하여 인스턴스, 해당 시스템 디스크 및 연결된 디스크를 백업할 수 있습니다.

스냅샷을 생성 중…“”
2026년 11월 3일, 20:01 (UTC+0:00)“AlmaLinux-9-1-1762200000”
1 스냅샷 중 1 표시
자동 스냅샷
자동 스냅샷이 활성화됨

일일 스냅샷 시간은 오전 5:00 GMT+0입니다.Amazon은 가장 최근의 스냅샷 7개를 저장합니다.

🔲 리눅스 커널 업데이트와 재부팅 확인

저장소에 올라온 고친 커널 버전은 dnf 목록으로 확인했습니다.

dnf --showduplicates list available kernel kernel-core kernel-modules kernel-modules-core kernel-tools kernel-tools-libs kernel-headers
kernel.x86_64                 5.14.0-687.64.1.el9_8   baseos
kernel-core.x86_64            5.14.0-687.64.1.el9_8   baseos
kernel-modules.x86_64         5.14.0-687.64.1.el9_8   baseos
kernel-modules-core.x86_64    5.14.0-687.64.1.el9_8   baseos
kernel-tools.x86_64           5.14.0-687.64.1.el9_8   baseos
kernel-tools-libs.x86_64      5.14.0-687.64.1.el9_8   baseos
kernel-headers.x86_64         5.14.0-687.64.1.el9_8   appstream
dnf download kernel-core-5.14.0-687.64.1.el9_8

kernel-core 패키지 파일만 현재 폴더에 내려받고, 설치는 하지 않습니다.

rpm -Kv kernel-core-5.14.0-687.64.1.el9_8.x86_64.rpm
    V4 RSA/SHA256 Signature, key ID b86b3716: OK
rpm -qp --changelog kernel-core-5.14.0-687.64.1.el9_8.x86_64.rpm | grep CVE-2026-98432
- ipv4: free inet_opt and ireq_opt after an RCU grace period (CKI Backport Bot) [RHEL-295635] {CVE-2026-98432}

서명은 OK였고, 변경 기록에 CVE-2026-98432를 고친 줄이 있었습니다. 11월 3일 확인한 dnf 보안 공지(updateinfo)에는 이 CVE가 아직 없어, [dnf upgrade --security]로는 이 커널을 받을 수 없는 상태였습니다.

그래서 커널 패키지 일곱 개를 버전까지 지정해 설치했습니다.

dnf install -y kernel-5.14.0-687.64.1.el9_8 kernel-core-5.14.0-687.64.1.el9_8 kernel-modules-5.14.0-687.64.1.el9_8 kernel-modules-core-5.14.0-687.64.1.el9_8 kernel-tools-5.14.0-687.64.1.el9_8 kernel-tools-libs-5.14.0-687.64.1.el9_8 kernel-headers-5.14.0-687.64.1.el9_8
================================================================================
 꾸러미                 구조      버전                       저장소        크기
================================================================================
설치 중:
 kernel                 x86_64    5.14.0-687.64.1.el9_8      baseos       1.1 M
 kernel-core            x86_64    5.14.0-687.64.1.el9_8      baseos        17 M
 kernel-modules         x86_64    5.14.0-687.64.1.el9_8      baseos        40 M
 kernel-modules-core    x86_64    5.14.0-687.64.1.el9_8      baseos        31 M
향상 중:
 kernel-headers         x86_64    5.14.0-687.64.1.el9_8      appstream    2.6 M
 kernel-tools           x86_64    5.14.0-687.64.1.el9_8      baseos       1.3 M
 kernel-tools-libs      x86_64    5.14.0-687.64.1.el9_8      baseos       1.1 M
삭제 중:
 kernel                 x86_64    5.14.0-611.30.1.el9_7      @baseos        0
 kernel-core            x86_64    5.14.0-611.30.1.el9_7      @baseos       64 M
 kernel-modules         x86_64    5.14.0-611.30.1.el9_7      @baseos       33 M
 kernel-modules-core    x86_64    5.14.0-611.30.1.el9_7      @baseos       27 M

연결 요약
================================================================================
설치  4 꾸러미
향상  3 꾸러미
삭제  4 꾸러미

전체 내려받기 크기: 94 M

완료되었습니다!

새 커널 패키지 네 개가 설치되고 kernel-headers, kernel-tools, kernel-tools-libs 세 패키지가 올라갔으며, 다른 패키지는 바뀌지 않았습니다. 설치된 커널을 세 개까지 남기는 [installonly_limit=3] 설정 때문에 가장 오래된 5.14.0-611.30.1.el9_7 패키지 넷이 삭제되었고, 내려받기부터 완료까지 74초가 걸렸습니다.

AlmaLinux 공지가 안내하는 공식 기준 명령은 저장소 정보를 새로 받은 뒤 업데이트가 있는 패키지를 모두 올립니다.

sudo dnf clean metadata && sudo dnf upgrade

커널 말고 다른 패키지까지 함께 올라가므로, 배포판 버전 전체를 올리는 순서는 Alma Linux 업데이트: 9.4 → 9.8 in LightSail에서 확인할 수 있습니다.

새 커널은 재부팅해야 적용됩니다.

systemctl reboot

서버가 다시 켜진 뒤 실행 중인 커널과 설치된 커널, 기본 커널을 차례로 확인했습니다.

uname -r
5.14.0-687.64.1.el9_8.x86_64
rpm -q kernel
kernel-5.14.0-687.49.1.el9_8.x86_64
kernel-5.14.0-687.55.1.el9_8.x86_64
kernel-5.14.0-687.64.1.el9_8.x86_64
grubby --default-kernel
/boot/vmlinuz-5.14.0-687.64.1.el9_8.x86_64

서버는 재부팅 명령 뒤 1분이 안 되어 다시 켜졌고, 실행 중인 커널과 다음 부팅에 쓸 기본 커널이 모두 5.14.0-687.64.1.el9_8로 바뀌었습니다. 이전 커널 5.14.0-687.55.1.el9_8은 남아 있어, 새 커널에 문제가 생기면 기본 커널을 되돌릴 수 있습니다.

항목패치 전패치 뒤
실행 중인 커널(uname -r)5.14.0-687.55.1.el9_85.14.0-687.64.1.el9_8
기본 커널(grubby)5.14.0-687.55.1.el9_85.14.0-687.64.1.el9_8
설치된 커널(rpm -q kernel)5.14.0-611.30.1.el9_7, 5.14.0-687.49.1.el9_8, 5.14.0-687.55.1.el9_85.14.0-687.49.1.el9_8, 5.14.0-687.55.1.el9_8, 5.14.0-687.64.1.el9_8

4️⃣ 재부팅 전 임시 차단: nft 규칙과 한계

재부팅을 바로 할 수 없을 때는 고친 커널을 올리기 전까지 임시 규칙으로 결함이 시작되는 패킷을 차단할 수 있습니다. 이 장의 명령은 직접 실행하지 않은 공식 기준(AlmaLinux와 AWS 공지)입니다.

Nginx와 Apache 구성의 AlmaLinux 9.8 라이트세일 서버는 재부팅이 몇 분이면 끝나므로, 임시 차단 없이 바로 커널을 업데이트했습니다.

결함은 IPv4 옵션이 붙은 TCP 연결 요청으로만 시작됩니다. 일반 트래픽은 IPv4 옵션을 거의 사용하지 않아, 옵션이 붙은 IPv4 TCP 패킷만 차단해도 평소 연결은 그대로 유지됩니다.

sudo dnf install -y nftables

nft 명령은 firewalld와 함께 설치되는 nftables 패키지에 들어 있습니다. 명령이 없는 서버라면 먼저 설치합니다.

sudo nft -f - <<'EOF'
add table ip cve_2026_98432
delete table ip cve_2026_98432
table ip cve_2026_98432 {
    chain prerouting {
        type filter hook prerouting priority -300; policy accept;
        meta l4proto tcp ip hdrlength > 5 counter drop
    }
}
EOF

IPv4 헤더 길이가 5를 넘는 TCP 패킷, 즉 IPv4 옵션이 붙은 패킷을 prerouting 단계에서 차단하는 테이블을 만듭니다. AlmaLinux가 8, 9, 10에서 시험한 규칙이며, firewalld와 함께 사용할 수 있고 여러 번 실행해도 안전합니다.

sudo nft list table ip cve_2026_98432

규칙이 들어갔는지 확인하며, 출력의 counter 값이 지금까지 차단한 패킷 수입니다.

sudo nft delete table ip cve_2026_98432

고친 커널로 재부팅한 뒤에는 이 명령으로 테이블을 지웁니다.

이 규칙은 재부팅하면 사라지므로, 고친 커널을 넣기 전에 재부팅했다면 테이블을 만드는 명령을 다시 실행합니다.

IPv4 옵션에 기대는 애플리케이션이 있는 서버에는 이 규칙이 맞지 않습니다. IPv4 옵션에 실리는 CIPSO 보안 레이블(NetLabel)을 사용하는 네트워크가 그 예이며, 기본 설정에서는 사용하지 않습니다.

규칙은 호스트와, 호스트를 거쳐 트래픽을 받는 컨테이너(Podman과 Docker의 기본 방식)를 보호합니다. 같은 호스트의 컨테이너끼리 주고받는 트래픽은 이 규칙을 비켜 갈 수 있습니다.

Debian, Ubuntu, openSUSE에서는 AWS 안내의 iptables 규칙 한 줄을 사용합니다. AlmaLinux 9와 CentOS Stream 9 커널에는 이 규칙이 사용하는 u32 매치가 없어 위 nft 규칙으로 진행합니다.

sudo iptables -I INPUT 1 -p tcp -m u32 --u32 '0>>24&0x0f=6:15' -j DROP

u32 식은 IPv4 헤더 길이 칸을 읽으며, 값이 5보다 크면 IPv4 옵션이 붙은 패킷입니다. 고친 커널을 넣은 뒤에는 아래 명령으로 이 규칙을 지웁니다.

sudo iptables -D INPUT -p tcp -m u32 --u32 '0>>24&0x0f=6:15' -j DROP

라이트세일 방화벽에서 사용하지 않는 포트를 닫고 남은 포트를 믿을 수 있는 IP 주소로만 좁히는 것도 AWS 안내가 함께 권하는 방법입니다.

🔢 FAQ & 추천 콘텐츠

AlmaLinux와 AWS 공지 모두 IPv6 연결은 이 결함의 주된 문제에서 영향을 받지 않고 임시 규칙도 필요 없다고 밝힙니다. 다만 IPv6만 쓰는 줄 알았던 서버도 SSH나 웹 서버가 IPv4 TCP 포트를 하나라도 듣고 있으면 그 포트로 공격이 닿으므로, [ss -lnt4]로 확인하고 커널 패치는 그대로 진행합니다.

AlmaLinux 공지는 TCP 요청 소켓 이전(net.ipv4.tcp_migrate_req 설정이나 요청을 옮기는 BPF 프로그램)을 켠 경우에도 비슷한 문제가 있다고 밝힙니다. 이 설정은 기본으로 꺼져 있으며, 켜 두었다면 고친 커널로 업데이트한 뒤 AlmaLinux 공지의 갱신 내용을 확인합니다.

AWS 안내는 Debian 11과 openSUSE Leap 15가 지원이 끝나 커널 업데이트를 받지 못할 수 있다고 밝힙니다. AWS는 이런 서버에 임시 방화벽 규칙을 먼저 적용하고, 지원되는 버전의 인스턴스로 옮길 계획을 세우라고 권합니다.

ℹ️ 제휴 안내
본 사이트의 콘텐츠에는 제휴 링크가 포함되어 있습니다. 방문자가 이 링크를 통해 상품 또는 서비스를 구매하면 본 사이트는 판매처로부터 수수료를 지급받습니다. 이 과정에서 구매자가 지불하는 금액(이벤트 할인 시 금액이 내려갑니다↓)은 오르지 않습니다. 게시된 가격·할인·재고 정보는 작성 시점 기준이며 실제와 다를 수 있으므로, 구매 전 판매처에서 최종 확인하시기 바랍니다. 상품 선정과 평가는 자체 기준에 따라 작성되며, 수수료 지급 여부가 소개 순서나 평가 내용에 영향을 주지 않습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

인간임을 증명하세요: 2   +   8   =