WhiteHat News #ID:2018
WhiteHat Support
-
20/03/2017
-
129
-
443 bài viết
Lỗ hổng thực thi mã từ xa ảnh hưởng đến bộ công cụ E2fsprogs
Các nhà nghiên cứu của Cisco Talos vừa tiết lộ về một lỗi out-of-bound write (ghi dữ liệu ngoài vùng nhớ) trong bộ công cụ E2fsprogs có thể dẫn đến thực thi mã từ xa.
E2fsprogs là một bộ các công cụ được thiết kế để bảo trì hệ thống tệp ext2, ext3 và ext4. Được cho là phần mềm cần thiết cho các hệ điều hành như Linux và Unix, phần mềm này được cài mặc định trên hầu hết các bản phân phối Linux.
Một trong những công cụ của E2fsprogs là chương trình nhị phân e2fsck để sửa lỗi các hệ thống tệp tin khi bị hỏng và từ đó các nhà nghiên cứu của Cisco Talos tìm thấy lỗ hổng out-of-bound write.
Việc tổ chức các thư mục trong chuẩn ext2, 3 và 4 sử dụng các cây hàm băm (hash trees) để chỉ có một ánh xạ duy nhất các file trong một thư mục. Các đầu vào hàm băm đối với cây hàm băm sẽ có cấu trúc hash_entry, trong khi (giá trị) các số của đầu vào hàm băm có trong num_array.
Theo Talos, để duy trì tính nguyên vẹn và dữ kiện của hash table (bảng băm), chỉ có duy nhất một cấu trúc cho tất cả đầu vào, một yêu cầu mà chương trình e2fsck thực thi bằng cách nối thêm tên của file thứ hai khi kết hợp với {~0, ~1, ..., ~n}, tùy vào số lượng của các bản sao.
Một bộ đệm ngăn xếp tạm thời được sử dụng để lưu trữ tạm những tên bị thay đổi, sau đó ghi vào ổ đĩa và các bộ công cụ tiếp đó lặp lại hành động này trên mỗi cấu trúc hash_entry. Khi va chạm, độ dài của tên file hiện tại sẽ được trích xuất và sau đó hàm mutate_name được sử dụng để thay đổi tên.
Những gì các nhà nghiên cứu bảo mật phát hiện là quá trình có thể xảy ra bên ngoài vùng nhớ của ngăn xếp. Lỗi này nằm trong hàm rehash.c mutate_name() của chương trình e2fsck, dẫn đến chức năng phục hồi của thư mục bị lạm dụng để thực thi mã.
Một thư mục ext4 tự tạo có thể được dùng để gây ra lỗi ghi dữ liệu ngoài vùng nhớ ngăn xếp dẫn đến thực thi mã. Để kích thoạt lỗ hổng này, kẻ tấn công sẽ cần làm hỏng một phân vùng nào đó.
Trên hệ điều hành 64-bit, việc khai thác là không khả thi vì ngăn xếp không đủ lớn và yêu cầu phải có biện pháp kiểm soát dùng nhằm mở rộng ngăn xếp.
Còn trên các phiên bản 32-bit, kết quả cuối cùng lại phụ thuộc nhiều hơn vào nhị phân và cách nó được biên dịch.
Lỗ hổng CVE-2019-5188 có điểm CVSS là 7,5. Các phiên bản E2fsprogs 1.43.3 - 1.45.3 bị ảnh hưởng bởi lỗ hổng này và bản vá được được phát hành để xử lý lỗ hổng.
E2fsprogs là một bộ các công cụ được thiết kế để bảo trì hệ thống tệp ext2, ext3 và ext4. Được cho là phần mềm cần thiết cho các hệ điều hành như Linux và Unix, phần mềm này được cài mặc định trên hầu hết các bản phân phối Linux.
Một trong những công cụ của E2fsprogs là chương trình nhị phân e2fsck để sửa lỗi các hệ thống tệp tin khi bị hỏng và từ đó các nhà nghiên cứu của Cisco Talos tìm thấy lỗ hổng out-of-bound write.
Việc tổ chức các thư mục trong chuẩn ext2, 3 và 4 sử dụng các cây hàm băm (hash trees) để chỉ có một ánh xạ duy nhất các file trong một thư mục. Các đầu vào hàm băm đối với cây hàm băm sẽ có cấu trúc hash_entry, trong khi (giá trị) các số của đầu vào hàm băm có trong num_array.
Theo Talos, để duy trì tính nguyên vẹn và dữ kiện của hash table (bảng băm), chỉ có duy nhất một cấu trúc cho tất cả đầu vào, một yêu cầu mà chương trình e2fsck thực thi bằng cách nối thêm tên của file thứ hai khi kết hợp với {~0, ~1, ..., ~n}, tùy vào số lượng của các bản sao.
Một bộ đệm ngăn xếp tạm thời được sử dụng để lưu trữ tạm những tên bị thay đổi, sau đó ghi vào ổ đĩa và các bộ công cụ tiếp đó lặp lại hành động này trên mỗi cấu trúc hash_entry. Khi va chạm, độ dài của tên file hiện tại sẽ được trích xuất và sau đó hàm mutate_name được sử dụng để thay đổi tên.
Những gì các nhà nghiên cứu bảo mật phát hiện là quá trình có thể xảy ra bên ngoài vùng nhớ của ngăn xếp. Lỗi này nằm trong hàm rehash.c mutate_name() của chương trình e2fsck, dẫn đến chức năng phục hồi của thư mục bị lạm dụng để thực thi mã.
Một thư mục ext4 tự tạo có thể được dùng để gây ra lỗi ghi dữ liệu ngoài vùng nhớ ngăn xếp dẫn đến thực thi mã. Để kích thoạt lỗ hổng này, kẻ tấn công sẽ cần làm hỏng một phân vùng nào đó.
Trên hệ điều hành 64-bit, việc khai thác là không khả thi vì ngăn xếp không đủ lớn và yêu cầu phải có biện pháp kiểm soát dùng nhằm mở rộng ngăn xếp.
Còn trên các phiên bản 32-bit, kết quả cuối cùng lại phụ thuộc nhiều hơn vào nhị phân và cách nó được biên dịch.
Lỗ hổng CVE-2019-5188 có điểm CVSS là 7,5. Các phiên bản E2fsprogs 1.43.3 - 1.45.3 bị ảnh hưởng bởi lỗ hổng này và bản vá được được phát hành để xử lý lỗ hổng.
Theo SecurityWeek