Dirty Pipe: một lỗ hổng cho phép dữ liệu bị ghi đè

Gần đây tin tức đã phá vỡ rằng một lỗ hổng đã được xác định trong nhân Linux và đã được xếp vào danh mục theo CVE-2022-0847 và họ đã đặt tên là "Đường ống bẩn".

Lỗ hổng này được đặt tên là "Đường ống bẩn"cho phép ghi đè nội dung của bộ đệm của trang cho bất kỳ tệp nào, bao gồm cả những tệp được đặt thành chỉ đọc, được mở bằng cờ O_RDONLY hoặc nằm trên hệ thống tệp được gắn chỉ đọc.

Về mặt thực tế, lỗ hổng bảo mật có thể được sử dụng để đưa mã vào các quy trình tùy ý hoặc làm hỏng dữ liệu trong các tệp đang mở. Ví dụ: bạn có thể thay đổi nội dung của tệp allow_keys cho quy trình sshd.

Giới thiệu về ống bẩn

Nó tương tự như lỗ hổng nghiêm trọng Dirty COW được xác định vào năm 2016 và Dirty Pipe được đề cập là ngang hàng với Dirty COW về mức độ nguy hiểm, nhưng cái này dễ vận hành hơn nhiều.

Dirty Pipe được xác định trong quá trình phân tích các khiếu nại về thiệt hại định kỳ đối với kho lưu trữ được tải xuống qua mạng trên hệ thống tải xuống các tệp nén từ máy chủ ghi nhật ký (37 hư hỏng trong 3 tháng trên hệ thống được tải), được chuẩn bị bằng cách sử dụng thao tác splice () và các đường ống không tên.

Lỗ hổng đã xuất hiện kể từ phiên bản hạt nhân Linux 5.8, phát hành vào tháng 2020 năm XNUMX.

Nhìn theo một cách khác, chúng ta có thể nói rằng nó có mặt trong Debian 11 nhưng nó không ảnh hưởng đến hạt nhân cơ sở trong Ubuntu 20.04 LTS, trong khi đối với hạt nhân RHEL 8.x và openSUSE / SUSE 15 vốn dựa trên các nhánh cũ, nhưng có thể rằng thay đổi gây ra sự cố đã được chuyển cho họ (vẫn chưa có dữ liệu chính xác).

Lỗ hổng bảo mật là do thiếu giá trị "buf-> flags" trong mã của các hàm copy_page_to_iter_pipe () và push_pipe (), mặc dù bộ nhớ không bị xóa khi cấu trúc được cấp phát và với một số thao tác nhất định không có tên các đường ống, "buf-> flags" có thể chứa một giá trị từ một hoạt động khác. Với tính năng này, người dùng cục bộ không có đặc quyền có thể đạt được sự xuất hiện của giá trị PIPE_BUF_FLAG_CAN_MERGE trong cờ, cho phép họ ghi đè dữ liệu trong bộ đệm trang chỉ bằng cách ghi dữ liệu mới vào một đường ống không tên được chuẩn bị đặc biệt.

cho một cuộc tấn công có thể được thực hiện, bạn cần một tệp đích phải có thể đọc được và vì quyền truy cập không được kiểm tra khi ghi vào đường dẫn, nên việc thay thế có thể được thực hiện trên bộ đệm trang, ngay cả đối với các tệp nằm trên phân vùng chỉ đọc (ví dụ: đối với tệp c CD-ROM).

Với điều này, sau khi thay thế thông tin trong bộ đệm trang, quá trình đọc dữ liệu từ tệp sẽ không nhận dữ liệu thực mà là dữ liệu được thay thế.

Nó được đề cập rằng hoạt động của Dirty Pipe dẫn đến việc tạo ra một đường ống không tên và lấp đầy nó với dữ liệu tùy ý để đạt được việc thiết lập cờ PIPE_BUF_FLAG_CAN_MERGE trên tất cả các cấu trúc vòng được liên kết với nó.

Dữ liệu sau đó được đọc từ đường ống, nhưng cờ vẫn được đặt trên tất cả các trường hợp của cấu trúc pipe_buffer trong cấu trúc vòng pipe_inode_info. Sau đó, một lệnh gọi đến splice () được thực hiện để đọc dữ liệu từ tệp đích vào một đường ống không tên, bắt đầu ở độ lệch cần thiết. Khi ghi dữ liệu vào đường ống không tên này, cờ PIPE_BUF_FLAG_CAN_MERGE sẽ ghi đè dữ liệu trong bộ đệm ẩn của trang thay vì tạo một phiên bản mới của cấu trúc pipe_buffer.

Cuối cùng Nếu bạn muốn biết thêm về nó, bạn có thể kiểm tra các chi tiết trong ghi chú ban đầu Trong liên kết sau đây.

Ngoài ra, nếu bạn quan tâm đến có thể theo dõi hoặc biết về việc xuất bản các bản cập nhật của các gói trong bản phân phối chính, bạn có thể thực hiện việc đó từ các trang sau: DebianSUSEUbuntuRHELFedoraGentooArchLinux.

Người ta đề cập rằng bản sửa lỗi lỗ hổng được đề xuất có sẵn trong các phiên bản Nhân Linux 5.16.11, 5.15.25 và 5.10.102 và bản sửa lỗi cũng được bao gồm trong nhân được sử dụng trên nền tảng Android.


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: AB Internet Networks 2008 SL
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.