Cette correction implique l’utilisation d’un script Windows PowerShell qui utilise des commandes de rédaction de scripts Windows natives.
Ces instructions peuvent être appliquées à n’importe quel type d’installation de Windows DPA, y compris l’application DPA, le datastore DPA et l’agent DPA autonome (installé seul sur un serveur ou sur un autre type de serveur d’applications).
Consultez l’avis de sécurité Dell ci-dessous pour plus d’informations sur les vulnérabilités Apache Log4j :
Pour toute question ou assistance concernant ces instructions, contactez le support technique Dell.
Étapes de correction manuelle :
Remarque :
Remarque : vous pouvez également fournir le texte intégral du fichier log4j_jndiremoval.txt à la fin de ces instructions, qui peuvent être copiées et collées dans un fichier texte.
Dans la fenêtre Windows PowerShell, s’il s’agit d’une installation d’agent sur l’application DPA ou le datastore DPA, la commande est la suivante :
dpa agent stop
Dans la fenêtre Windows PowerShell, s’il s’agit d’une installation d’agent DPA autonome, la commande est la suivante :
\dpa stop
Exemple :
C:\Program Files\EMC\DPA\agent\etc\dpa stop
Remarque : le chemin d’installation de DPA doit être saisi à nouveau.
Dans la fenêtre Windows PowerShell, s’il s’agit d’une installation d’agent sur l’application DPA ou le datastore DPA, la commande est la suivante :
dpa agent start
Dans la fenêtre Windows PowerShell, s’il s’agit d’une installation d’agent DPA autonome, la commande est la suivante :
\dpa start
Exemple :
C:\Program Files\EMC\DPA\agent\etc\dpa start
Addendum :
Vous trouverez ci-dessous le texte complet du script PowerShell. Si le fichier joint à cet article de la base de connaissance n’est pas accessible, ce texte peut être copié et collé tel qu’il est dans un fichier texte (.txt) à utiliser dans les étapes ci-dessus.
param ( [switch]$verify ) '--------------------------------------------------------------------------' '--------------------------------------------------------------------------' ' Data Protection Advisor CVE-2021-44228, CVE-2021-45046 Patcher 1.1 ' ' Developer : Pankaj Pande(p.pande@dell.com) ' ' Release : 29 Dec 2021 ' '--------------------------------------------------------------------------' 'Welcome to CVE-2021-44228, CVE-2021-45046 Patching Tool.' 'This utility will assist you in patching Data Protection Advisor for CVE-2021-44228 and CVE-2021-45046 on a Windows system.' "Special Note : The tool automates remediation steps for all internal components. Following remediation, validation checks are also run. While this tool remediates these vulnerabilities, all available information from Apache on log4j continues to be monitored. If new CVEs are discovered, Dell Technologies' Engineering teams will clarify impact and new remediation steps where necessary. If needed this tool will be updated to include the new remediation steps." '---------------------------------------------------------------------------' function List-JndiLookup { Param ( [string[]]$JarFiles, [string] $FilenameToRemove ) #initiate the .net namespace add-type -AssemblyName 'System.IO.Compression.filesystem' "The number of files to be processed is : $($JarFiles.Count)" #list the files we are processing # them later foreach ($JarFile in $JarFiles) { "$JarFile" } $processedFiles = 0; $skippedFiles = 0; foreach ($JarFile in $JarFiles) { # Open the jar for updating (.jar files are just .zip files) try { $ProcessJarFile = [io.compression.zipfile]::Open($JarFile,'Update') } catch { # Error Handling } "Checking $JarFile for $FilenameToRemove" $totalFilesInJar = ($ProcessJarFile.Entries | Where FullName -Match $FilenameToRemove).Count if($totalFilesInJar -gt 0){ $processedFiles++ } #close Zip try { $ProcessJarFile.Dispose() } catch { # Error Handling } } if ( $processedFiles -gt 0) { Write-Host "$processedFiles file(s) found vulnerable" -fore red Write-Host "Finished...Please make sure to run the patching on this sytem" -fore red } else { Write-Host "$processedFiles file(s) found vulnerable" -fore green Write-Host "Finished...No Action needed" -fore green } } function Remove-JndiLookup { Param ( [string[]]$JarFiles, [string] $FilenameToRemove ) #initiate the .net namespace add-type -AssemblyName 'System.IO.Compression.filesystem' "The number of files to be processed is : $($JarFiles.Count)" #list the files we are processing # them later foreach ($JarFile in $JarFiles) { "$JarFile" } "Starting patching/Removel Process" $processedFiles = 0; $skippedFiles = 0; foreach ($JarFile in $JarFiles) { # Open the jar for updating (.jar files are just .zip files) try { $ProcessJarFile = [io.compression.zipfile]::Open($JarFile,'Update') } catch { # Error Handling } "Checking $JarFile for $FilenameToRemove" $totalFilesInJar = ($ProcessJarFile.Entries | Where FullName -Match $FilenameToRemove).Count if($totalFilesInJar -gt 0){ "Deleting unwanted file $FilenameToRemove from $JarFile" ($ProcessJarFile.Entries | Where FullName -Match $FilenameToRemove).Delete() $processedFiles++ } else { "File $FilenameToRemove not found inside $JarFile, this may have already been deleted." $skippedFiles++ } # Clean up / close the zip try { $ProcessJarFile.Dispose() } catch { # Error Handling } } "$processedFiles file(s) processed`n$skippedFiles file(s) skipped" Write-Host "Finished..." -fore green } if ( $verify ) { Write-Host "Running in dry-run mode. Will not process any files" -fore green } else { Write-Host "Running in fix mode. Will patch files that are found affected" -fore red } $dpa_path = Read-Host "Enter the DPA location " Write-Host "Running in : '$dpa_path' " -fore green if ($verify) { List-JndiLookup -JarFiles (Get-ChildItem -Exclude 'tmp' -Recurse -Path "$dpa_path" -Filter 'dpa*.jar' | ? { $_.FullName -inotmatch 'tmp' }).FullName -FilenameToRemove 'JndiLookup.class' } else { Remove-JndiLookup -JarFiles (Get-ChildItem -Exclude 'tmp' -Recurse -Path "$dpa_path" -Filter 'dpa*.jar' | ? { $_.FullName -inotmatch 'tmp' }).FullName -FilenameToRemove 'JndiLookup.class' }
Pour toute question ou assistance concernant ces instructions, contactez le support technique Dell.