본문 바로가기
Java & Spring

log4j 취약점 조치 (CVE-2021-44228) (CVE-2021-4504)

by 모닝위즈 2021. 12. 30.
반응형

2021년 12월 11일, 대대적으로 이슈였던 log4j 사건의 전말을 아래와 같습니다.

 

Log4j 2에서 원격 코드 실행을 수반하는 제로 데이 공격, 즉 서술자 Log4Shell(CVE-2021-44228)이 알리바바그룹에 의해 2021년 11월 24일 발견되어 아파치에 보고되었으며 2021년 12월 9일 트위터를 통해 일반에 공개되었다.[9] 영향을 받는 서비스에는 클라우드플레어아이클라우드마인크래프트: 자바 에디션, 스팀텐센트 QQ트위터가 포함된다.

- 출처 위키백과-

 

 

 

위 지침이 내려왔으나, 이미 지침이 있기 전 주말에 대대적으로 뉴스에서 이슈가 된 상태였다.

 

회사 프레임워크를 확인하니.. 아뿔사..

<!-- Log4j -->
<dependency>
   <groupId>org.lazyluke</groupId>
   <artifactId>log4jdbc-remix</artifactId>
   <version>0.2.7</version>
</dependency>
<dependency>
   <groupId>org.apache.logging.log4j</groupId>
   <artifactId>log4j-slf4j-impl</artifactId>
   <version>2.10.0</version>
</dependency>
<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-simple</artifactId>
   <version>1.7.25</version>
   <scope>test</scope>
</dependency>
<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-api</artifactId>
   <version>1.7.25</version>
</dependency>
<dependency>
   <groupId>log4j</groupId>
   <artifactId>log4j</artifactId>
   <version>1.2.17</version>
</dependency>

 

 

 

 

패치를 할까.. 조치방안 대로 할까 고민하다가.. 이미 정식 상용화된 곳이 너무 많아서..

log4j 버전을 올리는 엄두는 내지 않고...

 

 

해당 CORE 라이브러리의 클래스만 없애버렸다.. 

 

다만 이렇게 조치를 하면, 다음 사람이 WAR 배포를 해버리게 된다면, 해당 취약점은 동일하게 나타나겠지..

그래서 그때를 대비하여 쉘을 하나 생성하여 TOMCAT이 재기동될 때, 해당 쉘이 돌면서 JndiLookup.class를 

없애주도록 하였다...

 

 

앞으로 이런 방식으로는 무리가 있으니.. 2.15.0으로 버전을 올렸다... 

올리고.. 그 날 저녁..

 
 

2.15.0버전에서 log4j 이슈(코드 : CVE-2021-4504)가 발생..

 

 

 

- 

어짜피 1.X.X 대에는 2019년에 이미 취약점이 발표되었기 때문에. 버전을 올리자. 2.16.0으로 올리자.

<!-- Log4j -->
<dependency>
   <groupId>org.apache.logging.log4j</groupId>
   <artifactId>log4j-api</artifactId>
   <version>2.16.0</version>
</dependency>
<dependency>
   <groupId>org.apache.logging.log4j</groupId>
   <artifactId>log4j-core</artifactId>
   <version>2.16.0</version>
</dependency>
<dependency>
   <groupId>org.apache.logging.log4j</groupId>
   <artifactId>log4j-jcl</artifactId>
   <version>2.16.0</version>
</dependency>
<dependency>
   <groupId>org.apache.logging.log4j</groupId>
   <artifactId>log4j-slf4j-impl</artifactId>
   <version>2.16.0</version>
</dependency>

<dependency>
   <groupId>org.lazyluke</groupId>
   <artifactId>log4jdbc-remix</artifactId>
   <version>0.2.7</version>
</dependency>

 

 

이제 slf4j가 core의 2.16.0을 의존하고 있음.

댓글