Jump to content

Printspooler - Neue Sicherheitslücke


Recommended Posts

vor 3 Stunden schrieb mwiederkehr:

 

 

In den Baseline Security Recommendations ist die GPO zum Blockieren von Remoteverbindungen auf den Spooler übrigens (noch) nicht drin.

Bei Servern sollte eine GPO, die den Service deaktiviert, effektiver sein. PrintServer sollte man natürlich anders behandeln ;-)

Link to post

Inzwischen scheinen doppelte Verhinderungen ja normal zu sein. damit der eine nicht aus Versehen was kaputt macht ;)

hab ich neulich schon bei smbv1 gesehen: deinstallation ist gut, aber du blockst ja nicht smbv1 das ist schlecht.

  • Like 1
Link to post
vor einer Stunde schrieb NorbertFe:

Inzwischen scheinen doppelte Verhinderungen ja normal zu sein. damit der eine nicht aus Versehen was kaputt macht ;)

hab ich neulich schon bei smbv1 gesehen: deinstallation ist gut, aber du blockst ja nicht smbv1 das ist schlecht.

Und wenn man später Fehler sucht, bringen solche Sachen Freude ;-)

Link to post
vor 4 Stunden schrieb falkebo:

Ist einem von euch eigentlich aufgefallen, dass der Spooler Service in einer Windows Server 2019 Core Installation garnicht vorhanden ist?

 

... jup - nur wenn er wirklich als Printserver läuft ... ;-)   ... endlich mal ein Vorteil für die Core-Versionen.  

Link to post

Wenn ich dieses Gepfriemel mit dem Registry Kram sehe, frag ich mich, ob bei MS das Wissen von GPP/GPO usw. inzwischen verloren gegangen ist. "Früher"™ hätten sie entweder gleich ein adm/admx mitgeliefert oder zumindest bereitgestellt. :/

 

; ADM Template Creation/Modifying Date: 07.07.2021 09:42:56
; ADM Template Author: NorbertFe
; ADM Template created by gpaddit
; MCSEBoard.de

Class Machine 
	CATEGORY "Drucker" 

		POLICY "CVE-2021-34527 'PrintNightmare'" 
			#IF VERSION  >=  4
				SUPPORTED !!CVE-2021-34527 
			#ENDIF

			EXPLAIN !!Descr_CVE-2021-34527 
			KEYNAME "Software\Policies\Microsoft\Windows NT\Printers\PointAndPrint" 

			PART "Restrict Driver Installation to Administrators" Checkbox 
				VALUENAME "RestrictDriverInstallationToAdministrators" 
				VALUEON NUMERIC 1 

				VALUEOFF NUMERIC 0 

			END PART 

		END POLICY ;CVE-2021-34527 'PrintNightmare' 

	END CATEGORY ;Drucker 


[STRINGS]

CVE-2021-34527="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-34527"
Descr_CVE-2021-34527="https://support.microsoft.com/de-de/topic/kb5005010-restricting-installation-of-new-printer-drivers-after-applying-the-july-6-2021-updates-31b91c02-05bc-4ada-a7ea-183b129578a7\n\nSecurity updates released on and after July 6, 2021 contain protections for a remote code execution exploit in the Windows Print Spooler service known as 'PrintNightmare', documented in CVE-2021-34527. After installing these and later Windows updates, non-administrators are only allowed to install signed print drivers to a print server. By default, administrators can install both signed and unsigned printer drivers to a print server. Signed drivers are trusted by the installed root certificates in the system's Trusted Root Certification Authorities.\n\nWe recommend that you urgently install the July 2021 Out-of-band updates on all supported Windows client and server operating systems, starting with devices that currently host the print spooler service. In addition, optionally configure the RestrictDriverInstallationToAdministrators registry value to prevent non-administrators from installing printer drivers on a print server.\n\nNote:  After installing the July 2021 Out-of-band update, all users are either administrators or non-administrators, delegates will no longer be honored.\n\nPrior to installing the July 6, 2021, and newer Windows Updates containing protections for CVE-2021-34527, the printer operators' security group could install both signed and unsigned printer drivers on a printer server. After installing such updates, delegated admin groups like printer operators can only install signed printer drivers. Administrator credentials will be required to install unsigned printer drivers on a printer server going forward.\n\n\nWhy clients are allowed to install printer drivers from CVE-2021-34527 patched printer servers\nIn a scenario where a client is connecting to a Print server to download print drivers (Shared network Printer scenario), the changes we made as part of our fix do not come into play on the client.\n\nFor an unsigned driver, the user will see a warning and a request to elevate if the user is not admin.\n\nFor a signed driver, the driver will install successfully irrespective of admin or not.\n\nThis means a signed driver will be successfully installed on the client machine without honoring RestrictDriverInstallationToAdministrators registry key.\n\nExplanation\n\nThis behavior is by design. The attack vector and protections in CVE-2021-34527 reside in the code path that installs a printer driver to a Server. The workflow used to install a printer driver from a trusted print server on a client computer uses a different path. In summary, protections in CVE-2021-34527 including the RestrictDriverInstallationToAdministrators registry key do not impact this scenario."

 

