
로컬 바이트코드 스캐너 - Log4JShell 취약점(CVE-2021-44228) 대응
Log4jShell 바이트코드 감지기는 jar 파일이 심각한 CVE-2021-44228에 영향을 받는지 확인하는 데 도움이 되는 오픈 소스 도구입니다. 이 도구는 jar 파일을 스캔하고 jar 내 클래스에 대한 취약한 해시 집합과 클래스를 비교합니다. 해시는 Maven Central의 아티팩트에 대해 미리 계산되었습니다.
중요 업데이트: Maven Central에서 영향을 받는 아티팩트 목록을 확장했습니다. 목록에는 18,816개의 아티팩트가 포함됩니다. 이 아티팩트들은 log4j-core를 선언된 종속성으로 사용하거나, 영향을 받는 log4j-core 버전과 일치하는 .class 파일이 아티팩트 내에서 식별된 경우입니다.
java -cp <다운로드한_JAR_경로> de.codeshield.log4jshell.Log4JDetector <확인할_JAR의_절대_경로> 실행jar가 영향을 받는 경우, 도구는 명령줄에 정보를 출력합니다:
CVE-2021-44228 found declared as dependency in META-INF/maven/org.apache.logging.log4j/log4j-core/pom.xml
CVE-2021-44228 found in class file org/apache/logging/log4j/core/net/JndiManager$1.class
java -cp <다운로드한_JAR_경로> de.codeshield.log4jshell.Log4JProcessDetector 실행log4j에서 심각한 원격 코드 실행 취약점이 발견되었으며 버전 2.0-beta9부터 2.14까지 영향을 받습니다. 이 취약점은 Java에서 가장 많이 사용되는 로깅 라이브러리 중 하나인 log4j에 영향을 미치므로 심각한 수준으로 분류되었습니다. 다양한 참고 자료와 기사가 있습니다.
Log4j는 대부분의 Java 프로젝트에서 로깅 목적으로 사용되어 왔습니다. 이제 어떤 프로젝트와 라이브러리가 실제로 영향을 받는지 파악해야 합니다. Java의 종속성 메커니즘으로 인해, 애플리케이션이 전이적(transitively)으로 취약한 라이브러리 버전을 포함하는 경우에도 영향을 받을 수 있습니다. 프로젝트 A가 A의 직접 종속성 B 중 하나가 lib에 종속성을 가질 경우 라이브러리 lib을 전이적으로 포함합니다. 영향을 받는지 확인하는 간단한 테스트는 maven 종속성 트리를 사용하여 수행할 수 있습니다:
예: Maven 프로젝트에서 mvn dependency:tree 명령 실행.
[INFO] exampleProject:mainProject:jar:0.0.1-SNAPSHOT
[INFO] +- exampleProject:lib-using-log4j:jar:0.0.1-SNAPSHOT:compile
[INFO] | \- org.apache.logging.log4j:log4j-core:jar:2.14.1:compile
그러나 이 확인은 첫 번째 징후일 뿐이며 다음 이유로 충분하지 않습니다:
Java 프로그램은 자주 다음과 같이 됩니다:
결과적으로, Java 프로젝트가 사용하는 모든 라이브러리는 취약점을 프로젝트에 포함시킬 수 있습니다. 심층 바이트코드 분석이 도움이 되며, 이것이 이 저장소의 일부로 게시하는 것입니다.
이 도구를 빌드하려면 다음을 실행하세요
mvn compile
실행 가능한 jar를 조립하려면 다음을 사용하세요
mvn clean compile assembly:single
취약한 클래스에 대한 해시 집합은 전체 Maven Central 저장소에서 미리 계산되었습니다. 클래스의 해시에는 지문 기술을 사용하여 바이트코드가 유사하다고 식별된 모든 해시가 포함됩니다.
미리 계산된 정보에는 다음이 포함됩니다:
영향을 받는 버전 범위로는 [2.0-beta9, 2.15)를 고려했습니다. 참고.
이 도구는 Andreas Dann이 발명한 Java용 새로운 바이트코드 지문 기술을 사용합니다. 기본 흐름은 다음과 같습니다.
참고: 간편한 배포를 위해 이 저장소는 취약한 클래스의 SHA 해시를 제공하며, 정보는 지문을 사용하여 계산되었습니다.
해시 및 Maven 아티팩트 목록이 완전하지 않습니다. 정기적으로 목록을 업데이트할 예정입니다.
이 도구는 CodeShield 공동 창립자들이 공동 제작했습니다.
피드백을 환영합니다!
영향을 받는 아티팩트 목록을 확장하는 작업을 진행 중이며, 항상 제공 사항을 개선하기 위해 노력하고 있습니다. 기여 환영
또한, 이 저장소가 도움이 되었다면 ⭐️를 눌러주세요!
지원이 필요하거나 당사의 기술에 대해 알고 싶으시면 [email protected]로 연락주십시오.
여러분의 CodeShield 팀 💚