Một lỗ hổng trong VFS của nhân Linux cho phép bạn nâng cao đặc quyền của mình

Một lỗ hổng (CVE-2022-0185) đã được xác định trong Filesystem Context API do nhân Linux cung cấp, cho phép người dùng cục bộ có được đặc quyền root trên hệ thống. Nhà nghiên cứu đã xác định được sự cố đã công bố bản trình diễn cách khai thác cho phép bạn thực thi mã bằng quyền root trên Ubuntu 20.04 trong cấu hình mặc định. Mã khai thác dự kiến ​​sẽ được đăng trên GitHub trong vòng một tuần sau khi các nhà phân phối phát hành bản cập nhật sửa lỗ hổng này.

Lỗ hổng tồn tại trong hàm Legacy_parse_param() trong VFS và xảy ra do không kiểm tra đúng kích thước tối đa của các tham số được cung cấp trên các hệ thống tệp không hỗ trợ API bối cảnh hệ thống tệp. Việc truyền tham số quá lớn có thể gây tràn biến số nguyên dùng để tính kích thước của dữ liệu được ghi - mã có kiểm tra tràn bộ đệm "if (len > PAGE_SIZE - 2 - size)", điều này không xảy ra hoạt động nếu giá trị kích thước lớn hơn 4094. đối với tràn số nguyên qua giới hạn dưới (dòng số nguyên, khi truyền 4096 - 2 - 4095 thành unsigned int, kết quả là 2147483648).

Lỗi này cho phép, khi truy cập vào hình ảnh hệ thống tệp được thiết kế đặc biệt, gây tràn bộ đệm và ghi đè dữ liệu kernel theo vùng bộ nhớ được phân bổ. Để khai thác lỗ hổng, bạn phải có quyền CAP_SYS_ADMIN, tức là. quyền hạn của người quản trị. Vấn đề là người dùng không có đặc quyền có thể có được các quyền như vậy trong một vùng chứa biệt lập nếu hệ thống đã bật hỗ trợ cho không gian tên người dùng. Ví dụ: không gian tên người dùng được bật theo mặc định trên Ubuntu và Fedora, nhưng không được bật trên Debian và RHEL (trừ khi sử dụng nền tảng cách ly vùng chứa).

Sự cố đã xuất hiện kể từ phiên bản Linux kernel 5.1 và đã được khắc phục trong các bản cập nhật ngày hôm qua 5.16.2, 5.15.16, 5.10.93, 5.4.173. Các bản cập nhật gói khắc phục lỗ hổng này đã được phát hành cho RHEL, Debian, Fedora và Ubuntu. Bản sửa lỗi chưa có trên Arch Linux, Gentoo, SUSE và openSUSE. Là một giải pháp bảo mật cho các hệ thống không sử dụng cách ly vùng chứa, bạn có thể đặt giá trị sysctl "user.max_user_namespaces" thành 0: echo "user.max_user_namespaces=0" > /etc/sysctl.d/userns.conf # sysctl -p /etc/sysctl.d/userns.conf

Nguồn: opennet.ru

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