Control socket libvirt có quyền ghi toàn cục cho phép nâng quyền trên Ubuntu

Lưu ý: Dữ liệu này chỉ có tính chất tham khảo, phục vụ nghiên cứu an ninh mạng.CyStack khuyến nghị người dùng không sử dụng các thông tin này nhằm các mục đích bất hợp pháp

Lỗ hổng CVE-2020-15708 là gì?

Lỗ hổng CVE-2020-15708 là lỗ hổng Incorrect Permission Assignment for Critical Resource ảnh hưởng tới libvirt (phiên bản bị ảnh hưởng: < 6.0.0-0ubuntu8.3). Lỗ hổng này được xếp hạng ở mức Nghiêm trọng, với điểm CVSS 9.3. Hiện chưa đủ dữ liệu để xác định lỗ hổng này đã bị khai thác hay chưa.

Giới thiệu chung

Dữ liệu gốc

Gói libvirt của Ubuntu trong 20.04 LTS đã tạo một control socket với quyền đọc và ghi cho mọi người. Kẻ tấn công có thể sử dụng socket này để ghi đè các tệp tùy ý hoặc thực thi mã tùy ý.

Sản phẩm và phạm vi ảnh hưởng

  • Ubuntu libvirt trên nhánh Ubuntu 20.04 LTS bị ảnh hưởng khi gói có phiên bản nhỏ hơn 6.0.0-0ubuntu8.3.
  • Ubuntu xác định các gói liên quan gồm libvirt-daemon, libvirt-daemon-system và libvirt0.
  • Ubuntu phát hành bản sửa cho nhánh 20.04 LTS tại phiên bản 6.0.0-0ubuntu8.3 của các gói nêu trên.
  • Không có nhánh Ubuntu bổ sung nào được xác nhận trong dữ liệu bị ảnh hưởng và thông báo Ubuntu đã kiểm tra. Không được suy luận rằng các nhánh khác tự động không bị ảnh hưởng.
  • Red Hat mô tả đây là lỗi đặc thù Ubuntu và đánh giá các gói libvirt của Red Hat Enterprise Linux cùng Red Hat Advanced Virtualization không bị ảnh hưởng do sử dụng polkit để xác thực.

Chi tiết kỹ thuật

Gói libvirt của Ubuntu tạo UNIX domain control socket với quyền đọc và ghi cho mọi người, thuộc nhóm lỗi CWE-732 về gán quyền không đúng cho tài nguyên quan trọng. Kẻ tấn công có quyền truy cập cục bộ có thể truy cập libvirt qua socket này và gửi các yêu cầu điều khiển hoặc RPC. Theo mô tả của bản ghi, việc này có thể dẫn đến ghi đè tệp tùy ý hoặc thực thi mã tùy ý, đồng thời có thể nâng quyền lên mức quản trị vì dịch vụ libvirt có thể chạy chương trình với quyền administrator. Bản ghi công khai không xác định RPC cụ thể, đường dẫn mã, payload hay primitive ghi tệp được sử dụng. Red Hat đánh giá đây là lỗi đặc thù của cách đóng gói Ubuntu; các gói libvirt của Red Hat sử dụng polkit để xác thực các yêu cầu.

Khả năng khai thác

Đây là lỗi có thể khai thác cục bộ, không phải lỗ hổng được mô tả là có thể khai thác trực tiếp qua mạng. Các đánh giá được cung cấp đều mô tả độ phức tạp thấp và không yêu cầu tương tác người dùng. Đánh giá của Canonical mô hình hóa trường hợp không yêu cầu quyền trước, trong khi đánh giá của NVD mô hình hóa yêu cầu quyền thấp; thông báo Ubuntu chỉ xác nhận điều kiện có kẻ tấn công cục bộ. Bản ghi được cung cấp không xác định trạng thái khai thác thực tế, public exploit hoặc chiến dịch ransomware; việc không có thông tin này không chứng minh rằng không tồn tại hoạt động khai thác.

Tác động kỹ thuật

