Lỗi theo symbolic link trong Red Hat libvirt có thể chuyển quyền sở hữu tệp tùy ý

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-2026-77159 là gì?

Lỗ hổng CVE-2026-77159 là lỗ hổng UNIX Symbolic Link (Symlink) Following ảnh hưởng tới Red Hat Enterprise Linux 10, Red Hat Enterprise Linux 8 và Red Hat Enterprise Linux 9. Lỗ hổng này được xếp hạng ở mức Trung bình, với điểm CVSS 5.5. Lỗ hổng này đã có mã hoặc bằng chứng khai thác công khai, nhưng điều đó chưa xác nhận việc khai thác trong thực tế.

Giới thiệu chung

Dữ liệu gốc

Đã phát hiện một lỗi theo symbolic link trong hàm qemuTPMEmulatorPrepareHost() của libvirt. Hàm này sử dụng chown() theo đường dẫn trên logfile của swtpm mà không kiểm tra symbolic link. Kẻ tấn công cục bộ có quyền truy cập tài khoản swtpm có thể thay logfile bằng một symlink, khiến libvirtd (chạy với quyền root) chuyển quyền sở hữu một tệp tùy ý cho người dùng swtpm.

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

• Red Hat Enterprise Linux 10: thành phần libvirt được Red Hat đánh dấu Fix deferred. Bản ghi chuẩn hóa xác định trạng thái mặc định là affected; chưa có fixed release hoặc erratum cụ thể được cung cấp. • Red Hat Enterprise Linux 9: thành phần libvirt được đánh dấu Fix deferred. Chưa có fixed release hoặc erratum cụ thể được cung cấp. • Red Hat Enterprise Linux 8: thành phần virt:rhel/libvirt được đánh dấu Fix deferred. Chưa có fixed release hoặc erratum cụ thể được cung cấp. • Red Hat Enterprise Linux 6: Red Hat đánh dấu Not affected vì vulnerable code không hiện diện. • Red Hat Enterprise Linux 7: Red Hat đánh dấu Out of support scope. Red Hat cho biết các sản phẩm ở trạng thái này có thành phần bị tác động nhưng chưa được phân tích đầy đủ và nên được giả định là affected.

Red Hat cũng lưu ý rằng, trừ khi có tuyên bố rõ ràng khác, các bản trước đó trong mọi minor update stream của sản phẩm được liệt kê nên được xem là dễ bị ảnh hưởng. Trạng thái fix deferred không bảo đảm bản sửa sẽ được phát hành.

Chi tiết kỹ thuật

Lỗi nằm trong hàm qemuTPMEmulatorPrepareHost() của libvirt, tại phần xử lý logfile của swtpm trong src/qemu/qemu_tpm.c. Hàm dễ bị tấn công sử dụng chown() theo đường dẫn mà không xác minh tệp đích không phải là symbolic link. Vì thư mục log có thể được tài khoản swtpm ghi, một kẻ tấn công cục bộ có quyền truy cập tài khoản này có thể thay logfile bằng symlink trỏ tới một tệp khác.

Khi libvirtd chạy với quyền root khởi động một QEMU domain sử dụng TPM mô phỏng, thao tác chown() có thể đi theo symlink và chuyển quyền sở hữu tệp đích cho swtpm:swtpm. Tài khoản swtpm sau đó có thể sửa tệp đích, tạo ra rủi ro thay đổi dữ liệu hoặc cấu hình mà tài khoản này vốn không được phép sở hữu. Bản sửa upstream thay thế thao tác theo đường dẫn bằng việc mở logfile với O_NOFOLLOW rồi dùng fchown() trên file descriptor. Các bản dựng downstream cụ thể nào đã tích hợp bản sửa vẫn cần được xác minh theo trạng thái gói của nhà cung cấp.

Khả năng khai thác

Lỗ hổng có thể bị khai thác cục bộ, không cần tương tác của người dùng và yêu cầu quyền truy cập ở mức thấp vào tài khoản swtpm. Điều kiện thực thi gồm khả năng thay logfile bằng symbolic link và việc libvirtd khởi động QEMU domain có TPM mô phỏng.

Bản ghi được cung cấp đánh dấu trạng thái public exploit là có, nhưng không cung cấp mã khai thác, chuỗi khai thác cụ thể hoặc bằng chứng về một chiến dịch khai thác. Không có tên chiến dịch, nạn nhân hoặc sự cố cụ thể nào được xác định trong bằng chứng hiện có.

Tác động kỹ thuật