Ich stell mich grad an: Wo genau is der Download für dieses OOB Update zu finden? Per WSUS kommts noch nicht und importieren kann man es auch noch nicht. Auf der obigen Seite gibts auch keinen Downloadlink und bei weiterführenden Seiten sind nur die alten Downloads verlinkt. :/ Hílfe :)

Edited by NorbertFe
  • Thanks 2
  • Sad 1
Link to post
vor 42 Minuten schrieb NorbertFe:

Ich stell mich grad an: Wo genau is der Download für dieses OOB Update zu finden?

Auf der verlinkten Seite (https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-34527) unter "Security Updates". Dort von "CVSS" zu "Updates" umschalten. Das Release Date ist überall auf dem 1. Juli, aber die verlinkten Updates sind aktuell.

 

Hier die Links für 2019:

https://support.microsoft.com/de-de/topic/july-6-2021-kb5004947-os-build-17763-2029-out-of-band-71994811-ff08-4abe-8986-8bd3a4201c5d

https://www.catalog.update.microsoft.com/Search.aspx?q=KB5004947

  • Like 1
Link to post

Ich hatte Langeweile (und wollte was testen). Vielleicht kann es ja jemand brauchen. :)

 

# Wird keine OrganizationalUnit angegeben, wird nur das GPO erstellt und nicht gelinkt
# ADMX / ADML muss bei NorbertFe ausgeliehen werden aus 
# https://www.mcseboard.de/topic/220286-printspooler-neue-sicherheitsl%C3%BCcke/?do=findComment&comment=1421870
# Die ADMX / ADML müssen im Scriptpfad liegen

param(
    [parameter(Mandatory=$true)]
    [string]
    [ValidateSet("Domain", "AllDomainsInForest")]
    $Scope,

    [parameter(Mandatory=$true)]
    [string]
    $GPOName,

    [parameter(Mandatory=$false)]
    [string[]]
    $OrganizationalUnit
)

if([string]::IsNullOrEmpty($PSScriptRoot)){
    $ScriptPath = Split-Path -Path $psISE.CurrentFile.FullPath
} else{
    $ScriptPath = $PSScriptRoot
}

if($Scope -eq "Domain"){
    $Domains = Get-ADDomain -Current LocalComputer
} else{
    $ADForest = Get-ADForest -Current LocalComputer
    $Domains = $ADForest.Domains
}

