Dirty Pipe, một trong những lỗ hổng nghiêm trọng nhất trong nhiều năm qua trên Linux

Mới đây, thông tin về việc phát hiện một lỗ hổng bảo mật mới trong Linux được xếp loại "Mức độ nghiêm trọng cao" và ảnh hưởng đến tất cả các nhân hệ điều hành từ phiên bản 5.8 trở lên, cũng như các phiên bản phái sinh, bao gồm cả Android, đã được lan truyền trên mạng.

Lỗ hổng này, còn được gọi là Dirty Pipe, cho phép ghi đè dữ liệu trong các tệp chỉ đọc và có thể dẫn đến leo thang đặc quyền bằng cách chèn mã vào các tiến trình "root".

Mặc dù nó đã được vá vào nhân Linux dòng chính, nhưng lỗi này có thể được vũ khí hóa dưới dạng khai thác leo thang đặc quyền trên tất cả các thiết bị chạy nhân Linux phiên bản 5.8 trở lên.

Điều đó cũng có nghĩa là một loạt điện thoại thông minh Android mới phát hành, như Samsung Galaxy S22 và Google Pixel 6, cũng dễ bị tấn công, cho đến khi mỗi thiết bị nhận được bản vá hạt nhân thích hợp từ OEM tương ứng.

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

Lỗ hổng này được nhà nghiên cứu bảo mật Max Kellerman phát hiện và được xếp vào loại (CVE-2022-0847); phải mất vài tháng mới tìm ra cách khai thác chứng minh khái niệm.

Lỗ hổng này cho phép người dùng không có đặc quyền chèn và ghi đè dữ liệu trong các tệp chỉ đọc, bao gồm cả các tiến trình SUID chạy với quyền root. Biệt danh thông thường dường như là sự chơi chữ dựa trên lỗi Dirty Cow khét tiếng và một cơ chế của Linux gọi là pipelining để truyền thông điệp giữa các tiến trình, vì cơ chế sau được sử dụng trong quy trình khai thác.

Tất cả bắt đầu từ một năm trước với một phiếu hỗ trợ liên quan đến các tệp bị hỏng. Một khách hàng phàn nàn rằng không thể giải nén các bản ghi truy cập đã tải xuống. Và thực sự, có một tệp nhật ký bị hỏng trên một trong các máy chủ nhật ký; nó có thể không được nén, nhưng gzip đã báo lỗi CRC. Tôi không thể giải thích tại sao nó bị hỏng, nhưng tôi cho rằng quá trình phân tách hàng đêm đã bị lỗi và tạo ra một tệp bị hỏng. Tôi đã sửa CRC của tệp theo cách thủ công, đóng vé và nhanh chóng quên đi sự cố.

Sau nhiều tháng phân tích, nhà nghiên cứu cuối cùng đã phát hiện ra rằng các tệp máy khách bị hỏng là kết quả của một lỗi trong nhân Linux. Anh ta đã tìm ra cách khai thác lỗ hổng Dirty Pipe để cho phép bất kỳ ai có tài khoản, kể cả các tài khoản "nobody" có ít đặc quyền hơn, thêm khóa SSH vào tài khoản người dùng root.

Để kích hoạt lỗ hổng, Kellerman đã chia sẻ khái niệm bằng chứng của mình, kẻ tấn công phải có quyền đọc. Ngoài ra, thao tác cuộn không được nằm trên ranh giới trang, việc viết không được vượt qua ranh giới trang và không thể thay đổi kích thước tệp.

Để khai thác lỗ hổng này, bạn phải: tạo một đường ống, điền vào đường ống với dữ liệu tùy ý (bằng cách đặt cờ PIPE_BUF_FLAG_CAN_MERGE trên tất cả các mục trong vòng), làm trống đường ống (để cờ đượ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 của vòng pipe_inode_info), hợp nhất dữ liệu từ tệp đích (được mở bằng O_RDONLY) vào đường ống ngay trước khoảng lệch đích và ghi dữ liệu tùy ý vào đường ống.

Dirty Pipe cũng ảnh hưởng đến bất kỳ phiên bản Android nào dựa trên một trong những phiên bản dễ bị tấn công của nhân Linux. Vì Android quá phân mảnh, các kiểu thiết bị bị ảnh hưởng không thể được theo dõi một cách thống nhất.

Theo Kellermann, Google đã tích hợp bản vá lỗi của mình vào nhân Android vào tháng trước, ngay sau khi lỗi này được khắc phục trong các phiên bản nhân Linux 5.16.11, 5.15.25 và 5.10.102.

Phải nói rằng, chúng ta có thể sẽ phải đợi một chút trước khi các OEM bắt đầu tung ra các bản cập nhật Android có bản sửa lỗi. Ví dụ, Pixel 6 của Google vẫn dễ bị tấn công, nhưng người dùng nâng cao có thể giảm thiểu lỗ hổng này bằng cách cài đặt một nhân hậu mãi được vá tùy chỉnh như một tùy chọn thay thế.

Các nhà phát triển nhân Linux đã phát hành các bản vá lỗi (5.16.11, 5.15.25, 5.10.102) vào ngày 23 tháng 2, trong khi Google đã vá nhân Android vào ngày 24 tháng 2. Kellermann và các chuyên gia khác đã so sánh lỗ hổng này với CVE-2016-5195 “Dirty Cow” và cho rằng nó thậm chí còn dễ khai thác hơn.

Cuối cùng, nếu bạn muốn tìm hiểu thêm, bạn có thể xem chi tiết tại liên kết sau.


Thêm vào danh sách nguồn ưu tiên trên Google.