Chi tiết về lỗ hổng PrintNightmare: khai thác, vá và giải quyết tạm thời

18:12 | 02/08/2021

Các mã nguồn khai thác lỗ hổng thực thi mã từ xa trong Windows Print Spooler liên tục được công khai trong thời gian vừa qua có thể cho phép kẻ tấn công kiểm soát toàn bộ hệ thống. Còn được biết đến với tên gọi PrintNightmare, lỗ hổng này gây ảnh hưởng tới tất cả các phiên bản hệ điều hành Windows.

Microsoft đã bắt đầu phát hành các bản cập nhật bảo mật khẩn cấp để khắc phục lỗ hổng thực thi mã từ xa bị tiết lộ công khai trong chức năng in của Windows. Lỗ hổng này có thể cho phép kẻ tấn công kiểm soát hoàn toàn các hệ thống mục tiêu.

Lỗ hổng được định danh CVE-2021-34527, nằm trong dịch vụ Windows Print Spooler và các mã khai thác công khai cho lỗ hổng này đang được cải tiến liên tục. Các tổ chức được khuyến khích triển khai các bản vá lỗi càng sớm càng tốt hoặc vô hiệu hóa tính năng in từ xa đến cho đến khi các bản vá lỗi có thể được áp dụng.

Sự nhầm lẫn về lỗ hổng bảo mật dẫn đến việc mã khai thác bị tiết lộ công khai

Bản cập nhật hàng tháng vào tháng 6/2021 của Microsoft bao gồm bản vá cho một lỗ hổng khác trong dịch vụ Windows Print Spooler được định danh là CVE-2021-1675, ban đầu được mô tả là vấn đề leo thang đặc quyền cục bộ (LPE). Phát hiện ra lỗ hổng bảo mật được ghi nhận là các chuyên gia Zhipeng Huo của Tencent Security, Piotr Madej của Afine và Yunhai Zhang của Nsfocus.

Vào ngày 29/6/2021, hai nhà nghiên cứu bảo mật Zhiniang Peng và Xuefeng Li từ Sangfor đã công bố một phân tích về CVE-2021-1675, trong đó họ chứng minh rằng lỗ hổng cũng có thể được khai thác để thực thi mã từ xa (RCE) chứ không chỉ leo thang đặc quyền. Các nhà nghiên cứu cho biết họ cũng đã phát hiện ra lỗ hổng một cách độc lập trước khi nó được báo cáo cho Microsoft như một phần của phân tích bảo mật lớn hơn về chức năng in của Windows. Cả hai dự định sẽ trình bày những phát hiện của họ, bao gồm các lỗ hổng bổ sung, tại hội nghị bảo mật BlackHat USA sắp tới, trong một buổi nói chuyện có tiêu đề "Diving Into Spooler: Khám phá các lỗ hổng LPE và RCE trong Windows Printer".

Điều mà các nhà nghiên cứu Sangfor đã không nhận ra khi họ đăng bản phân tích CVE-2021-1675 RCE của mình dưới tên PrintNightmare, đó là họ thực sự đang mô tả một lỗ hổng khác nhìn rất giống, nhưng cuối cùng có khác biệt khi khai thác nên bản vá tháng 6 của Microsoft không thể vá lỗ hổng này. Microsoft đã xem xét báo cáo của họ và cập nhật CVE-2021-1675 để mô tả nó là một lỗ hổng RCE thay vì LPE và cũng tạo một bản ghi mới cho lỗ hổng PrintNightmare mới, gán cho nó định danh CVE-2021-34527.

Cách khai thác và vectơ tấn công của PrintNightmare

Zhiniang Peng và Xuefeng Li đã gỡ bỏ mã khai thác của họ khi nhận ra sự nhầm lẫn về lỗ hổng, nhưng đã quá muộn và các nhà nghiên cứu khác bắt đầu phân tích và mở rộng về nó. Hiện có ít nhất ba cách khai thác công khai cho lỗ hổng này và một số có thêm vectơ tấn công.

Khai thác ban đầu đã sử dụng Giao thức từ xa cho hệ thống in (Print System Remote Protocol  - MS RPRN), giới hạn việc khai thác đối với các máy chủ Windows được cấu hình máy chủ quản lý miền Active Directory hoặc máy Windows 10 với các tuỳ chỉnh khác mặc định như: User Account Control (UAC) bị vô hiệu hóa hoặc tuỳ chọn PointAndPrint NoWarningNoElevationOnInstall được bật.

Sau đó, một nhà nghiên cứu khác được biết đến trên mạng có tên Cube0x0 đã tìm ra cách khai thác cũng có thể được sử dụng thông qua Giao thức từ xa bất đồng bộ cho hệ thống In (Print System Asynchronous Remote Protocol - MS PAR). Theo nhà phát triển Mimikatz, Benjamin Delpy, điều này giúp cho việc khai thác PrintNightmare có thể hoạt động trên nhiều máy Windows có cấu hình mặc định hơn, không chỉ máy chủ quản lý miền Active Directory. Delpy đã triển khai chức năng trong Mimikatz, một công cụ mã nguồn mở phổ biến với những người kiểm tra thâm nhập cũng như tin tặc độc hại.

Với thông tin công khai về lỗ hổng và mã khai thác ban đầu, các nhà nghiên cứu bảo mật tin rằng chỉ còn là vấn đề thời gian cho đến khi những khai thác này sẽ được sử dụng trong tự nhiên, nếu chúng chưa được sử dụng. Các chuyên gia của Microsoft nói rằng tất cả các phiên bản Windows đều bị ảnh hưởng và việc khai thác lỗ hổng này đã được phát hiện.

Bản vá lỗ hổng và các biện pháp tạm thời của PrintNightmare

Microsoft đã phát hành các bản vá lỗi Patch Tuesday cho một số lượng lớn các phiên bản Windows bị ảnh hưởng, nhưng chưa có cho Windows 10 1607, Windows Server 2012 và Windows Server 2016. Ngoài ra, các nhà nghiên cứu từ 0patch.com đã phát hành các bản vá miễn phí cho các phiên bản Windows bị thiếu và bảo vệ chống lại tất cả các vectơ tấn công hiện đã biết.

Theo khuyến cáo của các Trung tâm Điều phối, các bản cập nhật có sẵn từ Microsoft chỉ giảm thiểu các biến thể thực thi mã từ xa của các khai thác chứ không phải các biến thể leo thang đặc quyền cục bộ. Đó là lý do tại sao các nhà phân tích CERT/CC cũng khuyên người dùng nên áp dụng các cách giải quyết thủ công sau do Microsoft đề xuất:

Giải pháp tạm thời 1: Vô hiệu hoá dịch vụ Print Spooler

Sử dụng các lệnh Powershell sau để vô hiệu hoá dịch vụ Print Spooler:

Stop-Service -Name Spooler -Force

Set-Service -Name Spooler -StartupType Disabled

Giải pháp tạm thời 2: Tắt tính năng in từ xa đến thông qua Group Policy

Thao tác theo các bước sau để tắt tính năng in từ xa thông qua Group Policy: Truy cập Computer Configuration / Administrative Templates / Printers; Tắt tuỳ chọn “Allow Print Spooler to accept client connections” để chặn tấn công từ xa; Khởi động lại dịch vụ Print Spooler để nhận cấu hình từ Group Policy.

Tác động của giải pháp tạm thời: Chính sách này sẽ chặn vectơ tấn công từ xa bằng cách ngăn các hoạt động in từ xa đến. Hệ thống sẽ không còn hoạt động như một máy chủ in, nhưng vẫn có thể gửi lệnh in tới máy in được gắn trực tiếp.