Esta correção envolve o uso de um script do Windows PowerShell que use comandos de script nativos do Windows.
Estas instruções podem ser aplicadas a qualquer tipo de instalação do DPA do Windows, como o aplicativo DPA, o Datastore do DPA e o agente DPA independente (instalados sozinhos em um servidor ou em outro tipo de servidor de aplicativos).
Consulte abaixo o aviso de segurança da Dell para obter mais informações sobre as vulnerabilidades do Apache Log4j:
Se você tiver dúvidas ou precisar de ajuda com essas instruções, entre em contato com o suporte técnico da Dell.
Etapas para a correção manual:
Nota:
Nota: opcionalmente, o texto completo do arquivo log4j_jndiremoval.txt está disponibilizado no fim destas instruções, que podem ser copiadas e coladas em um arquivo de texto.
Na janela do Windows PowerShell, se esta for uma instalação do Agent no aplicativo DPA ou no Datastore do DPA, o comando será:
dpa agent stop
Na janela do Windows PowerShell, se esta for uma instalação do agente DPA independente, o comando será:
\dpa stop
Exemplo:
C:\Program Files\EMC\DPA\agent\etc\dpa stop
Nota: o caminho de instalação do DPA deverá ser inserido novamente.
Na janela do Windows PowerShell, se esta for uma instalação do Agent no aplicativo DPA ou no Datastore do DPA, o comando será:
inicialização do agente dpa
Na janela do Windows PowerShell, se esta for uma instalação do agente DPA independente, o comando será:
\dpa start
Exemplo:
C:\Program Files\EMC\DPA\agent\etc\dpa start
Adendo:
O texto completo do script do Powershell está apresentado abaixo. Se não for possível acessar o arquivo anexo a este artigo da base de conhecimento, o texto poderá ser copiado ou colado da forma como está em um arquivo de texto (.txt) para uso nas etapas acima.
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' }
Se você tiver dúvidas ou precisar de ajuda com essas instruções, entre em contato com o suporte técnico da Dell.