vpn
Well-Known Member
-
10/09/2019
-
20
-
52 bài viết
Biện pháp khắc phục lỗ hổng Print Spooler "thứ N" trên Windows khi chưa có bản vá
Gần đây nhất, Microsoft đã công bố một lỗ hổng mới trên Windows đối với dịch vụ Print Spooler được gán mã "CVE-2021-36958" và hiện tại chưa có bản vá. Thực sự, mình không biết đây là lỗ hổng thứ bao nhiêu đối với dịch vụ này nữa. Vậy nên người dùng có thể khắc phục tạm thời lỗ hổng này với các cách bên dưới đây.
1. Chặn lưu lượng mạng qua các cổng SMB (Server Message Block)
Việc khai thác lỗ hổng này thông qua các cổng SMB để kết nối với một máy in được chia sẻ (shared printer) độc hại. Nếu các kết nối đi đến tài nguyên SMB bị chặn, thì lỗ hổng này có thể được hạn chế đối với các máy in SMB độc hại được lưu trữ ở mạng bên ngoài. Kẻ tấn công mạng cục bộ có thể chia sẻ máy in qua cổng SMB, điều này sẽ không bị ảnh hưởng bởi bất kỳ quy tắc (rule) về lưu lượng SMB nào.
2. Cấu hình PackagePointAndPrintServer và PackagePointAndPrintOnly
Trên Windows có 1 Group Policy (GPO) được gọi là "Package Point and Print - Approved servers" với các giá trị trong registry là HKLM\Software\Policies\Microsoft\Windows NT\Printers\PackagePointAndPrint\PackagePointAndPrintServerList và HKLM\Software\Policies\Microsoft\Windows NT\Printers\PackagePointAndPrint\ListofServers. Chính sách này có thể hạn chế người dùng không phải quản trị viên có thể sử dụng máy chủ nào để cài đặt máy in qua Point and Print. Cấu hình chính sách này để ngăn việc cài đặt máy in từ các máy chủ tùy ý.
Để đảm bảo rằng Windows chỉ cố gắng cài đặt máy in Package Point và Print, và do đó hạn chế kết nối máy in với danh sách máy chủ được phê duyệt, bạn cũng phải đặt value HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Printers\PackagePointAndPrint thành 1. Cài đặt GPO tương ứng với giá trị này là "Use only Package Point and print". Người dùng hãy mở Group Policy Editor bằng cách chạy dịch vụ gpedit.msc trên hộp thoại Run. Sau đó vào User Configuration > Administrative Templates > Control Panel > Printers > Use only Package Point and print > Edit > Chọn Enabled > Apply. Tương tự cũng Enabled với Package Point and Print - Approved servers
3. Chặn khả năng modify thư mục print spooler driver
Có thể hạn chế lỗ hổng này bằng cách ngăn tài khoản SYSTEM có thể sửa đổi các thành phần trong thư mục C:\Windows\System32\spool\drivers.
Để kích hoạt tính năng này, sử dụng đoạn mã PowerShell sau:
Để revert lại tính năng trên:
4. Stop và Disable dịch vụ Print Spooler
Biện pháp này có vẻ "cục súc" nhưng chắc chắn hiệu quả, chỉ đơn giản là vô hiệu hoá dịch vụ Print Spooler với 2 câu lệnh PowerShell ngắn gọn sau:
Ref:
1. https://www.kb.cert.org/vuls/id/131152
2. https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-36958
1. Chặn lưu lượng mạng qua các cổng SMB (Server Message Block)
Việc khai thác lỗ hổng này thông qua các cổng SMB để kết nối với một máy in được chia sẻ (shared printer) độc hại. Nếu các kết nối đi đến tài nguyên SMB bị chặn, thì lỗ hổng này có thể được hạn chế đối với các máy in SMB độc hại được lưu trữ ở mạng bên ngoài. Kẻ tấn công mạng cục bộ có thể chia sẻ máy in qua cổng SMB, điều này sẽ không bị ảnh hưởng bởi bất kỳ quy tắc (rule) về lưu lượng SMB nào.
2. Cấu hình PackagePointAndPrintServer và PackagePointAndPrintOnly
Trên Windows có 1 Group Policy (GPO) được gọi là "Package Point and Print - Approved servers" với các giá trị trong registry là HKLM\Software\Policies\Microsoft\Windows NT\Printers\PackagePointAndPrint\PackagePointAndPrintServerList và HKLM\Software\Policies\Microsoft\Windows NT\Printers\PackagePointAndPrint\ListofServers. Chính sách này có thể hạn chế người dùng không phải quản trị viên có thể sử dụng máy chủ nào để cài đặt máy in qua Point and Print. Cấu hình chính sách này để ngăn việc cài đặt máy in từ các máy chủ tùy ý.
Để đảm bảo rằng Windows chỉ cố gắng cài đặt máy in Package Point và Print, và do đó hạn chế kết nối máy in với danh sách máy chủ được phê duyệt, bạn cũng phải đặt value HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Printers\PackagePointAndPrint thành 1. Cài đặt GPO tương ứng với giá trị này là "Use only Package Point and print". Người dùng hãy mở Group Policy Editor bằng cách chạy dịch vụ gpedit.msc trên hộp thoại Run. Sau đó vào User Configuration > Administrative Templates > Control Panel > Printers > Use only Package Point and print > Edit > Chọn Enabled > Apply. Tương tự cũng Enabled với Package Point and Print - Approved servers
Có thể hạn chế lỗ hổng này bằng cách ngăn tài khoản SYSTEM có thể sửa đổi các thành phần trong thư mục C:\Windows\System32\spool\drivers.
Để kích hoạt tính năng này, sử dụng đoạn mã PowerShell sau:
Mã:
$Path = "C:\Windows\System32\spool\drivers"
$Acl = (Get-Item $Path).GetAccessControl('Access')
$Ar = New-Object System.Security.AccessControl.FileSystemAccessRule("System", "Modify", "ContainerInherit, ObjectInherit", "None", "Deny")
$Acl.AddAccessRule($Ar)
Set-Acl $Path $Acl
Để revert lại tính năng trên:
Mã:
$Path = "C:\Windows\System32\spool\drivers"
$Acl = (Get-Item $Path).GetAccessControl('Access')
$Ar = New-Object System.Security.AccessControl.FileSystemAccessRule("System", "Modify", "ContainerInherit, ObjectInherit", "None", "Deny")
$Acl.RemoveAccessRule($Ar)
Set-Acl $Path $Acl
4. Stop và Disable dịch vụ Print Spooler
Biện pháp này có vẻ "cục súc" nhưng chắc chắn hiệu quả, chỉ đơn giản là vô hiệu hoá dịch vụ Print Spooler với 2 câu lệnh PowerShell ngắn gọn sau:
Mã:
Stop-Service -Name Spooler -Force
Set-Service -Name Spooler -StartupType Disabled
Ref:
1. https://www.kb.cert.org/vuls/id/131152
2. https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-36958
Chỉnh sửa lần cuối:
14/09/2021 (bản vá mới tới năm 2021 không ăn thua )— mình cập nhật tới 8/2022 vẫn bị như thường.