SITUATION Security research & response knowledge base UTC+09 · SEOUL
INTELLIGENCE REPORT TLP:CLEAR

Log4Shell(CVE-2021-44228): JNDI RCE와 장기 침해 헌팅

Log4j 공급망 노출 식별, callback 분석과 안전한 검증 절차

#cve-2021-44228#log4shell#log4j#jndi#poc

취약점 개요

Log4Shell은 Log4j 2의 message lookup과 JNDI 기능이 공격자 제어 문자열을 처리하면서 원격 객체 조회와 코드 실행으로 이어질 수 있는 취약점이다. HTTP Header, 사용자명, 채팅 메시지처럼 “로그에 남는 값”이 공격 입력이 될 수 있었다.

침해 분석

탐지 시 원문 ${jndi:뿐 아니라 lower/upper lookup과 문자 분할을 사용한 난독화 변형을 고려한다. 서버에서 외부 DNS·LDAP·RMI로 향한 callback, Java 프로세스의 셸 생성, 임시 디렉터리의 class/JAR, 컨테이너 재배포 시점을 함께 본다.

안전한 PoC 검증

운영 환경에 LDAP/RMI payload를 전달하지 않는다. 우선 SBOM과 파일 해시 기반 scanner로 영향 라이브러리를 찾고, 폐쇄형 랩에서는 직접 운영하는 DNS canary로 callback 여부만 확인한다.

find /opt /srv -type f -name 'log4j-core-*.jar' -print 2>/dev/null

방어용 도구: logpresso/CVE-2021-44228-Scanner, CISA Log4j Scanner.

스캐너가 JAR를 찾지 못해도 shaded·nested JAR와 상용 제품 내부 의존성이 남을 수 있다. 실행 이미지와 빌드 의존성을 모두 확인한다.

대응

  • 영향 Log4j를 벤더 권고 수정 버전으로 교체
  • 이미지·패키지 cache를 지우고 재빌드
  • 과거 callback과 Java 자식 프로세스 조사
  • 임시 완화책을 영구 수정으로 간주하지 않기

References