VxRail : Solution VxRail Manager pour corriger la faille de sécurité Apache Log4Shell (CVE-2021-44228, CVE-2021-45046 et CVE-2021-4104)
Summary:
Cet article décrit un script qui peut être exécuté sur VxRail Manager pour corriger la faille de sécurité Apache Log4Shell décrite dans CVE-2021-44228. CVE-2021-45046 et CVE-2021-4104
(article Dell DSN-2021-007, article VMware VMSA-2021-0028).
...
Please select a product to check article relevancy
This article applies to This article does not apply to
Apache Software Foundation a publié des informations sur un problème stratégique de faille de sécurité d’exécution du code à distance de la bibliothèque Log4j Apache, appelé Log4Shell, conformément à la base de données GitHub Advisory (également détaillée dans CVE-2021-44228, CVE-2021-45046 et CVE-2021-4104). VxRail Manager est exposé au problème décrit dans la faille de sécurité.
Remarque : deux CVE supplémentaires, CVE-2021-45046 et CVE-2021-4104, indiquent que la recommandation initiale pour corriger le problème décrit dans CVE-2021-44228 (Log4j 2.x) n’est pas un correctif complet.
Pour plus d’informations sur ces CVE, consultez les articles suivants :
Remarque : le script de cet article a été mis à jour vers la version 1.1.2, qui inclut les mesures correctives recommandées pour les trois CVE, CVE-2021-44228, CVE-2021-45046 et CVE-2021-4104.
Un problème supplémentaire a été détecté dans le script précédent, ce qui peut entraîner la restauration d’un fichier affecté sur VxRail Manager à partir d’une archive système. Ce problème a également été résolu dans cette version.
Si vous avez utilisé des scripts précédents fournis avec cet article, téléchargez le dernier script (1.1.2) et exécutez-le sur VxRail Manager pour vous assurer que vous disposez du correctif complet.
Exigences et champ d’application
Le champ d’application des mesures correctives décrites dans cet article est le suivant :
Cet article s’applique à VxRail Manager dans les versions VxRail 4.5.x, 4.7.x et 7.0.x, ainsi qu’à VxRail Manager dans les versions VCF 3.x et 4.x.
Le script et les étapes de mesure corrective fournis corrigent la faille de sécurité dans la machine virtuelle de l’appliance VxRail Manager uniquement.
Les autres composants en dehors de VxRail Manager, tels que vCenter Server Appliance (vCSA), NSX, etc., doivent être atténués séparément et ne figurent pas dans ce script.
En outre, le script ne corrige aucune application ni aucun service exécuté dans des machines virtuelles susceptibles d’être exposées à la faille de sécurité. Dell EMC recommande à tous les clients de vérifier auprès de leurs fournisseurs d’applications ou de logiciels les services exécutés dans les machines virtuelles afin de s’assurer qu’ils ne sont pas affectés.
Les liens vers les produits VMware concernés et les solutions de contournement potentielles sont détaillés dans l’article VMware VMSA suivant :
Le fichier fixlog4j-CVE-2021-44228-CVE-2021-45046-v-1-1-2.zip joint à cet article contient le script pour VxRail Manager uniquement.
Versions VxRail avec correctif inclus
Ce problème a été résolu dans les versions suivantes du logiciel VxRail :
Logiciel du package VxRail 7.0.320
Logiciel de l’appliance VxRail 4.7.541
Logiciel de l’appliance VxRail 4.5.471
Il est recommandé d’effectuer une mise à niveau vers une version du logiciel VxRail qui inclut le correctif. Le script est recommandé pour les clients qui ne peuvent pas effectuer la mise à niveau immédiatement.
Remarque : si votre cluster VxRail 7.0.xxx est géré par un vCenter géré par le client, reportez-vous à l’article suivant pour prendre en compte les considérations supplémentaires qui peuvent s’appliquer :
Pour résoudre ce problème, vous pouvez effectuer les opérations suivantes :
Téléchargez le fichier fixlog4j-CVE-2021-44228-CVE-2021-45046-v-1-1-2.zip joint à cet article.
Téléchargez le fichier .zip dans VxRail Manager à l’aide de l’utilisateur Mystic sur SCP (WinSCP est un exemple de client SCP pouvant être utilisé).
Connectez-vous à la console de la machine virtuelle VxRail Manager ou SSH à l’aide de l’utilisateur Mystic.
Accédez au répertoire dans lequel vous avez téléchargé le fichier .zip et extrayez-le avec la commande décompresser : 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
Rendez le script exécutable à l’aide de la commande chmod : mystic@vxrm:~> chmod +x fixlog4j-CVE-2021-44228-CVE-2021-45046.sh
Connectez-vous en tant qu’utilisateur root de VxRail Manager à l’aide de la commande su : mystic@vxrm:~> su - Password:
Assurez-vous que vous vous trouvez dans le même répertoire que celui dans lequel vous avez décompressé le package de scripts : vxrm:~ # cd /home/mystic vxrm:/home/mystic #
Exécutez le script : vxrm:/home/mystic # ./fixlog4j-CVE-2021-44228-CVE-2021-45046.sh
Exemple de sortie de script : 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
Remarque : la correction de tous les fichiers et le démarrage des services VxRail Manager peuvent prendre entre 5 et 10 minutes.
Attendez au moins 10 minutes si vous prévoyez d’effectuer l’une des étapes de validation manuelle ci-dessous.
Il existe plusieurs versions différentes de la bibliothèque lib4j-core en fonction de la version de VxRail Manager.
Le script a été conçu pour corriger correctement VxRail Manager, quelle que soit la version de lib4j-core incluse avec cette version de VxRail Manager.
La sortie ci-dessus de l’exécution du script peut afficher différents fichiers en cours de mise à jour en fonction de la version de lib4j-core incluse.
Remarque : si vous effectuez une mise à niveau VxRail vers une autre version de VxRail qui ne contient pas de correctif, ce script doit être exécuté une deuxième fois pour réappliquer la mesure corrective.
Remarque : l’atténuation complète de VxRail nécessite à la fois la solution de contournement vCenter Server Appliance (vCSA) de VMware et la mesure corrective sur VxRail Manager exécutée par ce script à implémenter.
Afin de corriger le problème, le script supprime le fichier JndiLookup.class des fichiers jar lib4j-core-*.
Un fichier jar est un format de packaging Java pour inclure plusieurs classes, métadonnées et autres programmes Java dans un seul fichier. Il ressemble au concept du fichier .zip et repose sur le format .zip. L’exécution du script confirme que chaque fichier jar a bien été mis à jour.
Pour valider manuellement le bon fonctionnement du script, vous pouvez vérifier si les fichiers jar log4j-core-* présents sur VxRail Manager contiennent toujours le fichier JndiLookup.class affecté. S’il a fonctionné, vous ne devriez voir aucune sortie vers les commandes ci-dessous, ce qui confirme que le fichier JndiLookup.class affecté n’est plus présent dans le fichier jar.
Validation avec commande automatisée
La commande suivante peut être exécutée sur VxRail Manager pour rechercher tous les fichiers log4j-core-xxxx.jar présents sur VxRail Manager et vérifier s’ils contiennent le fichier JndiLookup.class concerné :
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
Exemple de sortie (système mis à jour) :
/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
Dans l’exemple ci-dessus, le fichier JndiLookup.class ne se trouve pas dans le fichier jar, le script a fonctionné et la vérification a réussi.
Voici un exemple de sortie d’un système concerné qui doit être mis à jour :
/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
Dans l’exemple ci-dessus, le fichier JndiLookup.class concerné est toujours présent dans le fichier jar log4j-core-2.13.3.jar.
Validation avec vérification manuelle de chaque fichier
Pour identifier rapidement les fichiers log4j-core-xxxx.jar présents sur VxRail Manager, exécutez la commande suivante (cela formate également la sortie en commande utilisable) :
vxrm:/home/mystic # find / -name log4j-core*jar -print |grep -v log4jbak | awk '{print("unzip -l " $1 "|grep JndiLookup.class")}’
Exemple de sortie :
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
À partir de l’exemple de sortie ci-dessus, exécutez chaque commande manuellement pour voir si elles détectent le fichier JndiLookup.class concerné :
vxrm:/home/mystic # unzip -l /mystic/connectors/eservice/lib/log4j-core-2.13.0.jar|grep JndiLookup.class vxrm:/home/mystic #
Dans l’exemple ci-dessus, le fichier JndiLookup.class n’est pas présent dans le fichier jar, par conséquent, le script a fonctionné, et la vérification a réussi.
Remarque : Les noms de fichier jar de l’exemple de sortie ci-dessus peuvent varier en fonction de votre version de VxRail Manager. Utilisez l’exemple de sortie que vous recevez de la commande find ci-dessus.
Exemple de sortie d’un fichier jar toujours affecté et qui contient le fichier JndiLookup.class concerné :
Dans l’exemple ci-dessus, le fichier JndiLookup.class concerné est toujours présent dans le fichier jar log4j-core-2.4.1.jar.
Remarque : l’atténuation complète de VxRail nécessite à la fois la solution de contournement vCenter Server Appliance (vCSA) de VMware et la mesure corrective sur VxRail Manager effectuée par ce script à implémenter.