얼마 전에 log4j 취약점 사태로 떠들썩했다. 살짝 뒷북이지만, 어떤 일이 있었는지 한 번 알아봤다.
Log4J 취약점 사태?
2021년 11월 24일 알리바바 클라우드 보안팀 Chen Zhaojun 이 Apache 소프트웨어 재단에 최초 보고한 이슈이다. 해당 취약점을 본격적으로 알리기 시작한 트위터는 현재 삭제되었으며, Github Advisory Database의 CVE-2021-44228 로 게재되어있다.
전세계 대부분의 서버에서 사용하는 JAVA와 JAVA에서도 널리 사용되는 주요 인터페이스인 Log4j에서 원격 코드 실행(RCE, Remote Code Excution) 취약점이 있었다는 사실이 알려져서 전세계가 떠들썩 했던 것이다. 시끄러울만도 했다. 각 나라의 주요 공공기관에서도 사용하고 있으니, 국가안보와도 직결되는 상황이었다. 해당 보안 이슈는 2021년 12월에 널리 알려지기 이전 부터 무려 8년동안 존재했다. 이미 해당 취약점을 알고 활용해온 자들도 있을 거란 추측에 더 논란이 컸다.
Github Advisory Database CVE-2021-44228
Log4j 2.16.0 이전 버전에서 ldap JNDI파서를 통한 RCE 취약점이 발견되었다.
Apach의 Log4j security guide 에 따르면 Log4j 버전 2.X 중 2.14.1 이하 버전에서 설정, 로그 메시지, 파라미터 등에 사용되는 피쳐가 LDAP와 JNDI의 기타 다른 인터페이스로부터 발생하는 공격에 안전하지 않다고 한다. Lookup 플러그인의 설정이 enable인 경우(lookup subsitution enable)에 공격자는 로그 메시지와 로그 메시지의 파라미터를 조작해서 LDAP 서버로부터 임의로 코드를 가져올 수 있다. Log4j 2.16.0 이후 버전에서는 기본 설정값이 disable로 변경 되었다.
Log4j 2.15.0 버전에서는 해당 취약점에 대한 초기 수정이 포함되어있다. 하지만 여전히 공격자가 JNDI 를 훔쳐보는걸 모두 막진 못한다. 보다 자세한 정보는 Update advice for version 2.16.0 에서 확인하길 바란다.
원격 코드 실행(RCE, Remote Code Excution)
서버와 통신 중에 응답값을 조작하여 코드를 주입하는 방식이다.
원격 모드 실행으로 서버의 데이터를 공격자 마음대로 조작할 수 있고, 원하는 프로그램을 심을 수도 있다. 원하는 명령어를 주입해서 Secret한 정보도 얼마든지 빼올 수 있다. 무엇보다도 공격자가 취약점이 있는 프로세스와 서버를 장악할 수 있어서 매우 위험하다.
이슈의 시작
Log4j 2/ LOG4J2-313
log4j 2.0-beta9 버전에 적용된 패치가 바로 이번 log4j 취약점 사태의 시작이었다. Loopup 플러그인에 JNDI를 적용하는 내용이었는데, 이 때 취약점을 발생시키는 코드도 함께 반영이 된 것이다. 사이트에 들어가보면 알겠지만, 해당 패치가 적용된 날짜는 바로 2013년이다. 2021년까지 취약한 상태로 사용해온 것이다.
이슈의 대응
발빠르게 패치 버전이 나오고, 각 나라별로 긴급대응 가이드도 나왔다. 우리 나라에서는 이스트시큐리티와 안랩에서 각각 대응 권고를 내놓았다. log4j 2.17.1 이전 버전( 2.15.0, 2.16.0 , 2.17.0 업데이트 후에도 이슈가 발생하여 새로 배포됨)을 사용하고 있는 경우 반드시 업데이트를 해야 한다. 패치 내용은 log4j 에서 JNDI 파싱하지 못하도록 하는 내용이 주인 것으로 보인다. 로깅 라이브러리로 log4j대신 logback을 사용해도 유사한 문제가 있는 것으로 밝혀졌기 때문에 1.2.9 이상버전으로 패치해야 한다.
국내 Apache Log4j 2 취약점 주의 및 업데이트 권고
https://asec.ahnlab.com/ko/29479/
참고 용어
* JNDI(Java Naming and Dictionary Interface) 1990년대 후반에 JAVA 에 추가된 인터페이스이다. 디렉터리를 이용해서 Java 객체를 찾도록 해주는 인터페이스.
* LDAP 는 JNDI에서 사용하는 디렉터리 인터페이스
Reference
namu wiki : Log4j 보안 취약점 사태
git hub : CVE-2021-44228 Remote code injection in Log4j
Apach : Log4j 2/ LOG4J2-313
'Others' 카테고리의 다른 글
iPhone vs Android? (0) | 2021.12.14 |
---|---|
디즈니 플러스 가격, 동시접속 넷플릭스와 비교하면? (0) | 2021.12.12 |