Các nhà nghiên cứu của Cisco Talos đã phát hành Vài ngày trước một lỗ hổng trong nhân Linux có thể bị khai thác để lấy cắp dữ liệu và cũng là một phương tiện để leo thang các đặc quyền và làm tổn hại hệ thống.
Lỗ hổng được mô tả như một 'lỗ hổng tiết lộ thông tin điều này có thể cho phép kẻ tấn công xem bộ nhớ của ngăn xếp hạt nhân. '
CVE-2020-28588 là lỗ hổng bảo mật được phát hiện trong chức năng proc / pid / syscall của thiết bị ARM Các thiết bị 32-bit chạy hệ điều hành. Theo Cisco Talos, vấn đề lần đầu tiên được phát hiện trên một thiết bị chạy Azure Sphere.
Một lỗ hổng tiết lộ thông tin tồn tại trong chức năng / proc / pid / syscall của Linux Kernel 5.1 Stable và 5.4.66. Cụ thể hơn, vấn đề này đã được giới thiệu trong v5.1-rc4 (cam kết 631b7abacd02b88f4b0795c08b54ad4fc3e7c7c0) và vẫn còn trong v5.10-rc4, vì vậy tất cả các phiên bản trung gian đều có thể bị ảnh hưởng. Kẻ tấn công có thể đọc / proc / pid / syscall để kích hoạt lỗ hổng này, khiến hạt nhân bị mất nội dung bộ nhớ.
Proc là một hệ thống tập tin giả đặc biệt trên hệ điều hành giống Unix được sử dụng để truy cập động vào dữ liệu quy trình được tìm thấy trong nhân. Trình bày thông tin xử lý và thông tin hệ thống khác trong một cấu trúc giống như tệp tin.
Ví dụ: nó chứa các thư mục con / proc / [pid], mỗi thư mục chứa các tệp và thư mục con hiển thị thông tin về các quy trình cụ thể, có thể đọc được bằng cách sử dụng ID quy trình tương ứng. Trong trường hợp của tệp "syscall", nó là một tệp hệ điều hành Linux hợp pháp chứa nhật ký của các lệnh gọi hệ thống được sử dụng bởi hạt nhân.
Đối với công ty, lTin tặc có thể khai thác lỗ hổng và truy cập vào hệ điều hành và tệp syscall thông qua một hệ thống được sử dụng để tương tác giữa các cấu trúc dữ liệu nhân, Proc. Mục nhập procfs syscall có thể bị khai thác nếu tin tặc đưa ra lệnh tạo 24 byte bộ nhớ heap chưa được khởi tạo, dẫn đến việc bỏ qua ngẫu nhiên hóa bố cục không gian địa chỉ hạt nhân (KASLR).
Nhìn vào chức năng cụ thể này, mọi thứ có vẻ ổn, nhưng điều đáng chú ý là
args
tham số truyền đến từproc_pid_syscall
chức năng và như vậy thực sự thuộc loại__u64 args
. Trong hệ thống ARM, định nghĩa hàm chuyển đổi kích thước củaarg
mảng trong các phần tử bốn byte từ tám byte (kể từunsigned long
trong ARM, nó là 4 byte), dẫn đếnmemcpy
được sao chép thành 20 byte (cộng thêm 4 choargs[0]
).Tương tự, đối với i386, nơi
unsigned long
nó là 4 byte, chỉargs
24 byte đầu tiên của đối số được ghi, giữ nguyên 24 byte còn lại.Trong cả hai trường hợp, nếu chúng ta nhìn lại
proc_pid_syscall
chức năng.Trong khi ở ARM 32-bit và i386, chúng tôi chỉ sao chép 24 byte vào
args
mảng, chuỗi định dạng kết thúc đọc 48 byte củaargs
ma trận, vì%llx
Chuỗi định dạng là tám byte trên hệ thống 32 bit và 64 bit. Vì vậy, 24 byte bộ nhớ heap chưa được khởi tạo sẽ nhận được đầu ra, điều này có thể dẫn đến bỏ qua KASLR.
Các nhà nghiên cứu nói rằng cuộc tấn công này là "không thể phát hiện từ xa trên mạng" bởi vì nó đang đọc từ một tệp hệ điều hành Linux hợp pháp. Cisco cho biết: “Nếu được sử dụng đúng cách, hacker có thể lợi dụng việc rò rỉ thông tin này để khai thác thành công các lỗ hổng Linux chưa được vá khác.
Về vấn đề này, Google gần đây đã cho biết:
“Các lỗi bảo mật bộ nhớ thường đe dọa an ninh của các thiết bị, đặc biệt là các ứng dụng và hệ điều hành. Ví dụ, trong hệ điều hành di động Android cũng được hỗ trợ bởi nhân Linux, Google cho biết họ phát hiện ra rằng hơn một nửa số lỗ hổng bảo mật được giải quyết trong năm 2019 là do lỗi bảo mật bộ nhớ.
Cuối cùng nhưng không kém phần quan trọng Bạn nên cập nhật các phiên bản 5.10-rc4, 5.4.66, 5.9.8 của hạt nhân Linux, kể từ Lỗ hổng này đã được kiểm tra và xác nhận có thể khai thác các phiên bản sau của nhân Linux.
Cuối cùng nếu bạn muốn biết thêm về nó Về bài đăng, bạn có thể kiểm tra chi tiết trong liên kết theo dõi.