6 lỗ hổng mới trong U-Boot đe dọa chuỗi khởi động của hàng triệu thiết bị

WhiteHat Team

Administrators
Thành viên BQT
09/04/2020
141
2.036 bài viết
6 lỗ hổng mới trong U-Boot đe dọa chuỗi khởi động của hàng triệu thiết bị
Các nhà nghiên cứu tại hãng bảo mật firmware Binarly vừa công bố 6 lỗ hổng mới trong U-Boot - bootloader mã nguồn mở được sử dụng rộng rãi trên hàng triệu thiết bị nhúng như router Wi-Fi, camera IP, thiết bị IoT, hệ thống công nghiệp và bộ điều khiển quản lý máy chủ (BMC) trong các trung tâm dữ liệu.
7c43b00b-31dd-4c09-84bd-e706e261d929.png

Trong 6 lỗ hổng được phát hiện, 4 lỗ hổng có thể khiến thiết bị bị treo hoặc ngừng hoạt động trong quá trình khởi động. Hai lỗ hổng còn lại nghiêm trọng hơn, cho phép kẻ tấn công thực thi mã tùy ý nếu có thể đưa một boot image độc hại vào trước giai đoạn bootloader xác minh tính hợp lệ của phần mềm. Khi đó, mã độc có thể được thực thi trước cả khi thiết bị kiểm tra chữ ký số để xác nhận phần mềm là chính hãng và chưa bị chỉnh sửa.​

U-Boot là gì và vì sao lỗ hổng này đặc biệt nguy hiểm?​

U-Boot (Universal Boot Loader) là một trong những bootloader phổ biến nhất thế giới dành cho các thiết bị nhúng. Nhiệm vụ của nó là khởi tạo phần cứng và nạp hệ điều hành khi thiết bị được bật nguồn.

U-Boot hiện xuất hiện trong rất nhiều sản phẩm như:​
  • Router và modem gia đình​
  • Camera giám sát​
  • Thiết bị NAS​
  • Thiết bị IoT​
  • Bộ điều khiển BMC trên máy chủ doanh nghiệp​
  • Thiết bị công nghiệp và viễn thông​
Do hoạt động trước hệ điều hành, bootloader được xem là mắt xích đầu tiên trong chuỗi bảo mật của thiết bị. Nếu bootloader bị chiếm quyền, mọi cơ chế bảo vệ phía sau như Secure Boot, hệ điều hành hay phần mềm chống mã độc đều có thể bị vô hiệu hóa.​

Binarly đã phát hiện những lỗ hổng nào?​

Theo Binarly, nhóm nghiên cứu đã phát hiện 6 lỗ hổng được theo dõi với các mã:​
  • BRLY-2026-037​
  • BRLY-2026-038​
  • BRLY-2026-039​
  • BRLY-2026-040​
  • BRLY-2026-041​
  • BRLY-2026-042​
Hiện các lỗ hổng chưa được cấp mã CVE. Các lỗi này đã tồn tại trong mã nguồn U-Boot từ phiên bản 2013.07, tức hơn 13 năm và ảnh hưởng tới hơn 50 bản phát hành ổn định, đồng thời có khả năng tồn tại trong rất nhiều firmware của các hãng sản xuất vốn xây dựng trên nền tảng U-Boot.​

Nguyên nhân của lỗ hổng nằm ở đâu?​

Các lỗ hổng đều xuất hiện trong quá trình U-Boot xử lý định dạng FIT. FIT là gói firmware chứa nhiều thành phần như:​
  • Linux kernel​
  • Device Tree​
  • RAM disk​
  • Các thành phần khởi động khác​
Thông thường, U-Boot sẽ:​
  1. Đọc file FIT.​
  2. Phân tích cấu trúc dữ liệu.​
  3. Kiểm tra chữ ký số.​
  4. Chỉ khi hợp lệ mới tiếp tục khởi động.​
Tuy nhiên, Binarly phát hiện một điểm rất đáng lo ngại: U-Boot thực hiện phân tích nội dung của file FIT trước khi hoàn tất việc xác minh chữ ký số. Điều đó đồng nghĩa với việc một file firmware giả mạo vẫn có thể kích hoạt lỗi trong bootloader trước khi bị phát hiện là không hợp lệ.​

Hai lỗ hổng nguy hiểm nhất có thể dẫn đến thực thi mã​

Trong số 6 lỗ hổng, BRLY-2026-037 và BRLY-2026-038 được đánh giá nghiêm trọng nhất vì đều có thể dẫn đến thực thi mã tùy ý. Hai lỗi này đều bắt nguồn từ việc U-Boot sử dụng kết quả trả về của hàm "fdt_get_name()" mà không kiểm tra tính hợp lệ.

Nếu một file FIT được thiết kế đặc biệt khiến hàm này trả về:​
  • Con trỏ NULL;​
  • Hoặc độ dài âm (negative length),​
U-Boot vẫn tiếp tục xử lý dữ liệu như bình thường. Hệ quả là:​
  • Một trường hợp gây tràn bộ đệm trên ngăn xếp (Stack Buffer Overflow) nếu vùng nhớ địa chỉ 0 có thể truy cập;​
  • Trường hợp còn lại khiến phép toán con trỏ ghi đè lên địa chỉ trả về của hàm, từ đó cho phép kẻ tấn công chiếm quyền điều khiển luồng thực thi.​
Nếu bố cục bộ nhớ phù hợp, bootloader sẽ thực thi mã do kẻ tấn công chuẩn bị từ trước.​

Bốn lỗ hổng còn lại gây treo hoặc làm hỏng quá trình khởi động​

