https://nvd.nist.gov/vuln/detail/CVE-2021-44228
이번 달(2021-12) 초에 큰 이슈가 됐던 log4shell 취약점, cve-2021-44228이다.
cve score를 보면 10(critical)인 것을 알 수 있다. 공격 방법도 굉장히 간단하고 많은 서버가 이를 사용하기에 정말 파급력이 크고 중대한 취약점이다.
취약점은 바로 Log4j2라는 라이브러리에 의해서 발생된다.
log4j2에 포함된 JNDI 기능이 공격자의 LDAP 및 기타 JNDI 쿼리를 통해서 악용되어 RCE(remote code execution)로 연계 가능한 취약점이다.
2001년에 만들어진 자바 기반의 로깅 유틸리티로 Apache 소프트웨어 재단의 프로젝트 Apache Logging Service의 일부다.
개발자가 프로그램을 개발할 때 디버깅 등을 위해서 로그를 남길 때 사용된다.
한마디로 log를 남기는데 사용되는 라이브러리다.
// 예시 코드
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class Test
{
public static void main(String[] args)
{
Logger logger = (Logger) LogManager.getLogger(Test.class);
logger.info("A");
logger.info("B");
}
}
위처럼 작성하면 “A”, “B”가
“[시간] [로그를 출력하는 패키지 명] A”
“[시간] [로그를 출력하는 패키지 명] B”
형식으로 로그가 출력된다. info 말고도 trace, debug, error 등으로 로그 레벨을 설정할 수 있다.