728x90

전세계를 휩쓸고 있는 log4j 보안 취약점에 대한 대응이 슬슬 후반부로 들어가는 느낌입니다. 
log4j 보안 취약점에 대한 대응이 진행되지 못한 곳도 여전히 보이지만 주요한 글로벌 소프트웨어들은
log4j 의 새로운 버전 릴리즈에 맞추어 새롭게 패키징 된 버전들을 속속 공개하고 있습니다. 

 

취약점이 제거된 log4j의 2.16 버전 공개

이번 사태의 원흉(?)이 된 log4j의 새로운 2.16버전이 13일에 공개되었습니다. 
어떻게 대응을 했는가 가만히 살펴보니 기본적으로 JNDI 기능을 Disable 상태로 변경한 것으로 보입니다. 

https://logging.apache.org/log4j/2.x/changes-report.html?fbclid=IwAR2MKfhkCHCqeWzJ2LbTuRugBrshBGZfkDBS-5vWhI2y7fXNxUQPGCxWdrM#a2.16.0 

 

Log4j – Changes

Add a Builder to JsonLayout and deprecate org.apache.logging.log4j.core.layout.JsonLayout.createLayout(Configuration, boolean, boolean, boolean, boolean, boolean, boolean, String, String, Charset, boolean). Fixes LOG4J2-1738. ggregory

logging.apache.org

 

취약점이 제거된 Logstash의 새로운 버전 7.16.1과 6.8.21 버전 공개

Logstash는 7버전과 6버전의 두개의 스트림이 존재합니다. 
이번 취약점은 7버전과 6버전 모두에 해당되었기에 양쪽의 버전이 하나씩 올라갔습니다.

Logstash의 릴리즈 노트를 살펴보면 의존성 라이브러리로 포함되어 있는 log4j의 버전을 
취약점이 제거된 2.15.0 버전으로 변경했다는 것을 확인할 수 있습니다. 

지난 포스팅에서 소개했던 것처럼 임시로 JNDI를 Logstash의 core-jar 에서 제거한 상태로 써도 무방하지만 
기왕 새로운 버전이 나온 김에 릴리즈 노트를 살펴보고 오래된 Logstash 버전들을 개비해주는 것도 좋은 선택입니다. 

 

Download Logstash Free | Get Started Now

Download Logstash or the complete Elastic Stack (formerly ELK stack) for free and start collecting, searching, and analyzing your data with Elastic in minutes.

www.elastic.co

 

Logstash 업그레이드 방법은?

설치되어 운영중인 Logstash의 버전 업그레이드는 사용 환경에 따라 다릅니다.
패키지 매니저를 이용해서 설치한 경우라면 운영체제 버전에 맞추어 아래의 명령을 사용하시면 되겠습니다. 

# Ubuntu
apt-get upgrade logstash

# CentOS / Redhat
yum update logstash

# Mac
brew upgrade logstash

널리 사용되는 라이브러리에서 발생하는 문제는 늘 많은 어려움을 낳습니다. 
특히 의존성 관계를 갖게 되는 라이브러리라면 그 파급효과가 엄청납니다. 
아무쪼록 이번 보안 취약점으로 인해 큰 탈을 겪지 않았길 바래봅니다.

728x90
728x90

(2021.12.14 업데이트) 그 사이 log4j 의 패치 버전이 나오고, 패치된 log4j를 탑재한 Logstash의 새로운 버전이 공개되었습니다. 자세한 내용은 새로 올린 아래 포스팅을 참고해 보세요!

 

log4j 보안 취약점이 패치된 Logstash 공개

전세계를 휩쓸고 있는 log4j 보안 취약점에 대한 대응이 슬슬 후반부로 들어가는 느낌입니다. log4j 보안 취약점에 대한 대응이 진행되지 못한 곳도 여전히 보이지만 주요한 글로벌 소프트웨어들

ondemand.tistory.com

 


 

주말 내내 log4j 에 대한 폭풍이 계속 이어지고 있습니다. 직접 개발한 소스코드를 이용하는 경우 새로 공개된 log4j 의 바이너리(2.15.0+)를 이용해 빌드를 다시 하면 되지만 그렇지 않은 오픈소스나 외부의 패키지를 이용한 경우들이 계속 발견되고 보고되고 있습니다. 

저 역시 로그 수집을 위해 Logstash 클러스터를 운영하고 있던 관계로 log4j 에 대한 취약점 대응을 해야 했습니다. 직접 만든 코드가 아니다보니 log4j 에 대한 대응을 어떻게 해야 하나 찾아본 결과를 정리해 봅니다.

혹시나, "이게 머선일이고!?" 하는 분이 계시다면 아래의 링크로 빠르게! 취약점을 내것으로 만들어 보시기 바랍니다!

https://ondemand.tistory.com/345

 

Zero Day Vulnerability - log4j 에 무슨일이 생긴걸까?

지난주 후반부, 한국 뿐만 아니라 전세계가 시끌시끌했습니다. 사실상의 서버측 로깅 표준으로 자리잡힌 log4j 로깅 모듈의 보안 취약점이 발견되었고 공격방법이 인터넷에 고개되면서 Zero Day Vul

ondemand.tistory.com


영향받는 logstash 버전은?

Logstash의 6.8.20 이하, 혹은  7.16.0 이하 버전은 모두 영향범위에 들어갑니다. 오래된 버전은 log4j 의 낮은 버전이 탑재되어 있을 수 있겠지만 기본적으로 현시점까지 릴리즈된 버전은 모두 영향범위로 보는 것이 맞겠습니다.

