Lỗ hổng thực thi mã cực nguy hiểm trong UEFI ảnh hưởng hầu hết máy chủ toàn cầu
Lỗi tràn bộ nhớ nghiêm trọng mang mã CVE-2026-97631 vừa được phát hiện trong nền tảng nguồn mở EDK2, cho phép kẻ xấu chạy mã độc trước cả khi hệ điều hành và tính năng Secure Boot khởi động. Điểm yếu này nằm ở bộ xử lý ICMP của trình điều khiển PXE-Base Code, ảnh hưởng đến đa số nhà sản xuất bo mạch chủ và trung tâm dữ liệu trên thế giới.

Phá vỡ chuỗi tin cậy
Các chuyên gia bảo mật trên toàn thế giới lại phải đối mặt với một lỗ hổng thực thi mã nguồn trầm trọng khác, lần này nằm trong firmware khởi động được sử dụng bởi hầu hết các nhà cung cấp máy chủ và trung tâm dữ liệu trên thế giới.
Lỗ hổng này được định mức độ nghiêm trọng 9.5 trên 10, nằm trong TianoCore EDK II, một mã nguồn mở mà các nhà sản xuất phần cứng và nhà cung cấp dịch vụ đám mây sử dụng để tạo ra UEFI firmware chạy trong quá trình khởi động. Năm ngoái, một đại diện của UEFI Forum đã gọi EDK2 là giải pháp tiên tiến nhất trong việc thực thi các thông số kỹ thuật UEFI. Hầu như tất cả các nhà cung cấp UEFI (thỉnh thoảng vẫn được gọi là nhà cung cấp BIOS độc lập hoặc IBV), bao gồm AMI, Insyde và Phoenix, đều sử dụng rộng rãi mã nguồn tham chiếu này. Project Mu, nhánh mã nguồn EDK2 được tăng cường bảo mật của Microsoft, cũng sử dụng đoạn mã chứa thành phần dễ bị tổn thương này.
Lỗ hổng được theo dõi dưới mã CVE-2026-97631, là một lỗi hỏng bộ nhớ trong thành phần ICMP mà kẻ tấn công có thể khai thác để thực thi mã độc chạy trước khi hệ điều hành và firmware có thể triển khai các biện pháp phòng thủ như Secure Boot, tính năng thiết lập chuỗi tin cậy cho tất cả mã nguồn, bao gồm cả Trusted Platform Module (TPM), được tải trong quá trình khởi động. Mặc dù các payload cuối cùng được cung cấp bởi CVE-2026-97631 không có tính bền vững—nghĩa là chúng chỉ chạy một lần—nhưng chúng có thể mang lại cho kẻ tấn công cơ hội lớn để cài đặt các payload khác cũng chạy mỗi lần ở giai đoạn đầu của quá trình khởi động.
Bí mật đã bị lộ
Những người phát hiện ra CVE-2026-97631—Alex Matrosov của Anthropic và Dan Holmes của Google—đã sắp xếp để giữ kín thông tin này cho đến một đợt công bố phối hợp dự kiến diễn ra vào tháng Giêng. AMI, một nhà sản xuất bo mạch chủ và phần cứng khác, đã xuất bản một yêu cầu kéo (pull request) vào tháng trước, chi tiết hóa lỗ hổng và bao gồm cả bản vá mã nguồn. Ngay sau khi bài đăng này thu hút sự chú ý của nhóm phát hiện, các thành viên thuộc Dự án TianoCore đã xuất bản một khuyến cáo công khai vào tuần trước.
Với mã bản vá có sẵn công khai, việc các tin tặc có trình độ cao tìm hiểu cách kích hoạt lỗ hổng và xây dựng các mã khai thác hoạt động sẽ trở nên vô cùng dễ dàng. Vấn đề càng trở nên cấp bách hơn khi việc vá các lỗ hổng mã UEFI trên hàng triệu thiết bị đầu cuối do hàng nghìn nhà sản xuất phần cứng và nhà cung cấp đám mây bán ra là một quá trình cồng kềnh và tốn thời gian. Thông tin về lỗ hổng này xuất hiện chỉ sáu ngày sau một vụ rò rỉ cẩu thả khác, liên quan đến một lỗ hổng thực thi mã nghiêm trọng trong ngôn ngữ lập trình PHP.
"Lỗ hổng này trong bộ phân tích cú pháp ICMP của ngăn xếp mạng EDK2 rất thú vị về cách nó ảnh hưởng đến chuỗi tin cậy và hệ sinh thái rộng lớn hơn," HD Moore, người sáng lập Metasploit và là giám đốc nghiên cứu tại hãng bảo mật Dragos cho biết. "Một kẻ tấn công có ý định xâm nhập vào một điểm đầu cuối hoặc máy chủ gần kề có thể sử dụng lỗi này để chiếm quyền điều khiển luồng chương trình tại thời điểm quá trình khởi động vẫn có quyền truy cập vào các thành phần nhạy cảm, giống như TPM của thiết bị. Điều này có thể được sử dụng để phá vỡ mã hóa đĩa trong các trường hợp kẻ tấn công có quyền truy cập mạng ngắn hạn (và thậm chí còn dễ dàng hơn trong kịch bản trộm cắp thiết bị)."
CVE-2026-97631 là một lỗi tràn bộ nhớ đệm đã tồn tại 16 năm trong trình điều khiển PXE-Base Code (NetworkPkg/UefiPxeBcDxe), chịu trách nhiệm cho phép máy chủ, thiết bị lưu trữ và các thiết bị khác khởi động bằng cách tải xuống mã từ mạng nội cục. Trong quá trình này—được gọi là khởi động môi trường tiền thực thi—trình điều khiển sử dụng một trình lắng nghe mạng để theo dõi các lỗi ICMP. Do trình điều khiển không thực thi giới hạn sao chép bộ nhớ 504 byte, ghi đè lên dữ liệu lân cận, một kẻ nội bộ ác ý hoặc một tin tặc có quyền truy cập cấp thấp vào mạng nội bộ có thể gửi một thông báo lỗi nối thêm mã vượt quá giới hạn này. Mô-đun UEFI chạy trên CPU sau đó sẽ bị hỏng.
Như khuyến cáo chính thức đã nêu:
Trong quá trình khởi động mạng, trình điều khiển PXE Base Code (NetworkPkg/UefiPxeBcDxe) giữ một yêu cầu nhận mở cho các thông báo lỗi ICMP và sao chép mỗi thông báo nhận được vào trường Mode.IcmpError cố định 504 byte của cấu trúc ngữ cảnh riêng của nó. Việc xử lý giới hạn vòng lặp sao chép không chính xác ở cả trình xử lý IPv4 và IPv6 (PxeBcIcmpErrorDpcHandle và PxeBcIcmp6ErrorDpcHandle): đối với một thông báo dài hơn 504 byte, nó vẫn sao chép các byte vào trường đó và nó dịch chuyển con trỏ đích theo chiều dài tích lũy thay vì chiều dài trên mỗi phân đoạn, do đó một thông báo quá khổ ghi các byte do kẻ tấn công kiểm soát vượt ra ngoài trường đó. Không có gì ở phần đầu trên đường dẫn nhận giới hạn độ dài thông báo.
Lỗi độc hại có thể được phân phối thông qua một gói tin đơn giản được gửi từ bất kỳ khoảng cách mạng nào đến địa chỉ IP của thiết bị mục tiêu, miễn là nó được gửi trong chuỗi trình tự khởi động PXE. Kẻ tấn công có thể thực hiện tấn công từ chối dịch vụ bằng cách làm cho chuỗi khởi động bị treo. Khi kẻ tấn công biết bản dựng firmware mục tiêu là gì, họ có thể thiết lập một "sự kiện giả mạo" thực thi mã độc trên CPU trong môi trường firmware UEFI của nó. Mã chạy ở ring 0, cấp độ thực thi có đặc quyền cao nhất của CPU. Bởi vì các mã khai thác bỏ qua các quá trình chứng thực được thiết kế để chứng minh bằng mật mã cho các máy chủ từ xa rằng phần cứng là an toàn, chúng mang lại cơ hội quan trọng để nâng cao các đặc quyền hạn chế.
Lại là một lỗ hổng vĩnh viễn khác
CVE-2026-97631 gia nhập danh sách dài các lỗ hổng đã được phát hiện trước đó trong UEFI hoặc mã hoạt động chặt chẽ với nó. Nghiêm trọng nhất trong số đó, LogoFail, bắt nguồn từ các hình ảnh logo được đưa vào UEFI của hầu hết mọi nhà sản xuất phần cứng. Các lỗi hiển thị cho phép kẻ tấn công lật đổ chuỗi tin cậy mà UEFI thực thi và tiếp tục cài đặt các thành phần độc hại trước khi hệ điều hành tải hoặc Secure Boot chạy. PixieFail là một lỗ hổng tương tự như CVE-2026-97631. Nó cũng là kết quả của các lỗi khởi động PXE bị lỗi trong EDK2. Sau khi phát hiện ra lỗ hổng, các nhà nghiên cứu đã bắt tay vào nhiều dự án tìm kiếm lỗi (fuzzing) được thiết kế để phát hiện ra các lỗi quan trọng khác trong thư viện mã nguồn mở đó. Dường như những nỗ lực đó đã không tìm thấy lỗ hổng mới nhất này.
Các lỗ hổng UEFI khác gần đây được phát hiện bao gồm:
- PKFail, một lỗi chuỗi cung ứng xuất phát từ các khóa nền tảng thử nghiệm không phải dùng cho sản xuất, được công khai trong hơn một thập kỷ trước khi chúng được phát hiện, được sử dụng trong hàng trăm kiểu thiết bị
- BootHole
- Bootkit
- BlackLotus
Giống như CVE-2026-97631, việc khai thác hoặc sử dụng các payload này rất hấp dẫn vì nó cho phép kẻ tấn công lây nhiễm vào máy tính từ sớm trong quá trình khởi động, trước khi TPM và các biện pháp phòng thủ khác tải lên, để chúng có thể gây ra thiệt hại tối đa. Do tính phổ biến của CVE-2026-97631, Moore cho biết đây có thể là một lỗi "vĩnh viễn" sẽ tiếp tục tồn tại trong các hệ thống đã hết thời hạn hỗ trợ.
Có những lưu ý và hạn chế quan trọng khi khai thác lỗ hổng mới nhất này. Như đã lưu ý, một mức độ kiểm soát nhất định đối với mạng nội bộ là điều kiện tiên quyết. Điều đó có thể hạn chế việc khai thác đối với những kẻ nội bộ hoặc kẻ tấn công, chẳng hạn như các quốc gia có chủ đích hoặc các nhóm điều hành mã độc tống tiền, những kẻ quản lý để đạt được quyền truy cập cấp thấp bên trong mạng và đang tìm cách nâng cao quyền hạn hệ thống. Chưa có bằng chứng nào cho thấy CVE-2026-97631 cung cấp điểm truy cập ban đầu vào một mạng. Vẫn có những rào cản khác cần vượt qua.
"Để khai thác chính lỗ hổng này, kẻ tấn công cần phải đoán các địa chỉ cụ thể trong hệ thống mục tiêu, vì vậy đây không phải là thứ bạn có thể ném một mã khai thác đơn lẻ vào bất kỳ mục tiêu nào và nhận được RCE trên nhiều loại thiết bị đa dạng, mà nó cần phải được điều chỉnh cho từng kiểu máy/phiên bản/cấu hình mục tiêu vì các địa chỉ sẽ thay đổi dựa trên những điều đó," Jesse Michael, nhà nghiên cứu chính tại công ty bảo mật firmware Eclypsium, chia sẻ với Ars. "Không giống như một số lỗ hổng nổi tiếng trước đây như BootHole, Black Lotus và Baton Drop, lỗ hổng này có thể được khắc phục bằng một bản vá mã cơ bản, đòi hỏi phải triển khai bản cập nhật BIOS/UEFI, nhưng họ không cần phải giải quyết việc thu hồi, quản lý khóa pk/kek/db/dbx hoặc đảm bảo cập nhật hệ điều hành và phương tiện cung cấp giống như bạn làm với việc vượt qua Secure Boot trong chính trình quản lý khởi động."
Nguồn: Ars Technica · Bản dịch tiếng Việt của VGSNews, chỉ để tham khảo.