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

대세는 https 입니다. 새로운 http 표준인 http/2 (aka h2) 는 Clear Text 에 관한 규약을 가지고 있긴 하지만 시장에 있는 대부분의 브라우저들은 TLS 기반의 통신을 http/2 를 이용하기 위한 기본 조건으로 내걸고 있습니다. 프로토콜의 변화 뿐만 아니라 렛츠인크립트(Let's Encrypt)와 같은 무료 인증서 배포가 대중화되기 시작하면서 스트리밍(Streaming)과 같이 레이턴시(Latency)에 민감한 부문을 제외하면 전반적인 https 로의 전이가 그리 오래 걸릴 것 같지는 않습니다.


WWDC 2016 에서 애플은 ATS 에 대한 정책 강화를 통해, 앱의 인터넷 구간 통신 프로토콜로 https 를 강제하기 시작했습니다. 자세한 글을 [이곳에서] 읽으실 수 있습니다.


그런데 https 규약 자체가 보안을 의미하지는 않습니다. https 는 공개키 기반의 인증 기술을 활용하여 브라우저(클라이언트)와 서버가 통신하는데 있어서 외부에서 침투할 수 없는 채널을 만들어주는 기술이지 사전에 악의적인 사용자가 서버측에 대한 탈취를 한 경우에는 큰 소용이 없습니다. 소위 맨 인더 미들 어택(MITM, Man In The Middle Attack)과 같은 것들이 그런 사고를 지칭합니다. 때문에 공개키 기반이라는 특성을 활용하여 SSL/TLS Handshake 를 하는 과정에 일종의 검증 절차를 넣어 그런 사고를 줄이고자 하는 것이 OCSP (Online Certificate Status Protocol) 입니다.


출처 : WWDC 2016 - 애플 시큐리티 세션


OCSP 는 기본적으로 클라이언트와 서버가 통신하는데 있어서 인증서를 발행한 사업자, 소위 CA (Certificate Authority) 라고 불리우는 회사의 서버를 통해 내가 접속하고자 하는 서버가 올바른 서버인지를 확인하는 절차입니다. 이 배경에는 각 CA 가 인증서를 발급하는 과정에 취하고 있는 다양한 확인 절차가 있습니다. 이 절차를 통해 발급된 인증서는 믿을 수 있다는 전제하에 클라이언트가 서버로 부터 전달받은 인증서를 발급자에게 "유효하고 정상적인 인증서인가?"를 질의하는 절차입니다.


문제는 안그래도 SSL/TLS Handshake 로 https 통신을 시작하기 위한 비용과 시간이 큰 편인데 CA 의 서버까지 컨택하고 와야 하니 딜레이가 더 커지면서 웹 사이트나 서비스 이용에 안좋은 영향을 끼치기 시작했다는 점입니다. 여기에 더하여 CA 의 서버가 과부하 등으로 제대로 응답하지 못하거나 이슈가 생긴 경우에는 OCSP 가 제대로 진행되지 못하는 상황이 발생할 수 있다는 것이 확인되었습니다. 그래서 이런 절차를 조금더 단순화하면서도 보안을 여전히 보장해보자 하는 관점에서 등장한 것이 OCSP Stapling 입니다.


출처 : WWDC 2016 - 애플 시큐리티 세션


OCSP Stapling 은 "스테이플링" 이라는 이름에서 보이는 것처럼 인증서가 유효하다는 정보를 클라이언트가 접속하고자 하는 서버가 CA 의 인증 서버를 통해 확인받고 이 정보를 사용자에게 인증서를 전달할때 같이 주는 방식입니다. 클라이언트가 글로벌에 분포된 불특정 다수의 사용자라고 하면 서버는 상대적으로 훨씬 적은 수라는 점에서 CA - 서버간의 통신이 이슈가 될 상황이 훨씬 적을거라는 추정이 가능합니다.



728x90
728x90

서비스를 제공하는 사람과 회사는 늘 악의적인 해커의 공격으로부터 서비스 인프라와 사용자들을 지켜야 하는 숙제를 안고 있습니다. 우리 회사의 웹 사이트는 안전한지, 공격이 발생했을 때 어떻게 사용자 정보를 보호할 것인지, 그리고 공격이 지속되는 상황에서 어떻게 서비스를 지속적으로 제공할 수 있도록 할 것인지에 대한 고민을 해야만 합니다. 세계 최대 CDN 공급 사업자인 아카마이(Akamai)는 이런 고민들 중 "지속적인 서비스의 제공" 관점에서 DDoS 공격 발생시 그 여파를 경감시킬 수 있는 보안 사업자를 선택하는 4가지 포인트를 인포그래픽으로 정리하여 공개했습니다.





#1. 위협에 대한 뛰어난 지식을 보유하고 있는가? (Maximal Threat Intelligence)


IT 기술이 발달하는 것과 보조를 맞추어 해커들의 공격 기술도 더욱 정교하게 바뀌고 있습니다. 다양한 계층에서의 공격 (e.g. OSI 7 Layer) 은 물론이고 서비스 인프라의 취약점을 발빠르게 캐치하여 진행하는 공격 등 해커들의 수준이 점점 높아지고 있습니다. 따라서 보안 사업자를 선정함에 있어 이러한 최신의 공격을 잘 이해하고 있는지, 그리고 어떻게 방어해야 할지를 알고 선제적인 조치를 취해줄 수 있는지를 검토해야 한다고 아카마이는 이야기하고 있습니다.





#2. 얼마나 많은 공격을 막아본 경험이 있는가? (Most Front-Line Experience)


음식도 많이 먹어본 사람이 맛집을 잘 찾는 것처럼 해커들의 공격 역시 많이 경험하고 막아본 사업자만이 잘 막을 수 있다는 것은 당연한 사실입니다. 하드웨어 기반의 DDoS 어플라이언스를 도입할때도 늘 중요하게 평가되는 것이 얼마나 많은 기업들이 장비를 도입 했고 사용하고 있는가 입니다. 시대가 클라우드 세상으로 바뀌면서 하드웨어 어플라이언스를 도입하는 것보다는 플랫폼을 이용하면서 플랫폼이 제공하는 방어 도구를 이용하는 경우가 많아지고 있습니다. 아카마이라던가 아마존처럼 글로벌 클라우드 인프라를 운영하는 회사들은 아무래도 이런 부분에서 경험치가 높을 수 밖에 없을 것 같습니다.





#3. 다양한 방법을 이용하여 DDoS 를 경감시킬 수 있는가? (Best Mitigation Capabilities)


해커들의 공격은 매년 규모가 더 커지고 있습니다. 제로데이 취약점을 이용하여 미처 보안 업체들이 패턴 업데이트를 하거나 취약점에 대한 패치가 공급되기 전에 공격이 시작되는 경우도 많습니다. 이런 공격들이 발생했을 때 얼마나 효과적으로 다양한 방법을 이용해서 DDoS 공격을 경감시키고 막을 수 있을 것이냐는 중요한 포인트입니다. 웹 방화벽으로 불리우는 7계층의 WAF 에서부터 IP / TCP 계층에서의 공격 등 다양한 형태의 공격을 대응 하나의 플랫폼으로 대응할 수 있는 기업은 아직 많지 않은 것 같습니다.





#4. DDoS 경감을 위한 인프라의 가용량이 충분한가? (Global Mitigation Capacity)


DDoS 공격이 무서운 것은 서비스 인프라의 자원이 정상적인 서비스를 할 수 없도록 만들기 때문입니다. IT 인프라의 수준이 발달하는 만큼 DDoS 공격의 규모가 커지는 것은 서비스 불가 상태를 만들기 위해 더 많은 공격 자원이 필요하다는 것과 일맥상통하는 부분입니다. 결국 그러한 공격을 받아낼 수 있는 인프라, 플랫폼을 가지고 있지 않은 사업자는 DDoS 에 대한 대비책으로 선택하기는 어려워 보입니다. 순간적으로 수백기가 혹은 테라급의 트레픽이 몰려왔을 때도 문제 없는 플랫폼을 가진 사업자의 선정이 중요한 포인트라 하겠습니다!





서비스를 기획하고 준비하는 단계에서부터 바야흐로 글로벌을 생각해야만 하는 시기입니다. 이는 언제든 대규모의 공격이 발생할 수 있고 이에 대한 대비도 같이 해야한다는 것을 의미합니다. 아카마이, 엣지캐스트, 아마존, 애져 등 많은 클라우드 사업자들은 근래에 보안에 대한 많은 상품과 전략을 발표하고 있습니다. 이는 고객들의 니즈가 보안에 많다는 것을 의미하고 이를 잘 처리할 수 있는 기업이 또 한번의 플랫폼 전쟁의 승자가 될 수 있다는 것을 암시합니다. 여러분의 선택은 어떤 플랫폼인가요...?





728x90

+ Recent posts