Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
log4j-detector — 컴파일된 Java 클래스(중첩된 아카이브 포함)를 분석하여 취약한 Log4J 버전(CVE-2021-44228, CVE-2021-45046)을 감지하는 파일 시스템 스캐너입니다. Linux, Windows, Mac에서 작동합니다. | Kitploit
도구/GitHubGitHub/mergebase/log4j-detector
Static AnalysisVulnerability ScannersVulnerability AnalysisSupply Chain Security
GitHubmergebase/log4j-detector

log4j-detector

컴파일된 Java 클래스(중첩된 아카이브 포함)를 분석하여 취약한 Log4J 버전(CVE-2021-44228, CVE-2021-45046)을 감지하는 파일 시스템 스캐너입니다. Linux, Windows, Mac에서 작동합니다.

저장소 보기
64096214년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

mergebase 로고

Log4-detector

취약한 Log4J 버전을 탐지하여 팀이 CVE-2021-44228 (심각), CVE-2021-45046, CVE-2021-45105, CVE-2021-44832에 대한 노출을 평가할 수 있도록 도와주는 스캐너입니다. 완전한 파일 시스템(설치된 모든 애플리케이션 포함)을 면밀히 조사하여 Log4J 인스턴스를 검색합니다. 여러 계층 깊이 숨겨진 Log4J 인스턴스도 찾을 수 있습니다. Linux, Windows, Mac 및 Java가 실행되는 모든 곳에서 작동합니다!

목차

  • 소개
  • 사용 예시
  • 추가 사용 예시
  • 결과 이해하기
  • 사용법
  • 소스에서 빌드
  • 테스트
  • 라이선스
  • 자주 묻는 질문
    • 어떻게 작동하나요?
    • 이 스캐너는 log4j-core 라이브러리만 적중합니다. log4j-api는요?
    • 2.10.0, 2.15.0, 2.16.0에 대해 보고하는 이유는?
    • "file1.war!/path/to/file2.zip!/path/to/file3.jar!/path/to/log4j.jar" 결과는 무엇인가요?
    • Log4J 1.2.x는 어떤가요?
    • 이 도구가 Log4J 탐지기로 위장한 트로이 목마가 아니라는 것을 어떻게 확신할 수 있나요?
  • MergeBase는 무엇인가요?

소개

현재 log4j-core 2.3.2, 2.12.4, 2.17.1 버전을 _SAFE_로, 2.3.1, 2.12.2, 2.12.3, 2.15.0, 2.16.0, 2.17.0 버전을 _OKAY_로 보고하며, 다른 모든 버전은 _VULNERABLE_로 보고합니다(단, 2.0-beta9 미만은 _POTENTIALLY_SAFE_로 보고). 이전 log4j-1.x 버전은 _OLD_로 보고합니다.

실행 가능한 spring-boot jar/war, uber jar에 혼합된 의존성, shaded jar, 심지어 압축 풀린 상태로 파일 시스템에 있는 jar 파일(일명 *.class) 내의 log4j도 올바르게 탐지할 수 있습니다.

테스트를 위해 사용하는 log4j-samples 컬렉션을 유지 관리하고 있습니다.

사용 예시:

java -jar log4j-detector-2021.12.29.jar ./samples 

-- github.com/mergebase/log4j-detector v2021.12.29 (by mergebase.com) analyzing paths (could take a while).
-- Note: specify the '--verbose' flag to have every file examined printed to STDERR.
false-hits/log4j-core-2.12.2.jar contains Log4J-2.x   == 2.12.2 _OKAY_
false-hits/log4j-core-2.12.3.jar contains Log4J-2.x   == 2.12.3 _OKAY_
false-hits/log4j-core-2.12.4.jar contains Log4J-2.x   == 2.12.4 _SAFE_
false-hits/log4j-core-2.15.0.jar contains Log4J-2.x   == 2.15.0 _OKAY_
false-hits/log4j-core-2.16.0.jar contains Log4J-2.x   == 2.16.0 _OKAY_
false-hits/log4j-core-2.17.0.jar contains Log4J-2.x   == 2.17.0 _OKAY_
false-hits/log4j-core-2.17.1.jar contains Log4J-2.x   >= 2.17.1 _SAFE_
false-hits/log4j-core-2.3.1.jar contains Log4J-2.x   == 2.3.1 _OKAY_
false-hits/log4j-core-2.3.2.jar contains Log4J-2.x   == 2.3.2 _SAFE_
true-hits/log4j-core-2.0-beta9.jar contains Log4J-2.x   >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
true-hits/log4j-core-2.10.0.jar contains Log4J-2.x   >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.10.0.zip contains Log4J-2.x   >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.11.0.jar contains Log4J-2.x   >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.11.1.jar contains Log4J-2.x   >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.11.2.jar contains Log4J-2.x   >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.12.0.jar contains Log4J-2.x   >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.12.1.jar contains Log4J-2.x   >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.14.0.jar contains Log4J-2.x   >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.14.1.jar contains Log4J-2.x   >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.2.jar contains Log4J-2.x   >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
true-hits/log4j-core-2.3.jar contains Log4J-2.x   >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
true-hits/log4j-core-2.4.1.jar contains Log4J-2.x   >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
true-hits/log4j-core-2.4.jar contains Log4J-2.x   >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
true-hits/log4j-core-2.9.1.jar contains Log4J-2.x   >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
old-hits/log4j-1.1.3.jar contains Log4J-1.x   <= 1.2.17 _OLD_
old-hits/log4j-1.2.17.jar contains Log4J-1.x   <= 1.2.17 _OLD_
old-hits/log4j-core-2.0-beta2.jar contains Log4J-2.x   <= 2.0-beta8 _POTENTIALLY_SAFE_ (Did you remove JndiLookup.class?)

