
CVE-2021-44228 (Log4Shell)를 탐지하는 단일 바이너리 스캐너입니다. JAR/WAR/EAR 파일 내 취약한 log4j 버전을 감지하고 JndiLookup.class를 제거하여 패치를 적용합니다.

log4j2-scan은 CVE-2021-44228 취약점 스캐닝 및 완화 패치를 위한 단일 바이너리 명령줄 도구입니다. 중첩된 JAR 파일 스캔 및 패치도 지원합니다.
log4j2-scan.exe 또는 log4j2-scan을 대상 디렉터리 경로와 함께 실행하기만 하면 됩니다.
사용법
Logpresso CVE-2021-44228 Vulnerability Scanner 1.3.1 (2021-12-15)
Usage: log4j2-scan [--fix] target_path
--fix
원본 파일을 백업하고 JAR에서 JndiLookup.class를 재귀적으로 제거합니다.
--force-fix
확인 프롬프트를 표시하지 않습니다. 이 옵션은 작업 내용을 알고 있는 경우에만 사용하십시오.
--trace
스캔하는 동안 모든 디렉터리와 파일을 출력합니다.
--exclude [path_prefix]
지정된 경로를 제외합니다. 여러 개의 --exclude [path_prefix] 쌍을 지정할 수 있습니다.
--exclude-config [file_path]
텍스트 파일에서 제외 경로 목록을 지정합니다. 경로는 새 줄로 구분해야 합니다. 주석은 #을 앞에 붙입니다.
--all-drives
Windows에서 모든 드라이브를 스캔합니다.
--drives c,d
Windows에서 지정된 드라이브를 스캔합니다. 공백은 허용되지 않습니다.
Windows에서
log4j2-scan [--fix] target_path
Linux에서
./log4j2-scan [--fix] target_path
UNIX (AIX, Solaris 등)에서
java -jar logpresso-log4j2-scan-1.3.1.jar [--fix] target_path
--fix 옵션을 추가하면 이 프로그램은 취약한 원본 JAR 파일을 .bak 파일로 복사하고, org/apache/logging/log4j/core/lookup/JndiLookup.class 항목이 없는 새 JAR 파일을 생성합니다. 대부분의 환경에서 JNDI 조회 기능은 사용되지 않습니다. 그러나 이 옵션은 사용자의 책임 하에 사용해야 합니다. 패치를 적용하기 전에 실행 중인 모든 JVM 프로세스를 종료해야 합니다. 수정 후 영향을 받는 JVM 프로세스를 시작하십시오.
패치 작업을 자동화하려면 --force-fix 옵션을 사용하십시오. 이 옵션을 사용하면 프로그램이 더 이상 확인을 요청하지 않습니다.
JAR 파일에서 org/apache/logging/log4j/core/lookup/JndiLookup.class 항목이 제거된 경우 (mitigated) 태그가 표시됩니다.
--trace 옵션을 추가하면 이 프로그램은 방문한 모든 디렉터리와 파일을 출력합니다. 디버깅 목적으로만 이 옵션을 사용하십시오.
Windows에서:
CMD> log4j2-scan.exe D:\tmp
[*] Found CVE-2021-44228 vulnerability in D:\tmp\elasticsearch-7.16.0\bin\elasticsearch-sql-cli-7.16.0.jar, log4j 2.11.1
[*] Found CVE-2021-44228 vulnerability in D:\tmp\elasticsearch-7.16.0\lib\log4j-core-2.11.1.jar, log4j 2.11.1
[*] Found CVE-2021-44228 vulnerability in D:\tmp\flink-1.14.0\lib\log4j-core-2.14.1.jar, log4j 2.14.1
[*] Found CVE-2021-44228 vulnerability in D:\tmp\logstash-7.16.0\logstash-core\lib\jars\log4j-core-2.14.0.jar, log4j 2.14.0
[*] Found CVE-2021-44228 vulnerability in D:\tmp\logstash-7.16.0\vendor\bundle\jruby\2.5.0\gems\logstash-input-tcp-6.2.1-java\vendor\jar-dependencies\org\logstash\inputs\logstash-input-tcp\6.2.1\logstash-input-tcp-6.2.1.jar, log4j 2.9.1
[*] Found CVE-2021-44228 vulnerability in D:\tmp\solr-7.7.3\solr-7.7.3\contrib\prometheus-exporter\lib\log4j-core-2.11.0.jar, log4j 2.11.0
[*] Found CVE-2021-44228 vulnerability in D:\tmp\solr-7.7.3\solr-7.7.3\server\lib\ext\log4j-core-2.11.0.jar, log4j 2.11.0
[*] Found CVE-2021-44228 vulnerability in D:\tmp\solr-8.11.0\contrib\prometheus-exporter\lib\log4j-core-2.14.1.jar, log4j 2.14.1
[*] Found CVE-2021-44228 vulnerability in D:\tmp\solr-8.11.0\server\lib\ext\log4j-core-2.14.1.jar, log4j 2.14.1
Scanned 5047 directories and 26251 files
Found 9 vulnerable files
Completed in 0.42 seconds
5단계로 실행:
META-INF/maven/org.apache.logging.log4j/log4j-core/pom.properties 항목을 찾습니다.질문이나 문제가 있으면 이 저장소에 이슈를 생성하십시오.