Kernel Live Patching là một giải pháp quan trọng giúp duy trì tính liên tục và độ sẵn sàng cao cho các máy chủ Linux, đặc biệt trong các môi trường sản xuất yêu cầu uptime gần như tuyệt đối. Trong bối cảnh các doanh nghiệp ngày càng phụ thuộc vào hệ thống CNTT, việc cập nhật bảo mật và vá lỗi cho kernel mà không cần khởi động lại hệ thống trở thành một nhu cầu thiết yếu.
Kernel Live Patching cho phép cập nhật nhân Linux trong khi máy chủ vẫn đang hoạt động, giúp hạn chế tối đa thời gian gián đoạn dịch vụ và đảm bảo an toàn dữ liệu. Công nghệ này đặc biệt hữu ích cho các hệ thống ngân hàng, thương mại điện tử, dịch vụ tài chính và các nền tảng đám mây, nơi mỗi phút downtime đều có thể gây thiệt hại lớn.
Bài viết này sẽ giới thiệu tổng quan về Kernel Live Patching, lợi ích nổi bật, các giải pháp phổ biến như kpatch, kGraft, Oracle Ksplice và cách triển khai hiệu quả cho máy chủ Linux đòi hỏi độ sẵn sàng cao.

Kernel Live Patching là gì?
Kernel live patching là phương pháp áp dụng các bản vá nhỏ, tập trung trực tiếp lên bộ nhớ của kernel đang chạy mà không cần thay thế file kernel nhị phân. Các bản vá này được áp dụng ngay trong thời gian thực, nhằm sửa các lỗ hổng cụ thể ở những khu vực quan trọng của kernel.
Ví dụ, nếu phát hiện ra lỗ hổng trong phiên bản kernel bạn đang sử dụng, một phiên bản mới có bản vá sẽ được phát hành. Thông thường, bạn cần cập nhật máy chủ rồi khởi động lại để tải kernel mới. Tuy nhiên, nếu bạn trì hoãn việc khởi động lại, máy chủ sẽ vẫn bị tổn thương cho đến khi kernel mới được nạp.
Live patching giải quyết vấn đề này bằng cách trực tiếp vá lỗ hổng trên kernel đang chạy, tránh phải cập nhật và khởi động lại ngay lập tức.
Các bản vá này được thiết kế để đóng các lỗ hổng bảo mật nghiêm trọng, như các lỗi cho phép leo thang quyền hoặc thực thi mã từ xa. Tuy nhiên, live patching không bao gồm các bản sửa lỗi không quan trọng, tính năng mới hoặc cập nhật driver.
Nói đơn giản, live patching giống như việc sửa một lỗ hổng trên cửa bằng cách che nó lại mà không cần thay cửa mới. Cách này giữ cho máy chủ của bạn an toàn mà không gây gián đoạn do phải khởi động lại.
Cập nhật truyền thống
Trước hết, hãy nói về cách cập nhật truyền thống và cách bạn thường cập nhật máy chủ mà không sử dụng kernel live patching.
Khi triển khai máy chủ mới từ nhà cung cấp đám mây như GreenCloud, bước đầu tiên sau khi truy cập máy chủ là chạy cập nhật. Thường thì thực hiện lệnh sudo apt update trước, sau đó dùng sudo apt upgrade hoặc sudo apt dist-upgrade.
Dùng apt upgrade sẽ không cài đặt phiên bản kernel mới. Nó chỉ nâng cấp các gói hiện có mà không cài thêm gói mới hay gỡ bỏ gói không cần thiết. Điều này có nghĩa kernel hiện tại sẽ nhận các bản vá bảo mật và sửa lỗi nhưng bạn sẽ không có phiên bản kernel mới hơn.
Nếu có bản vá cho phiên bản kernel hiện tại, chạy apt upgrade sẽ xử lý được. Nhưng nếu cập nhật kernel cần cài thêm phiên bản mới hoặc các phụ thuộc bổ sung, apt upgrade sẽ không làm được.
Ngược lại, apt dist-upgrade có thể cài phiên bản kernel mới. Nó xử lý thông minh các thay đổi phụ thuộc gói bao gồm cả cài thêm hoặc gỡ bỏ nếu cần thiết.
Bây giờ, tôi sẽ chỉ cho bạn cách kiểm tra các cập nhật liên quan đến bảo mật bằng lệnh:
sudo apt -s dist-upgrade | grep "^Inst" | grep -i security
Lệnh này hiển thị danh sách các bản cập nhật bảo mật có sẵn.
Một số bản cập nhật như cập nhật kernel yêu cầu khởi động lại sau khi cài đặt. Một số khác liên quan đến các gói khác thì có hiệu lực ngay mà không cần khởi động lại.
Ví dụ, trên máy chủ Hetzner chạy Ubuntu 24.04, lệnh trên trả về các bản cập nhật bảo mật liên quan đến kernel như sau:
Inst linux-modules-6.8.0-49-generic (6.8.0-49.49 Ubuntu:24.04/noble-updates, Ubuntu:24.04/noble-security [amd64])
Inst linux-image-6.8.0-49-generic (6.8.0-49.49 Ubuntu:24.04/noble-updates, Ubuntu:24.04/noble-security [amd64])
Inst linux-image-virtual [6.8.0-45.45] (6.8.0-49.49 Ubuntu:24.04/noble-updates, Ubuntu:24.04/noble-security [amd64])
Inst linux-tools-common [6.8.0-45.45] (6.8.0-49.49 Ubuntu:24.04/noble-updates, Ubuntu:24.04/noble-security [all])
Tiếp theo, tôi kiểm tra phiên bản kernel hiện tại bằng lệnh uname -a:
Linux ubuntu-4gb-fsn1-2 6.8.0-45-generic #45-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug 30 12:02:04 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Điều này cho thấy tôi đang chạy kernel phiên bản 6.8.0-45, trong khi các bản cập nhật là cho phiên bản 6.8.0-49, một phiên bản mới hơn trong cùng dòng kernel (6.8.0). Đây là bản cập nhật tăng dần chứ không phải thay đổi lớn.
Vì phiên bản cũ (6.8.0-45) đã được cài đặt, cả sudo apt upgrade và sudo apt dist-upgrade đều có thể áp dụng cập nhật.
Lệnh sudo apt upgrade thường nâng cấp các gói đã cài, thay phiên bản cũ bằng phiên bản mới hơn. Trong trường hợp này, nó sẽ cập nhật gói kernel lên 6.8.0-49.
Tuy nhiên, vì đây là cập nhật liên quan đến kernel nên cần khởi động lại để thay đổi có hiệu lực.
Hiện tại, tôi sẽ cập nhật tất cả các gói có sẵn. Sau khi quá trình cập nhật kết thúc, tôi nhận được thông báo:
Pending kernel upgrade!
Running kernel version:
6.8.0-45-generic
Diagnostics:
The currently running kernel version is not the expected kernel version 6.8.0-49-generic.
Tôi cần khởi động lại máy chủ để kernel mới có hiệu lực nhưng sẽ chưa làm ngay vì muốn giới thiệu dịch vụ kernel live patching.
Dịch vụ Kernel Live Patching
Tôi sẽ dùng KernelCare Simple Patch của TuxCare, một dịch vụ live patching kernel với giá chỉ 2,95 USD mỗi tháng. Dịch vụ này cung cấp các bản vá bảo mật cho nhiều phiên bản Linux kernel phổ biến mà không cần khởi động lại máy chủ.
Khi phát hiện lỗ hổng mới trong Linux kernel, TuxCare tạo một bản vá live để sửa lỗi đó. Bản vá được thử nghiệm đầu tiên trong hệ thống server nội bộ của TuxCare rồi dần dần được kiểm thử qua nhiều bước để đảm bảo tính ổn định.
Khi bản vá sẵn sàng, các máy chủ sử dụng KernelCare sẽ nhận và áp dụng bản vá này ngay trên kernel đang chạy.
Bạn cũng có thể chọn dịch vụ khác như Ubuntu Livepatch Service, nhưng cá nhân tôi thích KernelCare hơn vì giá cả hợp lý và hoạt động ổn định. Dịch vụ Ubuntu Livepatch miễn phí cho cá nhân nhưng rất tốn kém khi dùng thương mại.
Bây giờ, truy cập máy chủ Ubuntu và chạy lệnh dưới đây với quyền root để cài KernelCare:
curl -s -L https://kernelcare.com/installer | bash
Sau đó đăng ký key (bạn nhận qua email sau khi mua hoặc xem trong bảng điều khiển khách hàng) bằng lệnh:
kcarectl --register [KEY]
KernelCare sẽ tự động kiểm tra bản vá mới mỗi 4 giờ. Hiện tại tôi sẽ kiểm tra và cập nhật thủ công bằng lệnh:
kcarectl --update
Tôi nhận được kết quả:
Downloading updates
Patch level 4 applied. Effective kernel version 6.8.0-47.47
Kernel is safe
Bạn thấy đó, một lỗ hổng đã được sửa trong kernel phiên bản 6.8.0-47.47.
Lưu ý rằng tôi chưa khởi động lại nên phiên bản kernel thực tế vẫn là 6.8.0-45 khi chạy uname -a. Mặc dù cập nhật lên 6.8.0-49, nhưng chưa khởi động lại nên kernel thực tế vẫn là cũ và chưa được vá lỗ hổng.
Bây giờ tôi chạy lệnh kcarectl --patch-info:
OS: ubuntu-noble
kernel: kernel-6.8.0-45.45
time: 2024-10-24 07:30:13
kpatch-name: ubuntu-noble/6.8.0-47.47/CVE-2024-45016-netem-fix-return-value-if-duplicate-enqueue-fails.patch
kpatch-description: netem: fix return value if duplicate enqueue fails
kpatch-kernel: 6.8.0-47.47
kpatch-cve: CVE-2024-45016
kpatch-cvss: 5.5
kpatch-cve-url: https://ubuntu.com/security/CVE-2024-45016
kpatch-patch-url: https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/commit/?id=5017a6a30cd43240c688ed996b81a5daff2a7dc9
uname: 6.8.0-47.47
KernelCare đã vá live cho lỗi CVE-2024-45016 trong kernel phiên bản 6.8.0-47.47 trên Ubuntu 22.04 mà không cần khởi động lại máy chủ.
Nếu tôi khởi động lại sau khi cập nhật tất cả gói thì kernel mới (6.8.0-49) được nạp và KernelCare sẽ không tìm thấy CVE nào vì kernel mới đã chứa bản vá đó.
Một số lưu ý
KernelCare giúp sửa lỗi trực tiếp mà không cần khởi động lại nhưng kernel nền tảng vẫn chưa được cập nhật thật sự trên đĩa cứng, mọi thứ chỉ là “ảo” thôi.
Nếu chạy uname -a, bạn vẫn thấy phiên bản kernel cũ trong khi chạy kcarectl --uname thì thấy phiên bản “kernel hiệu quả” đã vá lỗi (6.8.0-47.47).
Sau live patching, file kernel lưu trên đĩa (dùng khi khởi động) và kernel đang chạy không thay đổi, nên bạn chưa hoàn toàn được bảo vệ và cũng không nhận được các cải tiến khác như tính năng mới hoặc sửa lỗi không quan trọng.
Ngoài ra cũng có những cập nhật bảo mật không liên quan đến kernel nhưng vẫn cần khởi động lại để áp dụng đầy đủ, dù bạn không nhận được thông báo nhắc khởi động lại như khi cập nhật kernel.
Vì vậy tôi khuyên bạn nên thường xuyên cập nhật máy chủ để áp dụng cả các bản vá bảo mật không liên quan đến kernel và các bản cập nhật kernel mới nhằm đảm bảo file kernel trên đĩa cũng được nâng cấp và khi khởi động lại máy chủ sẽ chạy phiên bản mới.
Tôi sẽ khởi động lại máy chủ và kiểm tra lại kernel đang chạy cũng như trạng thái KernelCare.
Sau khi khởi động lại, tôi chạy lệnh uname -a:
Linux ubuntu-4gb-nbg1-6 6.8.0-49-generic #49-Ubuntu SMP PREEMPT_DYNAMIC Mon Nov 4 02:06:24 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Bạn thấy máy chủ đang chạy kernel mới rồi.
Nếu chạy lại kcarectl --update, tôi nhận được:
Updates already downloaded
No updates are needed for this kernel
Kernel is safe
Điều này có nghĩa không còn cần live patch nào vì chúng ta đã chạy kernel mới và không còn lỗ hổng nào cần sửa nữa.
Việc khởi động lại định kỳ là việc làm thông minh và quan trọng.
Kết luận
Kernel live patching là giải pháp tối ưu giúp vá các lỗ hổng bảo mật trên Linux kernel mà không cần khởi động lại máy chủ, giúp duy trì hoạt động liên tục và giảm thiểu thời gian gián đoạn dịch vụ.
Dịch vụ như KernelCare cung cấp bản vá trực tiếp cho kernel đang chạy, bảo vệ hệ thống khỏi các lỗ hổng nghiêm trọng như leo thang quyền hoặc thực thi mã từ xa. Tuy nhiên, live patching chỉ xử lý các bản vá quan trọng, không thay thế hoàn toàn việc cập nhật kernel truyền thống.
Để đảm bảo an toàn toàn diện, người dùng nên kết hợp sử dụng live patching với việc cập nhật định kỳ và khởi động lại máy chủ để áp dụng các bản vá đầy đủ và nâng cấp kernel mới nhất. Việc này giúp bảo vệ hệ thống khỏi các nguy cơ bảo mật đồng thời tận dụng thêm các tính năng, cải tiến mới của kernel.
Sử dụng kernel live patching đặc biệt hữu ích với các máy chủ sản xuất cần duy trì hoạt động 24/7, giúp giảm thiểu rủi ro an ninh và tăng hiệu suất vận hành tổng thể. Đầu tư vào các dịch vụ live patching uy tín như KernelCare sẽ là lựa chọn thông minh cho doanh nghiệp muốn nâng cao bảo mật và độ ổn định hệ thống Linux.