Bốn lỗ hổng còn lại không trực tiếp dẫn tới thực thi mã nhưng vẫn có thể khiến thiết bị không thể khởi động. Cụ thể:​
  • BRLY-2026-039 và BRLY-2026-041 cho phép đọc vượt ngoài vùng nhớ do tin tưởng các giá trị kích thước hoặc offset trong file FIT.​
  • BRLY-2026-040 gây lỗi truy cập con trỏ NULL.​
  • BRLY-2026-042 khiến bootloader rơi vào vòng đệ quy quá sâu, làm tràn ngăn xếp và dừng hoạt động.​
Những lỗi này có thể khiến thiết bị treo hoàn toàn hoặc rơi vào trạng thái không thể khởi động.​

Kẻ tấn công khai thác như thế nào?​

Điều kiện tiên quyết là kẻ tấn công phải khiến thiết bị sử dụng một firmware hoặc boot image độc hại. Trong thực tế, điều này có thể xảy ra qua nhiều kịch bản như:​
  • Cập nhật firmware giả mạo;​
  • Chiếm quyền giao diện quản trị thiết bị;​
  • Khai thác lỗ hổng khác để ghi đè firmware;​
  • Truy cập vật lý vào thiết bị.​
Binarly nhấn mạnh đây không chỉ là nguy cơ trên lý thuyết. Trong một nghiên cứu trước đây về các máy chủ Supermicro, chính nhóm nghiên cứu đã chứng minh có thể khai thác giao diện quản trị từ xa của BMC để nạp firmware độc hại mà không cần tiếp cận phần cứng. Điều này cho thấy các lỗ hổng ở bootloader hoàn toàn có thể trở thành mắt xích cuối trong một chuỗi tấn công từ xa.​

Mức độ ảnh hưởng​

Nếu chỉ gây treo thiết bị, quản trị viên vẫn có thể phải tháo thiết bị và nạp lại firmware bằng thiết bị chuyên dụng. Tuy nhiên, trường hợp nguy hiểm hơn là khi kẻ tấn công thực thi được mã ngay trong bootloader.

Lúc này mã độc sẽ hoạt động trước hệ điều hành, có thể:​
  • vô hiệu hóa cơ chế Secure Boot;​
  • thay đổi toàn bộ quá trình khởi động;​
  • cài đặt bootkit hoặc firmware malware;​
  • duy trì quyền kiểm soát lâu dài;​
  • che giấu hoạt động khỏi phần mềm bảo mật.​
Do bootloader nằm ở tầng thấp nhất của hệ thống, việc phát hiện và loại bỏ mã độc sau khi bị xâm nhập sẽ khó khăn hơn rất nhiều so với các loại malware thông thường.​

Hiện đã có bản vá chưa?​

Binarly cho biết toàn bộ 6 bản vá đã được nhóm phát triển U-Boot hợp nhất vào mã nguồn chính trong tháng 6/2026. Tuy nhiên, bản phát hành U-Boot v2026.07 đã được đóng mã từ tháng 4 nên không bao gồm các bản sửa lỗi này.

Phiên bản chính thức đầu tiên dự kiến chứa đầy đủ bản vá sẽ là U-Boot v2026.10, dự kiến phát hành vào tháng 10/2026. Đối với phần lớn người dùng cuối, việc cập nhật sẽ phụ thuộc hoàn toàn vào nhà sản xuất thiết bị, vì firmware của mỗi hãng thường được tùy biến riêng từ U-Boot.​

Chuyên gia khuyến nghị gì?​

Các chuyên gia khuyến nghị các nhà sản xuất và quản trị viên hệ thống cần nhanh chóng rà soát các thiết bị sử dụng U-Boot và áp dụng các bản vá mới nhất từ dự án upstream thay vì chờ các bản phát hành định kỳ.

Đối với doanh nghiệp và người dùng, cần thường xuyên theo dõi các bản cập nhật firmware do nhà sản xuất phát hành, chỉ cài đặt firmware từ nguồn chính thức và hạn chế tối đa việc sử dụng các firmware không rõ nguồn gốc hoặc đã bị chỉnh sửa. Đồng thời, cần tăng cường bảo vệ các giao diện quản trị từ xa như BMC, IPMI hoặc các cổng cập nhật firmware để ngăn kẻ tấn công lợi dụng làm bàn đạp đưa firmware độc hại vào thiết bị.

Sáu lỗ hổng mới trong U-Boot một lần nữa cho thấy bootloader vẫn là một trong những mắt xích yếu nhưng ít được chú ý nhất trong chuỗi bảo mật của thiết bị. Dù các cơ chế như Secure Boot hay chữ ký số được thiết kế để ngăn firmware giả mạo, việc xử lý dữ liệu không đáng tin cậy trước khi hoàn tất quá trình xác thực vẫn có thể khiến toàn bộ chuỗi bảo mật bị phá vỡ.

Đáng chú ý, đây không phải lần đầu U-Boot gặp các vấn đề liên quan đến xác minh hình ảnh khởi động. Trước đó, các lỗ hổng như BootHole hay LogoFAIL cũng từng chứng minh rằng chỉ một lỗi nhỏ trong quá trình khởi động có thể ảnh hưởng đến hàng triệu thiết bị trên toàn cầu. Với đặc thù firmware được tích hợp sâu vào sản phẩm và chu kỳ cập nhật chậm, việc đưa bản vá đến toàn bộ hệ sinh thái sẽ mất nhiều thời gian. Vì vậy, các tổ chức và doanh nghiệp cần chủ động theo dõi cảnh báo bảo mật từ nhà sản xuất, triển khai cập nhật firmware kịp thời và xem bảo mật bootloader là một phần quan trọng trong chiến lược phòng thủ hệ thống.​
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Thẻ
boot image bootloader brly-2026-037 brly-2026-038 brly-2026-039 brly-2026-040 brly-2026-041 brly-2026-042 firmware u-boot
Bên trên