Data Protection Advisor: Ręczne usuwanie luk w zabezpieczeniach Apache Log4j za pomocą skryptu Windows PowerShell (CVE-2021-44228, CVE-2021-45046)

Samenvatting: Ten artykuł zawiera instrukcje dotyczące ręcznego rozwiązywania problemów z agentem DPA działającym w węźle Microsoft Windows, którego dotyczą luki Apache Log4j (CVE-2021-44228 i CVE-2021-45046). ...

Dit artikel is van toepassing op Dit artikel is niet van toepassing op Dit artikel is niet gebonden aan een specifiek product. Niet alle productversies worden in dit artikel vermeld.

Instructies

To rozwiązanie obejmuje wykorzystanie skryptu Windows PowerShell, który korzysta z natywnych poleceń skryptów systemu Windows.

Instrukcje te mogą być stosowane do każdego rodzaju instalacji DPA systemu Windows, w tym aplikacji DPA, DPA Datastore i autonomicznego agenta DPA (zainstalowanego samodzielnie na serwerze lub innym typie serwera aplikacji).

Zapoznaj się z poniższym Poradnikiem bezpieczeństwa Dell, aby uzyskać więcej informacji na temat luk w zabezpieczeniach Apache Log4j:

Aby uzyskać pytania lub pomoc w związku z tymi instrukcjami, skontaktuj się z działem pomocy technicznej firmy Dell.

Czynności do ręcznego korygowania:

Uwaga:

  • instrukcje te wymagają, aby na instalacji systemu Windows zainstalowano program PowerShell i aby był on dostępny (ustawienie domyślne).
  • Wymagane są uprawnienia i dostęp administratora systemu Windows.

 

  1. Pobierz plik tekstowy dołączony do tego artykułu bazy wiedzy, log4j_jndiremoval.txt.

Uwaga: na końcu niniejszych instrukcji znajduje się również pełny tekst pliku log4j_jndiremoval.txt, który można skopiować i wkleić do pliku tekstowego.

  1. Skopiuj lub przenieś plik tekstowy do węzła systemu Windows, którego dotyczy problem.
  2. Zmień nazwę pliku tekstowego i zmień rozszerzenie pliku z .txt na .ps1. Uwaga: konieczne może być przejście do opcji folderu Eksploratora Windows, wyświetlenie i zaznaczenie pola wyboru, aby wyświetlić „rozszerzenia nazw plików” przed zmianą nazwy pliku.
  3. Otwórz okno PowerShell systemu Windows. W menu kliknij opcję Wyszukaj i wpisz PowerShell. Powinien zostać wyświetlony komunikat „Windows PowerShell”. Kliknij prawym przyciskiem myszy pozycję Windows PowerShell i wybierz opcję „Uruchom jako administrator”.

pic_01.JPG

 

  1. Zatrzymaj usługę agenta DPA. W tym celu należy użyć przystawki Usługi systemu Windows lub wiersza poleceń przy użyciu Windows PowerShell.

W oknie Windows PowerShell, jeśli jest to instalacja agenta w aplikacji DPA lub DPA Datastore, polecenie brzmi:

dpa agent stop

W oknie Windows PowerShell, jeśli jest to autonomiczna instalacja agenta DPA, polecenie brzmi:

\dpa stop

Przykład:   
C:\Program Files\EMC\DPA\agent\etc\dpa stop

  1. W oknie Windows PowerShell zmień katalogi na katalog z plikiem skryptu.

pic_03.JPG

 

  1. Uruchom skrypt w oknie PowerShell przy użyciu opcji weryfikacji, która skanuje i weryfikuje pliki, których dotyczy problem. Polecenie to:    
.\log4j_jndiremoval.ps1 -verify

pic_04.JPG

  1. Po naciśnięciu klawisza Enter skrypt zostanie uruchomiony, a następnie wyświetli monit o ścieżkę do instalacji DPA. Wprowadź pełną ścieżkę do instalacji DPA.

pic_06.JPG

 

  1. Po naciśnięciu klawisza Enter skrypt uruchomi się i zidentyfikuje pliki, które są narażone.

pic_07.JPG

 

  1. Ponownie uruchom skrypt w oknie PowerShell, pomijając opcję Weryfikacja. W tym trybie skrypt skanuje i naprawia wszystkie pliki, których dotyczy problem. Polecenie to:   
.\log4j_jndiremoval.ps1

Uwaga: należy ponownie wprowadzić ścieżkę instalacji DPA.

pic_09.JPG

 

  1. Po naciśnięciu klawisza Enter skrypt skanuje i naprawia znalezione zagrożone pliki.

pic_10.JPG

 

  1. W tym momencie działania naprawcze zostały zakończone.
  2. Opcjonalnie można to sprawdzić ponownie, uruchamiając skrypt jeszcze raz. Uruchom skrypt w oknie PowerShell, korzystając z opcji Weryfikacja, która skanuje i weryfikuje pliki, których dotyczy problem. Polecenie to:
.\log4j_jndiremoval.ps1 -verify

pic_14.JPG

 

  1. Uruchom usługę agenta DPA. Można to zrobić za pomocą przystawki Usługi systemu Windows lub wiersza poleceń przy użyciu Windows PowerShell.

W oknie Windows PowerShell, jeśli jest to instalacja agenta w aplikacji DPA lub DPA Datastore, polecenie brzmi:

dpa agent start

W oknie Windows PowerShell, jeśli jest to autonomiczna instalacja agenta DPA, polecenie brzmi:

\dpa start

Przykład:   
C:\Program Files\EMC\DPA\agent\etc\dpa start

 

Uzupełnienie:
poniżej znajduje się pełny tekst skryptu PowerShell. Jeśli nie można uzyskać dostępu do pliku dołączonego do tej bazy wiedzy, ten tekst można skopiować i wkleić w postaci pliku tekstowego (.txt) w celu wykorzystania w powyższych krokach.

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' }

 



Aby uzyskać pytania lub pomoc w związku z tymi instrukcjami, skontaktuj się z działem pomocy technicznej firmy Dell.

Artikeleigenschappen
Artikelnummer: 000194869
Artikeltype: How To
Laatst aangepast: 18 aug. 2022
Versie:  4
Vind antwoorden op uw vragen via andere Dell gebruikers
Support Services
Controleer of uw apparaat wordt gedekt door Support Services.