개 요
Log4Shell은 2021년 12월에 공개된 Log4j의 치명적인 원격 코드 실행(RCE) 취약점으로, 전 세계적으로 큰 충격을 주었다. 이 취약점(CVE-2021-44228)은 Java 기반 애플리케이션에서 흔히 사용되는 로그 라이브러리인 Log4j에서 발견되었다. Log4Shell을 악용하면 원격에서 악성 코드를 실행할 수 있어, 서버나 네트워크에 중대한 위협을 가할 수 있다.
본 프로젝트에서는 해당 취약점에 대한 공격 구현 및 대응 방안을 분석하여 취약점 대응 역량을 강화함에 목적이 있다.
취약점 분석
Log4Shell 취약점의 발생 원인은 Log4j가 로그 메시지 또는 매개변수로 전달된 데이터를 처리하는 과정에서 JNDI(Java Naming and Directory Interface) 조회 기능을 남용할 수 있다는 점에 기인한다. 공격자는 이 취약점을 통해 JNDI 조회 요청을 조작하여 원격 서버로부터 악성 객체를 불러오고 실행할 수 있으며, 이를 통해 시스템이 원격에서 제어되는 상황이 발생할 수 있다.
Log4Shell 공격 구현
프로젝트에서는 Log4Shell 공격을 직접 구현하고, 취약점이 실제로 악용되는 과정을 실험하였다. 특히, Minecraft 서버에서 Log4Shell 취약점이 악용되는 시나리오를 시연하였으며, 악성 페이로드가 성공적으로 원격에서 실행되는 과정을 확인하였다. 이를 통해 Log4Shell 취약점의 심각성과 그 악용 가능성을 파악할 수 있었다.
대응 방안
Log4j 라이브러리를 2.15.0 이상의 버전으로 업데이트하는 것이 가장 우선적인 대응 방안이다. 추가적으로 JNDI 조회 기능을 비활성화하거나, Java 보안 매개변수를 설정하여 악성 객체가 로드되는 것을 방지하는 조치를 권장한다. 이와 같은 대응을 통해 해당 취약점으로 인한 보안 위협을 사전에 차단할 수 있다.