VxRail: Apache Log4Shell 취약성(CVE-2021-44228, CVE-2021-45046 및 CVE-2021-4104) 문제를 해결하기 위한 VxRail Manager 해결 방법
Summary: 이 문서에서는 CVE-2021-44228, CVE-2021-45046 및 CVE-2021-4104(Dell 문서 DSN-2021-007, VMware 문서 VMSA-2021-0028)에 설명된 Apache Log4Shell 취약성을 해결하기 위해 VxRail Manager에서 실행할 수 있는 스크립트를 간략히 설명합니다.
Instructions
Apache Software Foundation은 GitHub 권고 데이터베이스(CVE-2021-44228, CVE-2021-45046 및 CVE-2021-4104에도 자세히 설명되어 있음)에 따라 Log4Shell로 알려진 중요한 Apache Log4j 라이브러리 원격 코드 실행 취약성 문제에 대한 정보를 게시했습니다. VxRail Manager는 이 취약성에 설명된 문제에 노출되어 있습니다.
참고: 두 개의 추가 CVE(CVE-2021-45046 및 CVE-2021-4104)가 보고되었으며 이는 CVE-2021-44228(Log4j 2.x)에 설명된 문제를 해결하기 위한 원래 권장 사항이 완전한 해결 방법이 아님을 나타냅니다.
이러한 CVE에 대한 자세한 내용은 다음 문서를 참조하십시오.
- Apache Log4j 보안 취약성
- CVE-2021-45046 (Log4j 2.15)
- CVE-2021-4104 (Log4j 1.2)
참고: 이 문서의 스크립트는 세 가지 CVE(CVE-2021-44228, CVE-2021-45046, CVE-2021-4104) 모두에 권장되는 문제 해결을 포함하는 버전 1.1.2로 업데이트되었습니다.
이전 스크립트에서 추가 문제가 발견되었으며 이로 인해 영향을 받는 파일이 시스템 아카이브에서 VxRail Manager에 복원될 수 있습니다. 해당 문제는 이 릴리스에서도 해결되었습니다.
이 문서와 함께 제공된 이전 스크립트를 사용한 경우 최신 스크립트(1.1.2)를 다운로드하고 VxRail Manager에서 실행하여 완전한 수정 사항이 있는지 확인합니다.
요구 사항 및 범위
이 문서의 문제 해결 단계에서 다루는 범위는 다음과 같습니다.
- 이 문서는 VxRail 4.5.x, 4.7.x 및 7.0.x 릴리스의 VxRail Manager와 VCF 3.x 및 4.x 릴리스의 VxRail Manager에 적용됩니다.
- 제공된 스크립트 및 문제 해결 단계는 VxRail Manager 어플라이언스 VM의 취약성만 해결합니다.
- vCSA(vCenter Server Appliance), NSX 등과 같은 VxRail Manager 외부의 다른 구성 요소는 취약성을 별도로 완화해야 하며 이 스크립트에는 포함되어 있지 않습니다.
- 또한 이 스크립트는 취약성에 노출될 수 있는 VM 내에서 실행되는 애플리케이션 또는 서비스의 문제를 해결하지 않습니다. Dell EMC는 모든 고객이 해당 애플리케이션 또는 소프트웨어 공급업체에 VM에서 실행되는 서비스가 영향을 받지 않는지 확인할 것을 권장합니다.
영향을 받는 VMware 제품 및 잠재적인 해결 방법에 대한 링크는 다음 VMware VMSA 문서에 자세히 설명되어 있습니다.
VMware는 다음 문서에서 vCenter Server Appliance의 문제 해결을 자동화하는 스크립트를 제공합니다.이 문서에는 VxRail Manager 전용 스크립트가 포함된 fixlog4j-CVE-2021-44228-CVE-2021-45046-v-1-1-2.zip 파일이 첨부되어 있습니다.
수정 사항이 포함된 VxRail 릴리스
이 문제는 다음 VxRail 소프트웨어 릴리스에서 해결되었습니다.
- VxRail 패키지 소프트웨어 7.0.320
- VxRail 어플라이언스 소프트웨어 4.7.541
- VxRail 어플라이언스 소프트웨어 4.5.471
수정 사항이 포함된 VxRail 소프트웨어 릴리스로 업그레이드하는 것이 좋습니다.
이 스크립트는 즉시 업그레이드할 수 없는 고객에게 권장됩니다.
참고: VxRail 7.0.xxx 클러스터가 고객 관리 vCenter에 의해 관리되는 경우 적용될 수 있는 추가 고려 사항은 다음 문서를 참조하십시오.
문제 해결 단계
문제를 해결하려면 다음 단계를 수행합니다.- 이 문서에 첨부된 fixlog4j-CVE-2021-44228-CVE-2021-45046-v-1-1-2.zip 파일을 다운로드합니다.
- SCP를 통해 mystic 사용자를 사용하여 .zip 파일을 VxRail Manager에 업로드합니다(WinSCP는 사용할 수 있는 SCP 클라이언트의 예시).
- mystic 사용자를 사용하여 VxRail Manager VM 콘솔 또는 SSH에 로그인합니다.
- .zip 파일을 업로드한 디렉토리로 변경하고 unzip 명령을 사용하여 압축을 풉니다.
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 명령을 사용하여 스크립트를 실행할 수 있도록 합니다.
mystic@vxrm:~> chmod +x fixlog4j-CVE-2021-44228-CVE-2021-45046.sh - su 명령을 사용하여 VxRail Manager 루트 사용자로 로그인합니다.
mystic@vxrm:~> su -
비밀번호: - 스크립트 패키지의 압축을 푼 디렉토리와 동일한 디렉토리에 있는지 확인합니다.
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
아래의 수동 검증 단계를 수행하려면 최소 10분 정도 기다립니다.
VxRail Manager 릴리스에 따라 lib4j-core 라이브러리의 여러 버전이 있습니다.
스크립트는 VxRail Manager의 해당 버전에 포함된 lib4j-core 버전과 관계없이 VxRail Manager를 올바르게 수정하도록 설계되었습니다.
스크립트를 실행하여 얻은 위의 출력은 포함된 lib4j-core 버전에 따라 업데이트되는 여러 파일을 표시할 수 있습니다.
참고: 수정 사항이 포함되지 않은 다른 VxRail 빌드로 VxRail 업그레이드를 수행하는 경우 이 스크립트를 다시 실행하여 문제 해결을 다시 적용해야 합니다.
참고: VxRail을 완전히 완화하려면 VMware의 vCSA(vCenter Server Appliance) 해결 방법과 이 스크립트에 의해 수행되는 VxRail Manager의 문제 해결을 모두 구현해야 합니다.
VMware 제품 및 수정 사항에 대한 해결 방법을 설명하는 VMware 문서 링크는 VxRail: Log4Shell(CVE-2021-44228) 및 VxRail 환경에 대한 정보에서 찾을 수 있습니다.
검증 단계
이 스크립트는 이 문제를 해결하기 위해 lib4j-core-* jar 파일에서 JndiLookup.class 파일을 제거합니다.jar 파일은 단일 파일에 여러 클래스, 메타데이터 및 기타 java 프로그램을 포함하기 위한 Java 패키징 형식입니다. 이 파일은 개념상 .zip 파일과 유사하며 .zip 형식을 기반으로 합니다. 스크립트 실행은 각 jar 파일이 성공적으로 업데이트되었는지 검증합니다.
스크립트가 작동했는지 수동으로 검증하려면 VxRail Manager에 있는 log4j-core-* jar 파일에 영향을 받는 JndiLookup.class 파일이 여전히 포함되어 있는지 확인하면 됩니다. 제대로 작동되었다면 영향을 받는 JndiLookup.class 파일이 jar 파일에 더 이상 없음을 확인하는 아래 명령에 대한 출력이 표시되지 않아야 합니다.
자동화된 명령을 통한 검증
다음 명령을 VxRail Manager에서 실행하여 VxRail Manager에 있는 모든 log4j-core-xxxx.jar 파일을 검사하고 영향을 받는 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 파일에 있습니다.
각 파일의 수동 검사를 통한 검증
VxRail Manager에 있는 모든 log4j-core-xxxx.jar 파일을 빠르게 식별하려면 다음 명령을 실행합니다(이 명령은 출력 형식을 가용 명령으로 지정하기도 함).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 파일 이름은 사용 중인 VxRail Manager 버전에 따라 다를 수 있습니다. 위의 find 명령에서 받은 샘플 출력을 사용합니다.
여전히 영향을 받고 있는 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 파일에 있습니다.
참고: VxRail을 완전히 완화하려면 VMware의 vCSA(vCenter Server Appliance) 해결 방법과 이 스크립트에 의해 수행하는 VxRail Manager의 문제 해결을 모두 구현해야 합니다.