
JAR, WAR 및 EAR 아카이브에서 Log4j CVE-2021-44228 취약점의 JndiLookup.class 지표를 스캔하며, PowerShell 기반 재귀 스캔 및 버전 인식 보고 기능을 제공합니다.
원본 스크립트 및 저장소: https://github.com/CERTCC/CVE-2021-44228_scanner
수정자: Alex Pena
JndiLookup.class의 존재를 검색하여 jar, war, ear 파일을 스캔함으로써, log4j CVE-2021-44228 문제에 취약한 애플리케이션을 탐지할 수 있습니다.
발견된 모든 파일은 해당 애플리케이션이 취약한지 확인하기 위해 조사할 가치가 있습니다. JndiLookup.class가 존재하는 경우, log4j는 일반적으로 jar 파일 이름에 버전을 포함합니다. 예를 들어, log4j-core-2.14.1.jar에서 발견되면 취약한 애플리케이션을 나타냅니다. 또는 log4j-core-2.16.jar도 발견될 수 있는데, 이는 JndiLookup 코드가 log4j 2.16 버전에 여전히 존재하지만 기본적으로 비활성화되어 있기 때문입니다. 자세한 내용은 VU#930724를 참조하십시오.
매개변수
-Force 시스템 및 숨김 파일 검색 허용 (Force 매개변수는 보안 제한을 재정의하지 않음)
-Verbose 추가 스캔 출력 및 메시지
현재 디렉터리 스캔
.\checkjndi.ps1
test_folder 디렉터리 스캔, 추가 출력 및 시스템/숨김 파일 스캔
.\checkjndi.ps1 -Force -Verbose c:\Users\alex\Desktop\test_folder
예를 들어, 다음은 PowerShell 버전 스캐너의 실행 예입니다:

스캔할 위치를 스크립트로 파이프하여 확인할 항목을 제어할 수 있습니다. 예를 들어, paths.txt 파일에 포함된 경로 목록을 스캔하려면:
get-content .\paths.txt | .\checkjndi.ps1
Windows 스캔 실행에서 첫 번째 발견 항목을 살펴보겠습니다:
C:\Users\unst0\Desktop\test_folder\apache-log4j-2.17.1-bin.zip contains apache-log4j-2.17.1-bin/log4j-core-2.17.1.jar contains org/apache/logging/log4j/core/lookup/JndiLookup.class ** BUT APPEARS TO BE PATCHED **
이 jar 파일은 log4j 2.17 버전을 포함하며, 이는 CVE-2021-44228에 취약하지 않습니다. 이 결과는 정보 제공 목적으로 보고되며, 공급업체가 제품에 패치를 적용했음을 나타냅니다.
두 번째 발견 항목을 살펴보겠습니다:
WARNING: C:\Users\unst0\Desktop\test_folder\ghidra_10.0.4_PUBLIC_20210928.zip contains ghidra_10.0.4_PUBLIC/Ghidra/Framework/Generic/lib/log4j-core-2.12.1.jar contains org/apache/logging/log4j/core/lookup/JndiLookup.class
여기서 Ghidra가 log4j 버전 2.12.1을 사용함을 알 수 있으며, 따라서 취약하다고 가정해야 합니다. 실제로 Ghidra 10.1 이전 버전은 CVE-2021-44228에 취약합니다.
세 번째 발견 항목을 살펴보겠습니다:
WARNING: C:\Users\unst0\Desktop\test_folder\server.jar contains META-INF/libraries/org/apache/logging/log4j/log4j-core/2.14.1/log4j-core-2.14.1.jar contains org/apache/logging/log4j/core/lookup/JndiLookup.class
여기서 Minecraft server.jar 파일이 log4j 버전 2.14.1을 사용함을 알 수 있으며, 따라서 취약하다고 가정해야 합니다. 실제로 Minecraft: Java Edition 서버 버전 1.18.1 이전 버전은 CVE-2021-44228에 취약합니다.
이 스크립트에서 보고된 모든 발견 항목을 조사하여 log4j 버전이 실제로 수정된 2.16 버전인지 확인하거나, 소프트웨어 공급업체에 연락하여 수정된 버전을 받아야 합니다. 또는 VU#930724에는 취약한 jar 파일에서 JndiLookup.class를 제거하는 방법에 대한 정보가 있습니다.
PowerShell 버전의 스캐너는 파일이나 디렉터리를 검사할 수 없는 경우 추가 오류 보고를 제공합니다. 특히, Unable to scan 오류에서 UnauthorizedAccessException을 보고하는 것은 디렉터리 및/또는 파일에 대한 권한 문제를 나타냅니다. Unable to scan 오류에서 InvalidDataException을 보고하는 것은 일반적으로 손상된 아카이브로 인해 발생합니다.