on
log4j 취약점 해결방법
log4j 취약점 해결방법
https://cselabnotes.com/kr/2021/12/12/210/
CVE(Common Vulnerability and Exposure)란
CVE는 대중적으로 알려져있고 영향을 미칠 수 있는 소프트웨어 취약점을 의미한다.
대표적으로 리누긋 커널 보안 취약점, 파이썬 인터프리터 보안 이슈, 그리고 이번에 발견된 Log4j보안 취약점이 이에 해당한다.
0-데이 취약점
0-데이 취약점은 해커들이 개발자들보다 먼저 발견한 취약점을 의미한다. 개발자들은 취약점의 존재를 모르므로 공격당했는지도 모른다. 개발자가 취약점을 발견하고 패치했을 때는 이미 늦었을 수도 있다는 뜻이다.
이번에 발결된 Log4j취약점, 일명 Log4Shell은 0-데이 취약점이라고 부른다.
현재 문제가 있는 log4j라이브러리는 log4j-core-.jar이다
Log4j취약점
Log4j취약점은 Log4j가 넘겨받은 변수를 그대로 로깅하는 것이 아니라 해당 변수를 분석해 실행할 수 있는 경우 실행하는 Lookups기능에서 발견되었다.
예를 들어 log.info("디버깅{}",str);에서 str이 ${env:USER}이라면 ${env:USER}를 그래도 "디버깅 ${env:USER}"하고 로그를 남기는게 아니라 USER가 누군지 찾아서, "디버깅:fsoftwareenginner"이런 식으로 안의 구문을 실행할 후 출력한다.
현재 취약점은 룩업 기능 중에서도 특히 JDNI라는 룩업을 이용해 공격이 가능하다.
JNDI(Naming and Directory Interface)를 이용한 공격
JNDI는 보통 분산시스템에서 다른 리소스를 가져오는데 사용할 수 있다.
다른 리소스의 예로 자바 클래스 등을 들 수 있는데, 말하자면 공격자가 이 경로를 자신의 서버로 지정하면 취약점이 있는 거버가 공격자의 서버에서 클래스를 다운받는 것이다. 이렇게 공격자의 클래스를 다운받아 코드를 실행하는 것을 RCE(Remote Code Execution)이라고 한다.
왜 컴퓨터 사상 최악의 취약점이라고 하는가
~
4. 내 소스트웨어가 이미 공격당했는지 Log4j를 사용하기 시작한 시점부터 분석해야 한다.
예를 들어 10년간 Log4j를 사용해 서비스를 운영했다면 10년치의 로그를 분석해서 서비스가 공격받았는지 확인해야 한다는 뜻이다... 너무 무섭다..
from http://action713.tistory.com/1675 by ccl(A) rewrite - 2021-12-13 11:27:26