VxRail: устранение уязвимости Apache Log4Shell в диспетчере (CVE-2021-44228, CVE-2021-45046)
Сводка: В этой статье описывается сценарий, который можно запустить на VxRail Manager для устранения уязвимости Apache Log4Shell, описанной в CVE-2021-44228, CVE-2021-45046 и CVE-2021-4104 (статья Dell DSN-2021-007, статья VMware VMSA-2021-0028). ...
Инструкции
Apache Software Foundation опубликовала информацию о критической проблеме уязвимости библиотеки Apache Log4j, делающей возможным удаленное выполнение кода, которая известна как Log4Shell в справочной базе данных GitHub (также подробно описана в CVE-2021-44228, CVE-2021-45046 и CVE-2021-4104). VxRail Manager подвержен проблеме, описанной в данной уязвимости.Примечание.
Дополнительные сведения об этих CVE см. в следующих статьях:
- Уязвимости безопасности Apache Log4j
- CVE-2021-45046
(Log4j 2,15)
- CVE-2021-4104
(Log4j 1,2)
В предыдущем сценарии была обнаружена дополнительная проблема, которая может привести к восстановлению затронутого файла в VxRail Manager из системного архива. Эта проблема также была устранена в этом выпуске.
Если вы использовали предыдущие сценарии, которые были предоставлены в этой статье, скачайте последний сценарий (1.1.2) и запустите его в VxRail Manager, чтобы убедиться в наличии полного исправления.
Требования и охват
В этой статье рассматриваются следующие шаги по исправлению.
- Эта статья актуальна для VxRail Manager в выпусках VxRail 4.5.x, 4.7.x и 7.0.x, а также для VxRail Manager в выпусках VCF 3.x и 4.x.
- Сценарий и действия по исправлению, представленные здесь, позволяют устранить уязвимость только в виртуальной машине устройства VxRail Manager.
- Для других компонентов за пределами VxRail Manager, таких как vCenter Server Appliance (vCSA), NSX и т. д., исправление необходимо выполнять отдельно, они не включены в этот сценарий.
- Кроме того, сценарий не исправляет приложения или службы, работающие внутри виртуальных машин, которые могут быть подвержены этой уязвимости. Dell EMC рекомендует всем заказчикам свериться обратиться к поставщикам приложений или программного обеспечения по поводу служб, работающих на виртуальных машинах, чтобы убедиться, что они не затронуты.
Ссылки на затронутые продукты VMware и возможные временные решения подробно описаны в следующей статье VMware VMSA:
VMware предоставляет сценарий для автоматизации восстановления в vCenter Server Appliance в следующей статье:
К этой статье прикреплен файл fixlog4j-CVE-2021-44228-CVE-2021-45046-v-1-1-2.zip который содержит сценарий только для VxRail Manager.
Выпуски VxRail с включенным исправлением
Эта проблема устранена в следующих выпусках ПО VxRail.
- Пакет ПО VxRail, выпуск 7.0.320
- ПО устройства VxRail, выпуск 4.7.541
- ПО устройства VxRail, выпуск 4.5.471
Рекомендуется модернизировать программное обеспечение VxRail до выпусков, которые содержат исправление.
Сценарий рекомендуется для пользователей, которые не могут выполнить модернизацию немедленно.Примечание.
Дополнительные замечания по устаревшим сценариям исправления:
Если ранее вы запускали более ранний сценарий обновления (более ранний, чем fixlog4j-CVE-2021-44228-CVE-2021-45046-v-1-1-2.zip) в VxRail Manager обратите внимание на следующее:
-
- Этот сценарий создает резервные копии исходных файлов jar с помощью "
.bak" и сохраняет их в исходных каталогах библиотеки. -
Эти
.bakПосле модернизации до VxRail 8.0.380 или более поздней версии файлы могут вызвать проблемы с запуском службы, так как они будут по ошибке загружены вместе с активными файлами в тот же каталог.
- Этот сценарий создает резервные копии исходных файлов jar с помощью "
Выполните следующие действия, чтобы переместить устаревшие .bak файлов и обеспечить нормальную работу системы:
- Проверка наличия существующих файлов .bak
find /mystic/connectors -name "log4j-core*.bak"
- Если .bak файлы найдены, переместите их в безопасное место.
mkdir -p /tmp/log4jbakfind /mystic/connectors -name "log4j-core*.bak" -type f -exec mv {} /tmp/log4jbak/ \;
- Check.bak файлы, не существующие в
/mystic/connectors, а затем перезапустите службу:
-
- Сценарий A. Если вы ЕЩЕ не выполнили модернизацию LCM:
- Перейдите к модернизации LCM. В процессе обновления все службы будут автоматически перезапущены.
- Сценарий A. Если вы ЕЩЕ не выполнили модернизацию LCM:
-
- Сценарий Б. Если вы УЖЕ завершили модернизацию LCM и столкнулись со сбоем подключаемого модуля VC:
- Перезапустите VxRM (VxRail Manager).
systemctl restart vmware-marvinservice runjars restart
- Перезапустите VxRM (VxRail Manager).
- Сценарий Б. Если вы УЖЕ завершили модернизацию LCM и столкнулись со сбоем подключаемого модуля VC:
Шаги по устранению проблемы.
Чтобы устранить проблему, выполните следующие действия.
- Скачайте файл
fixlog4j-CVE-2021-44228-CVE-2021-45046-v-1-1-2.zip, прикрепленный к этой статье. - Загрузите файл
.zipЗагрузите файл .zip в VxRail Manager в качестве пользователя mystic через SCP (WinSCP — пример клиента SCP, который можно использовать). - Войдите в консоль виртуальной машины VxRail Manager или подключитесь по SSH в качестве пользователя mystic.
- Измените каталог, в который был загружен файл
.zipи извлеките его с помощью команды распаковки:mystic@vxrm:~> unzip fixlog4j-CVE-2021-44228-CVE-2021-45046-v-1-1-2.zip Archive: fixlog4j-CVE-2021-44228-CVE-2021-45046-v-1-1-2.zip inflating: fixlog4j-CVE-2021-44228-CVE-2021-45046.sh
- Сделайте сценарий исполняемым с помощью команды chmod.
chmod:mystic@vxrm:~> chmod +x fixlog4j-CVE-2021-44228-CVE-2021-45046.sh
- Войдите в систему как привилегированный пользователь VxRail Manager с помощью команды su.
su:mystic@vxrm:~> su - Password:
- Убедитесь, что вы находитесь в том же каталоге, в котором распакован пакет сценария:
vxrm:~ # cd /home/mystic vxrm:/home/mystic #
- Запустите сценарий:
vxrm:/home/mystic # ./fixlog4j-CVE-2021-44228-CVE-2021-45046.sh
Пример выходных данных сценария:
Stop MARVIN and runjars service before patching the system /mystic/connectors/eservice/lib/log4j-core-2.13.0.jar is affected by CVE-2021-44228 and CVE-2021-45046, need to apply patch patching /mystic/connectors/eservice/lib/log4j-core-2.13.0.jar Successfully patched /mystic/connectors/eservice/lib/log4j-core-2.13.0.jar /mystic/connectors/cluster/lib/log4j-core-2.13.0.jar is affected by CVE-2021-44228 and CVE-2021-45046, need to apply patch patching /mystic/connectors/cluster/lib/log4j-core-2.13.0.jar Successfully patched /mystic/connectors/cluster/lib/log4j-core-2.13.0.jar To ensure there is no reload behavior, we need to pack the .war file as well. looks like /usr/lib/vmware-marvin/marvind/webapps/ROOT.war contains the bad log4j-core library WEB-INF/lib/log4j-core-2.13.0.jar Archive: /usr/lib/vmware-marvin/marvind/webapps/ROOT.war inflating: WEB-INF/lib/log4j-core-2.13.0.jar Patching WEB-INF/lib/log4j-core-2.13.0.jar in /usr/lib/vmware-marvin/marvind/webapps/ROOT.war Repack /usr/lib/vmware-marvin/marvind/webapps/ROOT.war updating: WEB-INF/lib/log4j-core-2.13.0.jar (deflated 11%) Clean up the ROOT folder... Always apply a reboot of MARVIN and runjars services restart MARVIN MARVIN restart successfully restart runjars runjars restart successfully
Восстановление всех файлов и запуск служб VxRail Manager может занять от 5 до 10 минут.Подождите не менее 10 минут, если вы планируете выполнить любой из описанных ниже этапов проверки вручную.
Существует несколько различных версий библиотеки lib4j-core в зависимости от выпуска VxRail Manager.
Сценарий разработан для правильного устранения проблем VxRail Manager независимо от версии lib4j-core, которая включена в эту версию VxRail Manager.
В приведенных выше выходных данных при запуске сценария может отображаться обновление различных файлов в зависимости от включенной версии lib4j-core.Примечание.
Ссылки на статьи VMware, в которых описаны обходные пути для продуктов и исправления, можно найти в VxRail: информация о Log4Shell (CVE-2021-44228/CVE-2021-45046/CVE-2021-4104) и средах VxRail
Этапы проверки
Для устранения проблемы сценарий удаляет JndiLookup.class файл из каталога lib4j-core-* jar Файлы.
jar-файл — это формат упаковки Java для включения нескольких классов, метаданных и других java-программ в один файл. По своей концепции он похож на .zip и основан на файле .zip format: Выполнение сценария проверяет, успешно ли обновлен каждый jar-файл.
Чтобы вручную убедиться, что сценарий сработал, можно проверить, log4j-core-* jar Файлы, присутствующие в VxRail Manager, по-прежнему содержат затронутые JndiLookup.class . Если все сработало, то не должно отобразиться выходные данные приведенных ниже команд, которые подтверждают затронутость JndiLookup.class Файла больше нет в JAR-файле.
JndiLookup.class файл исправлен в log4j-core-2.17.1.jar и более поздних версий, поэтому при попытке выполнить шаги проверки для этих файлов jar отображается JndiLookup.class Файл присутствует, но проблема не устранена. Можно не обращать внимания на то, что JndiLookup.class файл в исправленных версиях log4j-core.
Проверка с помощью автоматизированной команды
Следующую команду можно выполнить в VxRail Manager для сканирования всех log4j-core-xxxx.jar в VxRail Manager и проверьте, содержат ли они затронутые JndiLookup.class .
vxrm:/home/mystic # for myfile in `find / -name log4j-core*jar -print |grep -v log4jbak`; do echo $myfile; unzip -l $myfile | grep JndiLookup.class; done
Пример выходных данных (обновленная система):
/mystic/connectors/eservice/lib/log4j-core-2.13.0.jar /mystic/connectors/cluster/lib/log4j-core-2.13.0.jar /usr/lib/vmware-marvin/marvind/webapps/ROOT/WEB-INF/lib/log4j-core-2.13.0.jar
В приведенном выше примере JndiLookup.class Файла нет в JAR, поэтому скрипт сработал, и проверка прошла успешно.
Ниже приведен пример выходных данных затронутой системы, которую необходимо обновить:
/mystic/connectors/eservice/lib/log4j-core-2.13.3.jar 2892 2020-05-10 12:08 org/apache/logging/log4j/core/lookup/JndiLookup.class /mystic/connectors/cluster/lib/log4j-core-2.13.3.jar 2892 2020-05-10 12:08 org/apache/logging/log4j/core/lookup/JndiLookup.class /usr/lib/vmware-marvin/marvind/webapps/ROOT/WEB-INF/lib/log4j-core-2.13.3.jar 2892 2020-05-10 12:08 org/apache/logging/log4j/core/lookup/JndiLookup.class
В приведенном выше примере простой текст JndiLookup.class по-прежнему присутствует в файле log4j-core-2.13.3.jar jar-файл.
Ниже приведен пример выходных данных системы с исправленным или обновленным log4j-core библиотека, где видя JndiLookup.class файл можно игнорировать:
/usr/lib/vmware-marvin/marvind/webapps/ROOT/WEB-INF/lib/log4j-core-2.17.1.jar
3158 2021-12-27 17:30 org/apache/logging/log4j/core/lookup/JndiLookup.class
/mystic/connectors/eservice/lib/log4j-core-2.17.1.jar
3158 2021-12-27 17:30 org/apache/logging/log4j/core/lookup/JndiLookup.class
/mystic/connectors/cluster/lib/log4j-core-2.17.1.jar
3158 2021-12-27 17:30 org/apache/logging/log4j/core/lookup/JndiLookup.class
В приведенном выше примере вы можете увидеть JndiLookup.class в выходных данных, но исправление проблемы находится в log4j-core-2.17.1.jar.
Ручная проверка каждого файла
Для быстрой идентификации любых log4j-core-xxxx.jar файлов, присутствующих в VxRail Manager, выполните следующую команду (это также форматирует выходные данные в полезную команду):
vxrm:/home/mystic # find / -name log4j-core*jar -print |grep -v log4jbak | awk '{print("unzip -l " $1 "|grep JndiLookup.class")}'
Пример вывода:
unzip -l /mystic/connectors/eservice/lib/log4j-core-2.13.0.jar|grep JndiLookup.class unzip -l /mystic/connectors/cluster/lib/log4j-core-2.13.0.jar|grep JndiLookup.class unzip -l /usr/lib/vmware-marvin/marvind/webapps/ROOT/WEB-INF/lib/log4j-core-2.13.0.jar|grep JndiLookup.class
Из приведенного выше примера выходных данных выполните каждую команду вручную, чтобы проверить, обнаруживают ли затронутые JndiLookup.class .
vxrm:/home/mystic # unzip -l /mystic/connectors/eservice/lib/log4j-core-2.13.0.jar|grep JndiLookup.class vxrm:/home/mystic # vxrm:/home/mystic # unzip -l /mystic/connectors/cluster/lib/log4j-core-2.13.0.jar|grep JndiLookup.class vxrm:/home/mystic # vxrm:/home/mystic # unzip -l /usr/lib/vmware-marvin/marvind/webapps/ROOT/WEB-INF/lib/log4j-core-2.13.0.jar|grep JndiLookup.class vxrm:/home/mystic #
В приведенном выше примере метод JndiLookup.class Файла нет в JAR, поэтому скрипт сработал, и проверка прошла успешно.
Пример выходных данных файла jar, который все еще подвержен влиянию и содержит
JndiLookup.class .
vxrm:/home/mystic # unzip -l /mystic/connectors/cluster/lib/log4j-core-2.4.1.jar |grep JndiLookup.class 2576 2015-10-08 17:50 org/apache/logging/log4j/core/lookup/JndiLookup.class
В приведенном выше примере простой текст JndiLookup.class по-прежнему присутствует в файле log4j-core-2.4.1.jar jar-файл.