Amazon Web Services 한국 블로그

Apache Log4j용 핫패치 제공

널리 사용되는 오픈 소스 로깅 플랫폼인 Apache Log4j의 취약점인 CVE-2021-44228를 패치하거나 완화하기 위해 바쁜 주말을 보냈습니다.

영향을 받는 애플리케이션을 실행하는 사용자는 이 취약점을 해결하기 위해 Log4j를 버전 2.15로 업그레이드하는 것이 좋습니다. 그러나, 빠르게 진행하지 못하는 경우를 대비하여, (AWS가 배포하는 멀티 플랫폼 OpenJDK  버전인) Amazon Coretto 팀원들이 취약한 log4j 배포를 핫패치하는 도구를 구축하는 데 시간을 할애했습니다.

이 도구는 Log4j 2.0+를 사용하여 실행 중인 JVM을 핫패치하도록 설계되었습니다. 이 도구는 멱등성 기반으로, 초기 애플리케이션 이후의 결과를 변경하지 않고 동일한 JVM에서 이를 여러 번 실행할 수 있습니다. 또한, 실행 중인 모든 JVM을 찾고 취약점을 완화할 수 있습니다. 이를 사용하여 log4j를 종속성으로 포함하는 jar를 패치하고, 클래스 경로의 여러 log4j 인스턴스를 패치할 수도 있습니다.

핫패치 작동 방식 및 다운로드

이 도구는 실행 중인 JVM 프로세스에 Java 에이전트를 추가합니다. 본 에이전트는 “Patched JndiLookup::lookup()” 문자열을 무조건 반환하는 org.apache.logging.log4j.core.lookup.JndiLookup인스턴스의 lookup()를 패치 합니다. 메소드를 해결하도록 설계되었습니다. Java 프로세스를 다시 시작하지 않고 Log4j 원격 코드 실행 취약점을완화할수있습니다.

Java 프로세스를 재시작해야 할 가능성이 있는 경우, 정적 에이전트로도 사용할 수도 있습니다. 즉, 서버에 직접 로그인하지 않고도 런타임에 이 패치를 포함할 수 있습니다. 이 도구는 사용할 수 GitHub에서 다운로드 가능하며, 자세한 설명은 README에서 보실 수 있습니다.

주의 사항

모든 오픈 소스 소프트웨어와 마찬가지로 Correto Hotpatch를 사용하는 데 따른 위험은 사용자가 감수해야 합니다. Hotpatch는 Linux에서 JDK8 및 JDK11로 테스트되었습니다. JDK17에서는 정적 에이전트 모드만 작동합니다. 주의 사항의 전체 목록은 README에서 보실수있습니다.

2021년 12월 14일 오후 10시 18분(GMT 기준) 업데이트

본 핫패치는 CVE-2021-44228와 CVE-2021-45046를 해결합니다 . 저희는 계속해서 README를 업데이트하고, 해당 도구에 대한 여러 가지 새로운 개선 사항을 구현하고 있습니다. 지속적인 피드백과 격려를 보내주신 오픈 소스 커뮤니티에 감사드립니다.

– David Nalley, President of the Apache Software Foundation
– Volker Simonis, AWS Principal Software Engineer (Amazon Coretto)

이 글은 AWS Open Source 블로그의 Hotpatch for Apache Log4j 한국어 번역입니다.