결과 이해하기

_VULNERABLE_ -> 이 파일을 업그레이드하거나 제거해야 합니다.

_OKAY_ -> Log4J 2.3.1, 2.12.2, 2.12.3, 2.15.0, 2.16.0, 2.17.0 버전에 대해 이 결과를 보고합니다. 2.17.1로 업그레이드할 것을 권장합니다.

_SAFE_ -> 현재 Log4J 2.3.2, 2.12.4, 2.17.1 (및 그 이상) 버전에 대해서만 이 결과를 보고합니다.

_OLD_ -> CVE-2021-44228로부터 안전하지만, Log4J 1.2.x는 7년 동안 EOL 상태이며 여러 알려진 취약점이 있으므로 업그레이드 계획을 세워야 합니다.

_POTENTIALLY_SAFE_ -> "JndiLookup.class" 파일이 존재하지 않습니다. Log4J 버전이 매우 오래되었거나(2.0-beta9 이전), 이미 누군가 이 파일을 제거했기 때문입니다. 만약 그렇다면 "JndiLookup.class"를 제거한 사람이 팀이나 회사 사람인지 확인하세요. 공격자가 손상된 시스템에 대한 추가 경쟁 공격자의 접근을 막기 위해 직접 이 파일을 제거하는 경우가 알려져 있기 때문입니다.

사용법

java -jar log4j-detector-2021.12.29.jar 

Usage: java -jar log4j-detector-2021.12.29.jar [--verbose] [--json] [--stdin] [--exclude=X] [paths to scan...]

  --json       - Output STDOUT results in JSON.  (Errors/warning still emitted to STDERR)
  --stdin      - Read STDIN for paths to explore (one path per line)
  --exclude=X  - Where X is a JSON list containing full paths to exclude. Must be valid JSON.

                 Example: --exclude='["/dev", "/media", "Z:\TEMP"]'

Exit codes:  0 = No vulnerable Log4J versions found.
             1 = At least one legacy Log4J 1.x version found.
             2 = At least one vulnerable Log4J version found.

About - MergeBase log4j detector (version 2021.12.29)
Docs  - https://github.com/mergebase/log4j-detector 
(C) Copyright 2021 Mergebase Software Inc. Licensed to you via GPLv3.

소스에서 빌드:

git clone https://github.com/mergebase/log4j-detector.git
cd log4j-detector/
mvn install
java -jar target/log4j-detector-latest.jar

테스트:

log4j 샘플 컬렉션을 이곳에서 유지 관리합니다: https://github.com/mergebase/log4j-samples

라이선스

GPL 버전 3.0

자주 묻는 질문

어떻게 작동하나요?

Java 컴파일러는 String 리터럴을 컴파일된 *.class 파일에 직접 저장합니다. log4j-detector가 파일 시스템에서 "JndiManager.class"라는 이름의 파일을 감지하면, 해당 파일에서 "Invalid JNDI URI - {}" 문자열을 찾습니다. 이 특정 String 리터럴은 패치된 Log4J 버전(2.15.0)에만 존재하는 것으로 밝혀졌습니다. 해당 문자열이 없는 모든 Log4J 버전은 취약합니다.

*.class 파일에서 String 리터럴을 검사하는 이 동일한 기법은 안전한 버전 2.3.2, 2.12.4, 2.17.1을 정확하게 탐지하도록 더 확장되었습니다.

이 스캐너는 log4j-core 라이브러리만 적중합니다. log4j-api는요?

많은 스캐너(GitHub 자체 Dependabot 포함)가 현재 "log4j-core"와 "log4j-api" 라이브러리 모두를 취약하다고 보고합니다. 이 스캐너들은 잘못되었습니다. 현재 "log4j-api" 라이브러리 중 이러한 취약점에 의해 악용될 수 있는 버전은 존재하지 않습니다.

MergeBase에서는 스캔 정확성을 자랑스럽게 생각합니다. 시스템을 패치하고 방어하는 것만으로도 충분히 바쁘십니다. 가양성(false positive)으로 시간을 낭비하게 하고 싶지 않습니다. 그렇기 때문에 log4j-api에 대한 적중 결과는 보고하지 않습니다.

2.3.1, 2.10.0, 2.12.2, 2.12.3, 2.15.0, 2.16.0, 2.17.0에 대해 보고하는 이유는?

버전 2.10.0은 Log4J의 취약한 "메시지 조회 기능"을 Log4J 구성을 통해 비활성화할 수 있는 첫 번째 버전이기 때문에 중요합니다.

버전 2.12.2는 CVE-2021-44228에 취약하지 않은 Java 7 호환 Log4J 버전이기 때문에 중요합니다.

버전 2.15.0과 2.16.0은 Log4J의 기본 구성을 변경하지 않은 상태에서 CVE-2021-44228에 취약하지 않은 첫 번째 버전이기 때문에 중요합니다.

그리고 버전 2.3.2, 2.12.4, 2.17.1은 최근에 발견된 CVE-2021-45046 및 CVE-2021-45105와 같은 CVE에 취약하지 않기 때문에 중요합니다. 이것들이 훨씬 덜 심각한 취약점임에도 불구하고, 모든 사람이 2.3.2, 2.12.4, 2.17.1 중 하나로 패치하기를 원할 것으로 예상합니다.

"file1.war!/path/to/file2.zip!/path/to/file3.jar!/path/to/log4j.jar" 결과는 무엇인가요?

"!" 기호는 log4j-detector가 zip 아카이브(예: *.zip, *.ear, *.war, *.aar, *.jar)에 진입했음을 의미합니다. zip 파일은 zip 파일을 포함할 수 있으므로, 하나의 결과에 "!" 표시가 두 개 이상 포함될 수 있습니다.

도구 다운로드