ช่องโหว่เคอร์เนล Linux CVE-2026-98432: การบล็อกชั่วคราวและการติดตั้งแพตช์เคอร์เนล
CVE-2026-98432 คือช่องโหว่เคอร์เนล Linux ที่โค้ดเคอร์เนลซึ่งรับการเชื่อมต่อ TCP แบบ IPv4 อ่านหน่วยความจำที่ถูกคืนไปแล้วซ้ำอีกครั้ง และทีม CVE ของเคอร์เนล Linux ประเมินไว้ที่ระดับ Critical เนื่องจากเป็นข้อบกพร่องที่โจมตีจากระยะไกลได้โดยไม่ต้องยืนยันตัวตน เราจึงอัปเดตเซิร์ฟเวอร์ Lightsail ที่ใช้ AlmaLinux 9.8 กับ Nginx และ Apache เป็นแพ็กเกจเคอร์เนลที่แก้ไขแล้ว รีบูต แล้วยืนยันแพตช์จากเวอร์ชันเคอร์เนลที่กำลังทำงาน
1️⃣ ช่องโหว่เคอร์เนล Linux CVE-2026-98432: หลักการของข้อบกพร่องและขอบเขตผลกระทบ
เมื่อคำขอเชื่อมต่อ TCP (SYN) เข้ามาพร้อมตัวเลือก IPv4 เคอร์เนลจะเก็บสำเนาของตัวเลือกนั้นไว้กับการเชื่อมต่อที่รออยู่ เพื่อส่งตัวเลือกกลับไปในคำตอบ (SYN-ACK) เมื่อการเชื่อมต่อเกิดขึ้นแล้ว สำเนานี้จะถูกส่งต่อไปยังซ็อกเก็ตของการเชื่อมต่อใหม่โดยตรงโดยไม่มีการทำสำเนาเพิ่ม
หากระหว่างนั้นไคลเอนต์ส่ง SYN ซ้ำ CPU อีกตัวอาจกำลังสร้าง SYN-ACK ด้วยตัวเลือกเดียวกันอยู่ หากตอนนั้นการเชื่อมต่อใหม่ถูกปิดและเคอร์เนลคืนหน่วยความจำของตัวเลือกทันที โค้ดที่กำลังสร้าง SYN-ACK จะอ่านหน่วยความจำที่ถูกคืนไปแล้ว ซึ่งก็คือ use-after-free
โค้ดนี้ทำงานในขั้นตอนที่เคอร์เนลจัดการคำขอเชื่อมต่อ ก่อนที่แอปพลิเคชันจะเห็นการเชื่อมต่อ ดังนั้นไม่ว่าบริการใดจะเปิดพอร์ตไว้ หากพอร์ตนั้นรอรับผ่าน TCP แบบ IPv4 การโจมตีก็เข้าถึงได้จากระยะไกลโดยไม่ต้องมีข้อมูลรับรอง และคะแนนอยู่ที่ 9.8 ตาม CVSS 3.1
ข้อบกพร่องนี้มีมาตั้งแต่ Linux 4.4 เซิร์ฟเวอร์ Linux ส่วนใหญ่จึงได้รับผลกระทบ คู่มือของ AWS ระบุบลูปรินต์ของ Lightsail ที่ได้รับผลกระทบ ได้แก่ AlmaLinux 9, CentOS Stream 9, Debian, openSUSE Leap, Ubuntu และ Amazon Linux 2, Amazon Linux 2023 ประกาศของ AlmaLinux ระบุว่าครอบคลุมทั้ง 8, 9 และ 10 ส่วนบลูปรินต์แอปพลิเคชันของ Lightsail อย่าง WordPress และ LAMP ก็ทำงานบน Debian หรือ Ubuntu จึงได้รับผลกระทบเช่นกัน
FreeBSD และ Windows Server ที่ไม่ได้ใช้เคอร์เนล Linux ไม่ได้รับผลกระทบ
เซิร์ฟเวอร์ที่ปิด MPTCP (Multipath TCP) ก็ยังต้องติดตั้งแพตช์ การโจมตีที่เผยแพร่ออกมาเล็งเซิร์ฟเวอร์ที่เปิดตัวรอรับ MPTCP ไว้ แต่ตัวข้อบกพร่องอยู่ในโค้ด TCP แบบ IPv4 ปกติ ประกาศของ AlmaLinux จึงระบุว่าระบบที่ไม่มี MPTCP ก็ต้องแก้ไขเช่นกัน
เคอร์เนลที่แก้ไขแล้วจะคืนหน่วยความจำของตัวเลือกหลังผ่านช่วงผ่อนผันของ RCU (grace period) ไปแล้วเท่านั้น หน่วยความจำจึงยังอยู่ระหว่างที่ CPU อีกตัวอ่านตัวเลือกเพื่อสร้าง SYN-ACK
2️⃣ ตรวจสอบเวอร์ชันเคอร์เนล Linux: ดูว่าเป็นเคอร์เนลที่แก้ไขแล้วหรือไม่
การต้องติดตั้งแพตช์หรือไม่ขึ้นอยู่กับเวอร์ชันเคอร์เนลที่กำลังทำงาน ก่อนอัปเดตเราจึงตรวจสอบดิสทริบิวชันและเวอร์ชันเคอร์เนลก่อน
cat /etc/os-releaseNAME="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-01uname -r5.14.0-687.55.1.el9_8.x86_64nft --version-bash: nft: command not foundดิสทริบิวชันคือ AlmaLinux 9.8 และเคอร์เนลที่กำลังทำงานคือ 5.14.0-687.55.1.el9_8 ไม่มีคำสั่ง nft ที่ใช้กับกฎบล็อกชั่วคราวด้วย แสดงว่ายังไม่ได้ติดตั้งแพ็กเกจ nftables
rpm -q kernelkernel-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 8 | kernel-4.18.0-553.182.1.el8_10 |
| AlmaLinux 9 | kernel-5.14.0-687.64.1.el9_8 |
| AlmaLinux 10 | kernel-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 จึงต้องอัปเดต
เพื่อดูว่ามีช่องทางให้การโจมตีเข้าถึงได้หรือไม่ เราจึงตรวจสอบพอร์ต TCP แบบ IPv4 ที่รอรับอยู่และสถานะ MPTCP
ss -lnt4State 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.enablednet.mptcp.enabled = 0ss -lnMState Recv-Q Send-Q Local Address:Port Peer Address:Portพอร์ต TCP แบบ IPv4 ที่รอรับอยู่บนทุกที่อยู่ (0.0.0.0) คือพอร์ต 80 และ 443 ของเว็บเซิร์ฟเวอร์ และพอร์ต 22 ของ SSH
[net.mptcp.enabled] เป็น 0 และไม่มีซ็อกเก็ต MPTCP เส้นทาง MPTCP ที่การโจมตีที่เผยแพร่ใช้จึงปิดอยู่ แต่ข้อบกพร่องเริ่มจากการเชื่อมต่อ TCP แบบ IPv4 ปกติ เซิร์ฟเวอร์ที่รอรับการเชื่อมต่อบนพอร์ต IPv4 สามพอร์ตจึงยังต้องติดตั้งแพตช์
3️⃣ อัปเดตเคอร์เนล Linux: แพ็กเกจเคอร์เนลเจ็ดตัวและการรีบูต
ก่อนเปลี่ยนเคอร์เนล เราสร้างสแนปช็อตแบบแมนนวลของอินสแตนซ์ในคอนโซล Lightsail ไว้ Lightsail ไม่มีหน้าจอสำหรับเลือกเคอร์เนลที่จะบูต หากเซิร์ฟเวอร์ไม่ขึ้นด้วยเคอร์เนลใหม่ ก็ต้องกู้คืนโดยสร้างอินสแตนซ์ใหม่จากสแนปช็อตนี้
🔲 ซิมูเลเตอร์สแนปช็อต Lightsail
Linux 기반 블루프린트를 사용하는 인스턴스에 취약점(CVE-2026-98432)이 발생할 수 있습니다. 인스턴스가 영향을 받는지 확인하고 사용 중인 Linux 배포판에 최신 보안 업데이트를 적용하는 것이 좋습니다.
(us-east-1a)
스냅샷을 생성하여 인스턴스, 해당 시스템 디스크 및 연결된 디스크를 백업할 수 있습니다.
일일 스냅샷 시간은 오전 5:00 GMT+0입니다.Amazon은 가장 최근의 스냅샷 7개를 저장합니다.
🔲 ตรวจสอบการอัปเดตเคอร์เนล Linux และการรีบูต
เราตรวจสอบเวอร์ชันเคอร์เนลที่แก้ไขแล้วซึ่งมีในคลังแพ็กเกจด้วยรายการของ dnf
dnf --showduplicates list available kernel kernel-core kernel-modules kernel-modules-core kernel-tools kernel-tools-libs kernel-headerskernel.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 appstreamdnf 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: OKrpm -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 ประกาศความปลอดภัยของ dnf (updateinfo) ที่เราตรวจสอบเมื่อวันที่ 3 พฤศจิกายนยังไม่มี 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================================================================================
Package Architecture Version Repository Size
================================================================================
Installing:
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
Upgrading:
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
Removing:
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
Transaction Summary
================================================================================
Install 4 Packages
Upgrade 3 Packages
Remove 4 Packages
Total download size: 94 M
Complete!แพ็กเกจเคอร์เนลใหม่สี่ตัวถูกติดตั้ง แพ็กเกจ 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 บน LightSail.
เคอร์เนลใหม่จะมีผลหลังรีบูตเท่านั้น
systemctl rebootหลังเซิร์ฟเวอร์กลับมาทำงาน เราตรวจสอบเคอร์เนลที่กำลังทำงาน เคอร์เนลที่ติดตั้งไว้ และเคอร์เนลเริ่มต้นตามลำดับ
uname -r5.14.0-687.64.1.el9_8.x86_64rpm -q kernelkernel-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_64grubby --default-kernel/boot/vmlinuz-5.14.0-687.64.1.el9_8.x86_64เซิร์ฟเวอร์กลับมาทำงานภายในไม่ถึงหนึ่งนาทีหลังคำสั่งรีบูต และทั้งเคอร์เนลที่กำลังทำงานกับเคอร์เนลเริ่มต้นสำหรับการบูตครั้งถัดไปเปลี่ยนเป็น 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_8 | 5.14.0-687.64.1.el9_8 |
| เคอร์เนลเริ่มต้น (grubby) | 5.14.0-687.55.1.el9_8 | 5.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_8 | 5.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)
เซิร์ฟเวอร์ Lightsail ที่ใช้ AlmaLinux 9.8 กับ Nginx และ Apache รีบูตเสร็จในไม่กี่นาที เราจึงอัปเดตเคอร์เนลทันทีโดยไม่บล็อกชั่วคราว
ข้อบกพร่องนี้เริ่มได้จากคำขอเชื่อมต่อ TCP ที่มีตัวเลือก IPv4 เท่านั้น ทราฟฟิกทั่วไปแทบไม่ใช้ตัวเลือก IPv4 การบล็อกเฉพาะแพ็กเก็ต TCP แบบ IPv4 ที่มีตัวเลือกจึงไม่กระทบการเชื่อมต่อตามปกติ
sudo dnf install -y nftablesคำสั่ง nft อยู่ในแพ็กเกจ nftables ที่ติดตั้งมาพร้อมกับ firewalld หากเซิร์ฟเวอร์ของคุณไม่มีคำสั่งนี้ ให้ติดตั้งก่อน
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สร้างตารางที่บล็อกแพ็กเก็ต TCP ที่มีความยาวส่วนหัว IPv4 เกิน 5 หรือก็คือแพ็กเก็ตที่มีตัวเลือก 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 ตัวอย่างคือเครือข่ายที่ใช้ป้ายกำกับความปลอดภัย CIPSO (NetLabel) ซึ่งส่งมาในตัวเลือก IPv4 และไม่ได้ใช้ในการตั้งค่าเริ่มต้น
กฎนี้ปกป้องโฮสต์และคอนเทนเนอร์ที่รับทราฟฟิกผ่านโฮสต์ (วิธีเริ่มต้นของ Podman และ Docker) ทราฟฟิกที่ส่งถึงกันระหว่างคอนเทนเนอร์บนโฮสต์เดียวกันอาจเลี่ยงกฎนี้ได้
บน Debian, Ubuntu และ openSUSE ให้ใช้กฎ iptables หนึ่งบรรทัดจากคู่มือของ AWS เคอร์เนลของ AlmaLinux 9 และ CentOS Stream 9 ไม่มี u32 match ที่กฎนี้ใช้ จึงใช้กฎ 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การปิดพอร์ตที่ไม่ได้ใช้ในไฟร์วอลล์ของ Lightsail และจำกัดพอร์ตที่เหลือให้เฉพาะที่อยู่ IP ที่เชื่อถือได้ ก็เป็นอีกวิธีที่ คู่มือของ AWSแนะนำไว้ด้วย
🔢 FAQ & เนื้อหาแนะนำ
เวอร์ชันเคอร์เนล
คำสั่งตรวจสอบเวอร์ชันเคอร์เนล Linux และวิธีตรวจสอบเวอร์ชันดิสทริบิวชัน
บน Linux คุณตรวจสอบเวอร์ชันเคอร์เนลได้ด้วยคำสั่ง uname
ℹ️ ประกาศเรื่องลิงก์แอฟฟิลิเอต
เนื้อหาของเว็บไซต์นี้มีลิงก์แอฟฟิลิเอต หากผู้เข้าชมซื้อสินค้าหรือบริการผ่านลิงก์เหล่านี้ เว็บไซต์นี้จะได้รับค่าคอมมิชชันจากผู้ขาย ในกระบวนการนี้ ราคาที่ผู้ซื้อจ่าย(ราคาจะลดลงเมื่อมีโปรโมชัน↓)จะไม่สูงขึ้นแต่อย่างใด ราคา ส่วนลด และข้อมูลสต็อกที่แสดงเป็นข้อมูล ณ เวลาที่เขียนและอาจต่างจากความเป็นจริง โปรดตรวจสอบกับผู้ขายอีกครั้งก่อนซื้อ การเลือกและการประเมินสินค้าเขียนตามเกณฑ์ของเราเอง และการได้รับค่าคอมมิชชันหรือไม่ไม่มีผลต่อลำดับการแนะนำหรือเนื้อหาการประเมิน