Lỗi cho phép libvirtd chạy với quyền root chuyển quyền sở hữu của tệp đích tùy ý cho swtpm:swtpm khi logfile bị thay bằng symlink. Tài khoản swtpm sau đó có thể sửa tệp đó, vì vậy hậu quả chính là mất tính toàn vẹn của dữ liệu hoặc cấu hình.

Phạm vi tác động vẫn nằm trong hệ thống bị khai thác và không tự động cấp quyền root cho kẻ tấn công. Việc khai thác yêu cầu quyền truy cập cục bộ vào tài khoản swtpm, khả năng thay logfile và một lần khởi động QEMU domain có TPM mô phỏng. Bằng chứng hiện có không thiết lập rằng lỗi trực tiếp làm lộ dữ liệu hoặc gây từ chối dịch vụ, nhưng một tệp đích nhạy cảm có thể tạo ra hậu quả vận hành hoặc bảo mật đáng kể nếu bị sửa.

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

• Có thể làm thay đổi tính toàn vẹn của tệp mà tài khoản swtpm vốn không được phép sở hữu, bao gồm các tệp được libvirt hoặc hệ điều hành bảo vệ. • Có thể làm suy yếu ranh giới quyền giữa tài khoản swtpm bị giới hạn và các tệp thuộc root. • Tác động thực tế phụ thuộc vào tệp mà symlink trỏ tới, quyền của tài khoản swtpm sau khi nhận quyền sở hữu, cấu hình TPM mô phỏng và trạng thái SELinux. • Bằng chứng hiện có không cho thấy việc đọc dữ liệu hoặc gây gián đoạn dịch vụ là kết quả trực tiếp của lỗi này.

Cách khắc phục

  1. Giữ SELinux ở chế độ enforcing trên Red Hat Enterprise Linux và không chuyển sang permissive hoặc tắt SELinux. Red Hat cho biết miền swtpm_t hạn chế khả năng tạo symlink tới các loại tệp tùy ý và làm giảm phạm vi thay đổi quyền sở hữu.
  2. Theo dõi và áp dụng bản cập nhật Red Hat khi bản sửa cho nhánh triển khai tương ứng được phát hành. Red Hat hiện đánh dấu các thành phần libvirt bị ảnh hưởng trên Red Hat Enterprise Linux 10 và Red Hat Enterprise Linux 9, cùng virt:rhel/libvirt trên Red Hat Enterprise Linux 8, là Fix deferred; chưa có fixed release cụ thể để nêu.
  3. Nếu tự xây dựng libvirt, sử dụng bản mã đã tích hợp bản sửa upstream chuyển từ chown() theo đường dẫn sang mở tệp với O_NOFOLLOW và gọi fchown() trên file descriptor. Cần xác minh bản dựng thực tế đã chứa thay đổi này.
  4. Kiểm tra các logfile swtpm hiện có và xử lý các symbolic link bất thường theo quy trình quản trị tệp an toàn. Không nên coi việc xóa symlink đơn lẻ là thay thế cho bản sửa hoặc biện pháp SELinux.
  5. Đánh giá riêng các hệ thống Red Hat Enterprise Linux 7 vì trạng thái out of support scope không cung cấp một bản sửa được bảo đảm; cân nhắc loại bỏ hoặc vô hiệu hóa thành phần bị tác động nếu phù hợp với vận hành.

Cách phát hiện

  1. Kiểm kê các hệ thống chạy libvirt trên các nhánh Red Hat Enterprise Linux được liệt kê là bị ảnh hưởng, đồng thời ghi nhận bản dựng gói thực tế thay vì chỉ dựa vào số phiên bản upstream.
  2. Kiểm tra cấu hình domain để xác định nơi sử dụng TPM mô phỏng và xác định các logfile swtpm tương ứng.
  3. Kiểm tra các logfile đó bằng phép kiểm tra không theo symlink, đồng thời xem chúng có phải là symbolic link hoặc có quyền sở hữu bất thường hay không.
  4. Xác minh SELinux đang ở chế độ enforcing và tiến trình swtpm bị giới hạn trong miền swtpm_t. Đây là biện pháp giảm tác động, không phải bằng chứng rằng hệ thống đã được sửa.
  5. Nếu có audit telemetry, rà soát các thay đổi quyền sở hữu bất thường đối với tệp liên quan đến swtpm hoặc libvirtd. Đây chỉ là biện pháp giám sát phòng ngừa; nguồn hiện có không nêu IOC hoặc log event đặc thù nào.
Nguồn (25)
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á CyStack VulnScan