// logstash의 경로는 사용 환경에 따라 다를 수 있습니다
//
$ /usr/share/logstash/bin/logstash --version
logstash 7.3.1

 

새로운 버전의 릴리즈는?

가장 확실한 방법은 새로운 버전의 릴리즈를 기다리는 것입니다. Logstash의 가장 최신 버전은 7.16.0 버전으로 확인됩니다 (2021.12.13 오전 7:38 기준) 이 버전에서 사용하고 있는 log4j 는 취약점이 있는 버전으로 조치가 필요합니다.

현재 예고되어 있는 패치 버전의 공개는 한국 시간으로 늦어도 14일까지 릴리즈 될 예정입니다. 따라서 아직까지는 보안 취약점이 제거된 새로운 릴리즈 버전을 사용할 수 없고, log4j 의 취약점 대응을 다른 방식으로 해야만 합니다.

 

 

Logstash core-jar 파일에서 jdni 클래스를 삭제하기

elastic 에서 logstash 의 log4j 취약점 제거를 위해 공식 가이드하고 있는 방법은 logstash 패키지에 포함된 core-jar 파일에서 jdni 클래스를 제거하는 방법입니다. 느낌이 왔겠습니다만 아주 확실하고 강려크한 방법이라고 생각합니다. 참고로 한때 유통되던 log4j 의 실행시 옵션을 주는 방법은 유효하지 않다고 합니다. 클래스를 확 날려버리는게 현재로서는 가장 확실한 방법입니다.

// jdnilookup.class 를 삭제합니다
// 경로 (/usr/share/logstash)는 각자의 환경에 맞추어 수정합니다
//
sudo zip -q -d /usr/share/logstash/logstash-core/lib/jars/log4j-core-2.* org/apache/logging/log4j/core/lookup/JndiLookup.class

// 자바 클래스 재로딩을 위해 logstash 를 재기동합니다
//
sudo systemctl restart logstash

 


log4j 처럼 광범위하게 사용되는 패키지의 취약점 발견으로 여기저기 들썩들썩합니다. 모두들 무탈히 이슈 대응 하시길 기원합니다!

728x90
728x90

마이크로소프트는 최근 비주얼 스튜디오 2015 버전을 공개하면서 ASP.NET 5 와 크로스플랫폼 런타임 환경인 .NET CLR Core 을 공개했습니다. 새로운 버전의 공개에 맞추어 지난 20일 마이크로소프트 닷넷 개발자 블로그 포스팅을 통해 버그 혹은 취약점을 발견하는 이들에게 최대 15,000달러의 포상금을 지급하는 프로그램이 시작됨을 알렸습니다. 버그와 취약점에 대한 리포트는 새롭게 공개된 ASP.NET 5 와 .NET CLR Core 에 대해 적용되며 아직까지 개발이 진행중인 네트워크 스택(Network Stack)은 이번 프로그램에서 일단은 제외된다고 합니다.


마이크로소프트가 이번과 같은 프로그램을 운영했던 적이 있는지 찾아보지는 못했습니다만 근래 메신저 서비스인 텔레그램(Telegram)의 보안 취약점 관련 프로그램이나 라인(LINE)의 버그 바운티(Bug Bounty) 처럼 보다 적극적으로 취약점을 찾고 보완하여 크로스플랫폼 시장에서의 존재감을 만들어 나가겠다는 적극성이 물씬 느껴지는 듯 합니다. 시간이 되시는 분들이나 관심 있으신 분들은 닷넷 코어의 크로스플랫폼 버전에 대해서 심도 있는 지식도 쌓고 포상 프로그램을 통해 금전적인 혜택도 받아볼 수 있는 기회로 만들면 더할나위 없이 좋은 기회일 것 같습니다.




포상금은 취약점 타입별로 몇 가지 등급으로 나뉘어져 있습니다. 단순한 크로스 사이트 스크립트(XSS)와 같은 케이스는 심각도에 따라 500 달러에서 최대 2,000 달러까지 지급되며, 원격 코드 실행(Remote Code Execution)과 같은 심각한 케이스에 대해서는 최대 15,000 달러까지 포상금이 책정되어 있습니다. 보안 취약점을 찾아내어 증명하기 쉬운 것과 어려운 것에 차별점을 두어 보다 심각한 오류, 버그에 대해서는 충분히 그 보상을 해주겠다는 의미로 해석됩니다.



소프트웨어, 어플리케이션을 개발하다 보면 다양한 입력감 검증이나 변수 핸들링, 체계적으로 제한된 위임등을 통해 가능한 불필요한 코드의 영향을 줄이고 테스트 케이스들을 통해 이들이 정상적으로 동작하는지 검증하는 일들을 늘 하게 됩니다. 하지만 사람이 하는 모든 일들이 그렇듯 모든 예외 케이스나 특정한 상황을 다 찾아내어 테스트 하는 것은 거의 불가능합니다. 그래서 늘 패치(Patch)가 존재하고 버그 픽스(Bug Fix)가 필요할 수 밖에 없습니다. 쟁쟁한 사람들이 모여 만들고 테스트하여 출시하는 마이크로소프트에서도 버그 포상 프로그램을 통해 보다 완벽한 환경을 만들고자 하는 것을 보면 창과 방패의 관계처럼 완벽을 "추구"하는 코드와 버그와의 전쟁은 앞으로도 계속 될것만 같습니다!


닷넷 코어 CLR 및 ASP.NET 5 버그 포상 프로그램 포스팅 살펴보기 [바로가기]

버그 포상 프로그램 상세 시상(?) 내역 및 범위 살펴보기 [바로가기]


728x90

+ Recent posts