Một lỗ hổng đã được xác định trong GDM

Một nhà nghiên cứu bảo mật bởi GitHub làm cho nó được biết đến gần đây bạn đã xác định được một lỗ hổng (CVE-2020-16125) trong GNOME Display Manager (GDM), chịu trách nhiệm hiển thị màn hình đăng nhập.

Kết hợp với một lỗ hổng khác trong dịch vụ theo dõi tài khoản (tài khoản-daemon), vấn đề cho phép mã chạy dưới dạng root.  Lỗ hổng có liên quan đến việc khởi chạy không chính xác tiện ích cấu hình ban đầu nếu không thể truy cập dịch vụ daemon tài khoản thông qua DBus.

Về lỗ hổng

Người dùng không có đặc quyền có thể làm hỏng quá trình daemon tài khoản hoặc cúp máy, điều gì sẽ tạo ra các điều kiện để tiện ích gnome-Initial-setup được chạy từ GDM, qua đó người dùng mới có thể đăng ký làm thành viên của nhóm sudo, nghĩa là có khả năng chạy các chương trình dưới dạng root.

Thông thường, GDM gọi gnome-Initial-setup để đặt người dùng đầu tiên nếu không có tài khoản nào trong hệ thống. Việc xác minh sự tồn tại của các tài khoản được thực hiện bằng cách liên hệ với các tài khoản-daemon. Nếu quá trình được chỉ định không thành công, GDM sẽ giả sử các tài khoản bị thiếu và bắt đầu quá trình cấu hình ban đầu.

Nhà nghiên cứu đã xác định được hai cách để làm gián đoạn quy trình tài khoản daemon- Lỗi đầu tiên (CVE-2020-16126) là do đặt lại đặc quyền không chính xác và lỗi thứ hai (CVE-2020-16127) trong khi xử lý tệp ".pam_enosystem".

Bên cạnh đó, một lỗ hổng bảo mật khác được tìm thấy trong tài khoản daemon (CVE-2018-14036) do kiểm tra đường dẫn tệp không chính xác và cho phép nội dung tệp tùy ý được đọc trên hệ thống.

Các lỗ hổng trong tài khoản-daemon là do các nhà phát triển Ubuntu thay đổi và không xuất hiện trong mã tài khoản-daemon chính của dự án FreeDesktop và gói Debian.

Sự cố CVE-2020-16127 xuất hiện trong một bản vá được thêm vào Ubuntu để triển khai hàm is_in_pam_enosystem, hàm này đọc nội dung của tệp .pam_enosystem từ thư mục chính của người dùng. Nếu bạn đặt một liên kết tượng trưng đến / dev / zero thay vì tệp này, quy trình daemon của tài khoản sẽ treo trên các hoạt động đọc vô hạn và ngừng phản hồi các yêu cầu thông qua DBus.

Thật không bình thường khi một lỗ hổng trong hệ điều hành hiện đại lại dễ bị khai thác như vậy. Trong một số trường hợp, tôi đã viết hàng nghìn dòng mã để khai thác một lỗ hổng. 

Hầu hết các cách khai thác hiện đại đều liên quan đến các thủ thuật phức tạp, chẳng hạn như sử dụng lỗ hổng bảo mật bộ nhớ để giả mạo các đối tượng giả mạo trong heap hoặc thay thế tệp bằng liên kết tượng trưng với độ chính xác đến micro giây để khai thác lỗ hổng TOCTOU. 

Vì vậy, ngày nay việc tìm thấy một lỗ hổng không yêu cầu kỹ năng mã hóa để khai thác là tương đối hiếm. Tôi cũng nghĩ rằng lỗ hổng này rất dễ hiểu, ngay cả khi bạn không có kiến ​​thức trước về cách hoạt động của Ubuntu hoặc kinh nghiệm trong nghiên cứu bảo mật.

Lỗ hổng CVE-2020-16126 do một bản vá khác gây ra đặt lại đặc quyền của người dùng hiện tại trong khi xử lý một số lệnh gọi DBus (ví dụ: org.freedesktop.Accounts.User.SetLanguage).

Tiến trình daemon tài khoản chạy bình thường dưới dạng root, điều này ngăn người dùng bình thường gửi tín hiệu.

Nhưng nhờ vào bản vá được thêm vào, đặc quyền quy trình có thể được đặt lại và người dùng có thể kết thúc quá trình này bằng cách gửi tín hiệu. Để thực hiện một cuộc tấn công, chỉ cần tạo các điều kiện để loại bỏ các đặc quyền (RUID) và gửi tín hiệu SIGSEGV hoặc SIGSTOP đến quy trình daemon của tài khoản.

Người dùng kết thúc phiên đồ họa và chuyển đến bảng điều khiển văn bản (Ctrl-Alt-F1).
Sau khi phiên đồ họa kết thúc, GDM cố gắng hiển thị màn hình đăng nhập, nhưng bị treo khi cố gắng nhận phản hồi từ daemon tài khoản.

Các tín hiệu SIGSEGV và SIGCONT được gửi từ bảng điều khiển đến quy trình daemon của tài khoản, khiến nó bị treo.

Bạn cũng có thể gửi tín hiệu trước khi thoát khỏi phiên đồ họa, nhưng bạn phải thực hiện với độ trễ để có thời gian kết thúc phiên và trước khi tín hiệu được gửi, GDM có thời gian để bắt đầu.

Yêu cầu đối với daemon tài khoản trong GDM không thành công và GDM gọi tiện ích gnome-initial-setup, trong đó giao diện của nó đủ để tạo tài khoản mới.

Lỗ hổng bảo mật được sửa trong GNOME 3.36.2 và 3.38.2. Việc khai thác lỗ hổng đã được xác nhận trong Ubuntu và các dẫn xuất của nó.

Fuente: https://securitylab.github.com


Để 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.