Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

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

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에서 작동합니다.

저장소 보기
64096124년 전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 컬렉션을 유지 관리하고 있습니다.

사용 예시:

root@kitploit:~
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"를 제거한 사람이 팀이나 회사 사람인지 확인하세요. 공격자가 손상된 시스템에 대한 추가 경쟁 공격자의 접근을 막기 위해 직접 이 파일을 제거하는 경우가 알려져 있기 때문입니다.

사용법

root@kitploit:~
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.

소스에서 빌드:

root@kitploit:~
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 파일을 포함할 수 있으므로, 하나의 결과에 "!" 표시가 두 개 이상 포함될 수 있습니다.

참고: log4j-detector는 zip 아카이브만 재귀적으로 진입합니다. tar, gz, bz2 등에는 진입하지 않습니다. 주된 이유는 Java 시스템이 종종 jar 내부의 jar를 실행하도록 구성되지만, 다른 파일 형식을 실행하도록 구성되는 경우는 없기 때문입니다(알려진 바에 따르면!). 따라서 *.tar.gz 내부의 log4j 복사본은 실행 중인 Java 시스템에서 접근할 수 없을 가능성이 높으므로 보고할 가치가 있는 취약점이 아닙니다.

두 번째 참고: zip 내부의 zip의 경우, 스캐너는 내부 zip을 스캔하기 전에 완전히 메모리(ByteArrayInputStream 사용)에 로드합니다. 시스템에 매우 큰 내부 zip(예: 1GB 이상)이 있는 경우 Java에 추가 메모리를 할당해야 할 수도 있습니다.

Log4J 1.2.x는 어떤가요?

Log4J 2.x 버전(2.0-beta9에서 2.14.1까지)만 CVE-2021-44228에 취약합니다.

이 도구가 Log4J 탐지기로 위장한 트로이 목마가 아니라는 것을 어떻게 확신할 수 있나요?

좋은 질문입니다! 여기 Github에 전체 소스 코드(Java 2500줄)와 빌드 단계를 포함하고 있으며, 이 도구는 의존성이 전혀 없으므로 코드를 충분히 주의 깊게 연구하는 데 시간이 많이 걸리지 않을 것입니다. Maven을 신뢰하지 않는다면 "src/main/java/com/mergebase/log4j" 디렉토리로 직접 이동하여 "javac *.java"를 입력하세요. 그것도 작동합니다!

또한 저장소 루트(./log4j-detector-2021.12.29.jar)에 있는 사전 컴파일된 jar를 MergeBase 코드 서명 키로 서명했습니다. 확인을 위해 "jarsigner -verbose -verify log4j-detector-2021.12.29.jar"를 실행해 주십시오.

MergeBase는 무엇인가요?

MergeBase

MergeBase는 캐나다 밴쿠버에 기반을 둔 SCA(Software Composition Analysis) 회사입니다. Snyk, Sonatype, Blackduck 등과 유사하게 소프트웨어의 취약한 오픈 소스 라이브러리를 탐지하고 관리하는 데 도움을 줍니다. 확인해 보세요! 뛰어난 정확성, 훌륭한 언어 지원, 그리고 가격도 너무 비싸지 않습니다: mergebase.com/pricing.

누구든지 SCA 제품의 2주 무료 평가판을 사용해 보시면 기쁠 것입니다! 그리고 저희 CEO([email protected])에게 제목에 "log4j-detector"를 포함하여 이메일을 보내시면 무료 평가판을 4주로 연장해 드립니다.

도구 다운로드