본문 바로가기
Stack Overflow/스프링

[스프링] TOMCAT 7.0 이하 사용 관련하여 Apache 보안 취약점 패치 Log4j 2.17.0 빌드 안되는 이슈 해결 방법

by Lich King 2022. 2. 19.
정보: validateJarFile(\WEB-INF\lib\javax.servlet-api-3.1.0.jar) - jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class: javax/servlet/Servlet.class
2월 18, 2022 5:08:39 오후 org.apache.catalina.loader.WebappClassLoaderBase validateJarFile
정보: validateJarFile(\WEB-INF\lib\jsp-api-2.1.jar) - jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class: javax/el/Expression.class
2월 18, 2022 5:08:39 오후 org.apache.catalina.loader.WebappClassLoaderBase validateJarFile
정보: validateJarFile(\WEB-INF\lib\servlet-api-2.5.jar) - jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class: javax/servlet/Servlet.class
2월 18, 2022 5:08:48 오후 org.apache.catalina.startup.ContextConfig processAnnotationsJar
심각: Unable to process Jar entry [META-INF/versions/9/module-info.class] from Jar [jar:file:/WEB-INF/lib/log4j-api-2.17.0.jar!/] for annotations
org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19

대략 두달전 Log4j 보안관련 이슈에 대해 전 세계적으로 버전 변경 권고가 있었다.
내가 작업하는 곳에서는 톰캣 관련 버전 이슈가 없었으나 낮은 버전 톰캣 환경에서 정상적으로 적용이 되지 않는 것으로 확인된다.
해결 방법은 매우 간단하다.

 

* pom.xml 파일

<dependency>
	<groupId>org.apache.logging.log4j</groupId>
	<artifactId>log4j-api</artifactId>
	<version>2.7</version>
</dependency>

해당 dependency 에서 version 정보를 2.7로 바꿔주면 된다.
이렇게 안되면 다른 이슈라고 생각하면 된다. 
대개 Slf4j, JDK logging가 호환되지 않아서 생기는 이슈일 것이다.

사실 Log4j 2.17.0 버전에서는 아파치에서 톰캣 버전을 9.0이상으로 권장하고 있다.
그렇지만 대한민국 웹 환경에서 버전을 맘대로 바꾸는 것이 쉬운가?
임시로 땜빵하고 장기적으로 톰캣 버전을 올리는 방향으로 가자..

댓글