Lỗi cho phép truy cập trái phép vào control interface của libvirt từ cục bộ, sau đó có thể ghi đè tệp tùy ý hoặc thực thi mã tùy ý. Hậu quả có thể bao gồm nâng quyền lên quyền quản trị, thay đổi cấu hình hoặc dữ liệu mà dịch vụ có thể truy cập, và làm suy giảm tính bí mật, toàn vẹn hoặc khả dụng của máy chủ. Phạm vi tấn công được mô tả là cục bộ; tác động cụ thể đến các guest hoặc workload do libvirt quản lý chưa được bản ghi xác định. Sự khác biệt giữa các đánh giá về quyền khởi đầu cũng cần được lưu ý khi phân loại exposure, nhưng không làm thay đổi việc phải cập nhật gói bị ảnh hưởng.

Tác động đến tổ chức

Nếu khai thác thành công, kẻ tấn công cục bộ có thể thay đổi các tệp tùy ý trên máy chủ, thực thi mã với quyền cao và làm thay đổi trạng thái của dịch vụ hoặc hệ thống. Điều này có thể gây mất tính toàn vẹn cấu hình, làm lộ dữ liệu mà tiến trình bị chiếm quyền có thể truy cập hoặc làm gián đoạn dịch vụ. Mức độ ảnh hưởng đến workload máy ảo cụ thể không được bản ghi mô tả, vì vậy không nên mặc định rằng mọi guest đều bị ảnh hưởng. Red Hat ghi nhận các gói libvirt của họ không bị ảnh hưởng bởi lỗi đặc thù Ubuntu này.

Cách khắc phục

  1. Cập nhật các gói libvirt-daemon, libvirt-daemon-system và libvirt0 trên Ubuntu 20.04 LTS lên phiên bản 6.0.0-0ubuntu8.3.
  2. Thực hiện reboot sau bản cập nhật theo hướng dẫn của Ubuntu để mọi thay đổi cần thiết được áp dụng.
  3. Xác minh lại phiên bản thực tế của các gói và quyền của UNIX domain control socket sau khi cập nhật. Chỉ coi hệ thống là đã xử lý khi các gói liên quan đã đạt phiên bản sửa lỗi.
  4. Bản ghi không cung cấp workaround tạm thời cụ thể. Không nên tự coi việc thay đổi quyền socket hoặc biện pháp hạn chế truy cập là bản sửa đã được nhà cung cấp xác nhận; nếu phải trì hoãn cập nhật, hãy xem đó chỉ là biện pháp giảm rủi ro tạm thời và đánh giá khả năng ảnh hưởng đến hoạt động libvirt.

Cách phát hiện

  1. Kiểm kê các máy Ubuntu đang cài đặt libvirt-daemon, libvirt-daemon-system hoặc libvirt0, sau đó đối chiếu phiên bản gói với ranh giới bị ảnh hưởng và bản sửa lỗi.
  2. Kiểm tra quyền của UNIX domain control socket do dịch vụ libvirt đang sử dụng, bảo đảm socket không còn quyền đọc hoặc ghi cho mọi người. Không suy đoán đường dẫn socket nếu chưa xác định từ cấu hình và trạng thái dịch vụ thực tế.
  3. Rà soát audit log hoặc telemetry cục bộ cho các lần truy cập bất thường vào control socket, thay đổi tệp ngoài quy trình quản trị thông thường hoặc việc thực thi chương trình với quyền quản trị. Đây là các điểm kiểm tra phòng ngừa, không phải IOC đã được xác nhận.
  4. Sau khi cập nhật, xác minh lại phiên bản của cả các gói libvirt liên quan và khởi động lại hệ thống theo hướng dẫn của Ubuntu để áp dụng đầy đủ thay đổi.
Nguồn (8)
Tìm hiểu thêm

Kiểm tra chuyên sâu cùng giải pháp quản lý rủi ro Web toàn diện

Giải pháp CyStack VulnScan liên tục phát hiện tài sản, xác minh lỗ hổng và giúp đội ngũ bảo mật ưu tiên khắc phục cho toàn bộ doanh nghiệp.

Khám phá các giải pháp khác liên quan