foreach($Domain in $Domains){
    Write-Output $("`tPrüfe Domain `"{0}`"..." -f $Domain)
    $curDomain = Get-ADDomain -Identity $Domain
    $curPolDefPath = -join ("\\", $curDomain.DNSRoot, "\SYSVOL\", $curDomain.DNSRoot, "\Policies\PolicyDefinitions")
    $locPolDefPath = Join-Path -Path $env:windir -ChildPath "PolicyDefinitions"
    if(Test-Path -Path $curPolDefPath -PathType Container){
        # Central Store
        Write-Output "`t`tPolicyDefinitions im Central Store gefunden -> Kopiere ADMX/ADML..."
        Copy-Item -Path (Join-Path -Path $ScriptPath -ChildPath "PrintNightmare.admx") `
            -Destination $curPolDefPath `
            -Force
        if(Test-Path -Path (Join-Path -Path $curPolDefPath -ChildPath "en-us") -PathType Container){
            Copy-Item -Path (Join-Path -Path $ScriptPath -ChildPath "PrintNightmare.adml") `
                -Destination (Join-Path -Path $curPolDefPath -ChildPath "en-us") `
                -Force
        }
        if(Test-Path -Path (Join-Path -Path $curPolDefPath -ChildPath "de-de") -PathType Container){
            Copy-Item -Path (Join-Path -Path $ScriptPath -ChildPath "PrintNightmare.adml") `
                -Destination (Join-Path -Path $curPolDefPath -ChildPath "de-de") `
                -Force
        }
    } else{
        # Local Store
        Write-Output "`t`tPolicyDefinitions im Local Store gefunden... -> Kopiere ADMX/ADML..."
        Copy-Item -Path (Join-Path -Path $ScriptPath -ChildPath "PrintNightmare.admx") `
            -Destination $locPolDefPath `
            -Force
        if(Test-Path -Path (Join-Path -Path $locPolDefPath -ChildPath "en-us") -PathType Container){
            Copy-Item -Path (Join-Path -Path $ScriptPath -ChildPath "PrintNightmare.adml") `
                -Destination (Join-Path -Path $locPolDefPath -ChildPath "en-us") `
                -Force
        }
        if(Test-Path -Path (Join-Path -Path $locPolDefPath -ChildPath "de-de") -PathType Container){
            Copy-Item -Path (Join-Path -Path $ScriptPath -ChildPath "PrintNightmare.adml") `
                -Destination (Join-Path -Path $locPolDefPath -ChildPath "de-de") `
                -Force
        }
    }
    Write-Output $("`t`tSuche Gruppenrichtlinien Objekt `"{0}`"..." -f $GPOName)
    $curGPO = Get-GPO -Domain $curDomain.DNSRoot `
        -All | Where-Object { $_.DisplayName -eq $GPOName }
    if($null -eq $curGPO){
        Write-Output $("`t`tGruppenrichtlinien Objekt `"{0}`" nicht gefunden. Erstelle neues GPO..." -f $GPOName)
        $curGPO = New-GPO -Name $GPOName `
            -Domain $curDomain.DNSRoot `
            -Comment "Fix PrintNightmare"

        if($null -ne $OrganizationalUnit){
            foreach($OU in $OrganizationalUnit){
                Get-ADOrganizationalUnit -SearchBase $curDomain.DistinguishedName `
                    -Filter 'Name -eq $OU' |
                        ForEach-Object {
                            Write-Output $("`t`t`tVerlinke `"{0}`" an `"{1}`"" -f $GPOName, $_.DistinguishedName)
                            New-GPLink -Guid $curGPO.Id `
                                -Domain $curDomain.DNSRoot `
                                -Target $_.DistinguishedName |
                                    Out-Null
                        }
            }
        } else{
            Write-Output $("`t`tKeine Organisationseinheit angegeben! Gruppenrichtlinienobjekt `"{0}`" muss händisch verknüpft werden..." -f $GPOName)
        }
    } else{
        Write-Output $("`t`tGruppenrichtlinien Objekt `"{0}`" gefunden..." -f $GPOName)
    }

    Write-Output $("`t`tSetze `"RestrictDriverInstallationToAdministrators`" in `"{0}`" auf `"1`"..." -f $GPOName)
    Set-GPRegistryValue -Guid $curGPO.Id `
        -Key "HKLM\Software\Policies\Microsoft\Windows NT\Printers\PointAndPrint" `
        -ValueName "RestrictDriverInstallationToAdministrators" `
        -Type DWord `
        -Value 1 |
            Out-Null
    Write-Output $("`tDomain `"{0}`" abgeschlossen..." -f $Domain)
}

 

Edited by testperson
  • Like 1
  • Thanks 4
Link to post

Hatte der Kram auch noch was gutes. ;) du konntest powershell üben und ich hab seit Jahren mal wieder adm und admx gebastelt. ;) werd mich doch wieder als gpo MVP bewerben. Dann kann ich die ganzen Artikel bei ms ergänzen ;)

  • Like 3
  • Haha 4
Link to post

Der Test war eigentlich "nur", ob die PowerShell bzw. "*-GPRegistryValue" mit den von dir gebauten bzw. selbstgebauten ADM/ADMX zurecht kommt. .. und dann kam der innere Monk. .. und dann hab ich mich da irgendwie reingesteigert. ;)

  • Haha 2
Link to post
vor 59 Minuten schrieb testperson:

Ich hatte Langeweile (und wollte was testen). Vielleicht kann es ja jemand brauchen. :)

 

Nette Sache :) Funktioniert auf jeden Fall und spart das Warten auf die GPMC. Habs jetzt zweimal getestet

1. Neues GPO ohne Verlinkung (check)

2. Bestehendes GPO mit Vorhandener Verlinkung (check)

  • Like 3
Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...