지난 몇 달 간 전 세계 보안 전문가들은 눈코 뜰 새 없이 바빴다. 역사상 최악이라는 로그4j 취약점이
발표되어 보안 관련 업체마다 긴급대응팀이 24시간 가동됐다. 첫 번째로 발견된 취약점
(▲CVE-2021-44228)에 대응하기 위한 패치 배포 후 4일 만에 또 다른 취약점(▲CVE-2021-45046)이
발견됐고 이후로도 추가 취약점(▲CVE-2021-42550 ▲CVE-2021-45105)이 연달아 보고되면서,
새로운 패치를 배포하고 설치하는 작업이 반복됐다.
보안 전문가들의 밤잠을 앗아간 로그4j 취약점은 백신 접종자들을 쉽게 감염시키며 전 세계 방역
전문가들을 긴장하게 만드는 오미크론 변이와도 꽤나 닮았다. 로그4j 취약점 보완 패치 배포와
새 취약점 발견이라는 소식이 한 달 새 네 번이나 들려오면서 일부에서는 이를 두고 “패치에도
불구한 돌파 감염”이라는 표현을 쓰기까지 한다. 이는 새 취약점 발견 시마다 이에 대응한 패치를
배포하는 것은 문제를 근본적으로 해결할 대안이 될 수 없다는 점을 시사한다. 패치(PATCH)라는
영어 단어의 원뜻 그대로 구멍 난 부분을 사후에 메우며, “선발견 후조치” 대응책이 될 뿐이다.
지난 11월 24일, 알리바바 클라우드 보안팀은 로그4j 취약점을 처음 발견해 아파치소프트웨어재단에
비공개로 전달했다. 그저 우연의 일치겠지만, 같은 날 남아공 의료진이 처음으로 오미크론 변이를
세계보건기구(WHO)에 보고했다는 사실은 마치 평행 우주에서 일어난 운명의 장난같다.
IT 서비스를 제공하는 업체와 기관에서는 데이터 출력, 시스템 감사, 로그로 인한 문제 해결 등을 위해
서버의 동작 상태를 기록으로 남기는 일을 하며 이를 “로깅”이라 한다. 로그4j는 자바 시스템(Java
System)에서 “로깅”을 위해 사용된다. 무료로 제공되는 오픈소스이기에 트위터, 아마존, 애플 등
글로벌 기업과 각국 정부 기관을 포함해 가장 널리 이용되는 로깅 라이브러리다. 사용자 요청의
모든 데이터(URL, Query, Header, Body 등)가 로깅 함수 인자로 사용되는 코드가 존재한다면,
해커는 비밀번호 없이도 내부망에 접근해 데이터 유출, 악성 프로그램 설치가 가능하고 이를 통한
2차 3차 사고를 일으킬 수 있어 그 위험성은 이루 말할 수 없다.
업계에서는 급히 ▲Log4j 업데이트, ▲Log4j JndiLookup Class를 classpath에서 제거 ▲Log4j Lookup :
false 설정 등의 방안을 제안했다. 하지만 이 방법으로는 Log4j의 변종 취약점이 발견될 때마다 새로운 대책을
강구해야 한다. 그래서 빠르고 쉬운 대응 방법으로 ▲사용 중인 웹 방화벽 Rule에 취약점 탐지 패턴을
추가하는 방식도 제안됐다. 하지만 웹 방화벽은 종단 간(End-to-End) 암호화된 데이터에 대해서
취약점 탐지 패턴을 검증하지 못하는 한계가 있어, 이 또한 실제 해커의 공격에 효율적인 대응책이 되지 못한다.
가장 확실한 방법은 로깅 함수에 사용되는 인자 값을 모두 검증하는 것이다. 하지만 규모가 큰 기관의
로깅 함수 호출 수는 수천만 개에 달한다. 새로운 코드가 개발된 경우에도 제대로 관리하기 쉽지 않으며,
수천만 인자를 모두 검증하는 것은 마치 서울에서 김 서방 찾는 격이 될 것이다.
웹 방화벽처럼 설정하기 쉽고, 다양한 취약점 탐지 패턴을 서비스 중단 없이 추가할 수 있으며,
엄청난 수의 로깅 함수 인자 값과 새로 개발되는 코드의 로깅 함수 인자 값 등을
모두 빠르게 검증할 방법은 없을까?
에버스핀은 이 모든 조건을 충족시킬 방법을 다음의 다이어그램으로 표현해 보았다.
웹 방화벽을 지나 취약점 탐지 패턴을 검증하는 과정이며, 에버세이프 웹 보안 솔루션의
제로데이필터(ZeroDayFilter) 기능의 동작 순서다. 웹 방화벽 너머에서 종단 간 암호화된 데이터의
복호화 이후 취약 패턴 검증 필터를 적용하면, 새로운 코드를 포함한 모든 로깅 함수 인자 값에 대해
서비스의 중단 없이 취약점 탐지가 가능하며 이는 간단한 설정으로 추가할 수 있는 기능이다.
이러한 기능을 포함한 에버세이프 웹 보안 솔루션은 올해 첫 출시 이후, 키움 증권, 우리카드 등
주요 금융사에 도입됐다. 에버스핀은 로그4j 뿐 아니라 널리 사용되고 있는 오픈 소스 라이브러리에 대해서
지속적 버그바운티(취약점 보상 프로그램: 보안 취약점을 최초 보고한 연구원에게 보상을 지급하는 프로그램)을
진행하여 향후 발생할 수 있는 위협으로부터 선제 대응을 제공하고자 한다.
[보안 이야기] 월간 피싱리포트 vol.2 (0) | 2022.08.01 |
---|---|
[보안 이야기] 월간 피싱리포트 vol.1 (0) | 2022.08.01 |
[보안 이야기] 초보 보안러의 근시안적 보안론-1 (1) | 2022.08.01 |
댓글 영역