25 lỗ hổng trong RTOS Zephyr, bao gồm cả lỗ hổng bị khai thác thông qua gói ICMP

Các nhà nghiên cứu từ Tập đoàn NCC xuất bản kết quả kiểm toán dự án miễn phí Gió tây, đang phát triển một hệ điều hành thời gian thực (RTOS), nhằm trang bị cho các thiết bị tuân thủ khái niệm Internet of Things (IoT, Internet of Things). Trong quá trình kiểm toán, nó đã được tiết lộ 25 lỗ hổng trong Zephyr và 1 lỗ hổng trong MCUboot. Zephyr đang được phát triển với sự tham gia của các công ty Intel.

Tổng cộng, 6 lỗ hổng đã được xác định trong ngăn xếp mạng, 4 lỗ hổng trong kernel, 2 lỗ hổng trong shell lệnh, 5 lỗ hổng trong trình xử lý cuộc gọi hệ thống, 5 lỗ hổng trong hệ thống con USB và 3 lỗ hổng trong cơ chế cập nhật chương trình cơ sở. Hai vấn đề được đánh giá là nghiêm trọng, hai vấn đề ở mức cao, 9 vấn đề ở mức trung bình, 9 vấn đề ở mức thấp và 4 vấn đề cần xem xét. Các sự cố nghiêm trọng ảnh hưởng đến ngăn xếp IPv4 và trình phân tích cú pháp MQTT, các sự cố nguy hiểm ảnh hưởng đến bộ lưu trữ dung lượng lớn USB và trình điều khiển USB DFU. Tại thời điểm tiết lộ thông tin, các bản sửa lỗi chỉ được chuẩn bị cho 15 lỗ hổng nguy hiểm nhất dẫn đến từ chối dịch vụ hoặc liên quan đến các lỗ hổng trong cơ chế bảo vệ nhân bổ sung vẫn chưa được sửa chữa.

Một lỗ hổng có thể khai thác từ xa đã được xác định trong ngăn xếp IPv4 của nền tảng, dẫn đến hỏng bộ nhớ khi xử lý các gói ICMP được sửa đổi theo một cách nhất định. Một vấn đề nghiêm trọng khác đã được tìm thấy trong trình phân tích cú pháp giao thức MQTT, nguyên nhân là do thiếu kiểm tra độ dài trường tiêu đề thích hợp và có thể dẫn đến việc thực thi mã từ xa. Các vấn đề từ chối dịch vụ ít nghiêm trọng hơn được tìm thấy trong ngăn xếp IPv6 và triển khai giao thức CoAP.

Các vấn đề khác có thể bị khai thác cục bộ để gây ra sự từ chối dịch vụ hoặc thực thi mã ở cấp kernel. Hầu hết các lỗ hổng này đều liên quan đến việc thiếu kiểm tra thích hợp các đối số lệnh gọi hệ thống và có thể dẫn đến các vùng bộ nhớ kernel tùy ý được ghi vào và đọc từ đó. Các vấn đề cũng mở rộng đến chính mã xử lý cuộc gọi hệ thống—việc gọi số cuộc gọi hệ thống âm sẽ dẫn đến tràn số nguyên. Hạt nhân cũng xác định các vấn đề trong việc triển khai bảo vệ ASLR (ngẫu nhiên không gian địa chỉ) và cơ chế thiết lập các dấu canary trên ngăn xếp, khiến các cơ chế này không hiệu quả.

Nhiều vấn đề ảnh hưởng đến ngăn xếp USB và các trình điều khiển riêng lẻ. Ví dụ: các sự cố trong bộ lưu trữ dung lượng lớn USB có thể gây ra lỗi tràn bộ đệm và thực thi mã ở cấp kernel khi thiết bị được kết nối với máy chủ USB do kẻ tấn công kiểm soát. Lỗ hổng trong USB DFU, trình điều khiển tải chương trình cơ sở mới qua USB, cho phép bạn tải hình ảnh chương trình cơ sở đã sửa đổi vào Flash bên trong của bộ vi điều khiển mà không cần sử dụng mã hóa và bỏ qua chế độ khởi động an toàn bằng cách xác minh các thành phần bằng chữ ký số. Ngoài ra, mã bootloader mở đã được nghiên cứu MCUboot, trong đó một lỗ hổng lành tính đã được tìm thấy,
điều này có thể dẫn đến tràn bộ đệm khi sử dụng giao thức SMP (Giao thức quản lý đơn giản) qua UART.

Hãy nhớ lại rằng trong Zephyr, chỉ có một không gian địa chỉ ảo được chia sẻ toàn cầu (SASOS, Hệ điều hành không gian địa chỉ đơn) được cung cấp cho tất cả các quy trình. Mã dành riêng cho ứng dụng được kết hợp với hạt nhân dành riêng cho ứng dụng để tạo thành một tệp thực thi nguyên khối có thể được tải và chạy trên phần cứng cụ thể. Tất cả tài nguyên hệ thống được xác định tại thời điểm biên dịch, giảm kích thước mã và tăng hiệu suất. Hình ảnh hệ thống chỉ có thể bao gồm những tính năng cốt lõi cần thiết để chạy ứng dụng.

Đáng chú ý là trong số những ưu điểm chính của Zephyr đề cập phát triển với mục tiêu an toàn. Tán thànhrằng tất cả các giai đoạn phát triển đều trải qua các giai đoạn bắt buộc để xác nhận tính bảo mật của mã: thử nghiệm làm mờ, phân tích tĩnh, thử nghiệm thâm nhập, xem xét mã, phân tích việc triển khai cửa sau và lập mô hình mối đe dọa.

Nguồn: opennet.ru

Thêm một lời nhận xét