[보안뉴스 문가용 기자] 아파치재단(Apache Foundation)이 로그4j(Log4j)의 취약점인 CVE-2021-44228을 공개한 지 3달이 지났다. 하지만 아직도 자바 패키지 리포지터리인 메이븐센트럴(Maven Central)에서 로깅 도구를 다운로드 받으면 40% 확률로 취약한 버전들이 걸린다고 한다. 즉 다운로드 받기 전의 철저한 검사가 필요하다는 소리다.
[이미지 = utoimage]
메이븐센트럴의 관리 주체인 소나타입(Sonatype)은 로그4j 취약점 소식이 나오자마자 취약한 버전을 포함하고 있는 도구들이 얼마나 다운로드 됐나를 측정하기 시작했다. 그 결과 2월 4일부터 3월 10일까지의 기간 동안 약 41%의 패키지가 2.15.0 이하 버전의 로그4j를 내포하고 있었던 것으로 집계됐다. 2.15.0 버전은 12월 10일 아파치재단이 발표한, 패치가 적용된 버전이다. 그 이후 추가로 발견된 취약점들이 있어 후속 버전들이 나오기도 했다. 즉, 최소 2.15.0 버전은 되어야 로그4j 취약점으로부터의 안전 하한선을 보장받을 수 있다는 것이다.
소나타입이 공개한 자료에 의하면 2021년 12월 10일부터 현재까지 로그4j를 포함한 라이브러리들은 총 3140만 번 다운로드 됐다고 한다. 이 중 취약한 버전이 얼마나 되는지는 정확히 알 수 없지만 최근 집계된 41%를 대략적으로 적용할 경우 적어도 1천만 회 이상 취약한 버전이 다운로드 됐다고 볼 수 있다. 로그4j 사태가 그렇게나 대대적으로 시끄러웠어도 말이다.
로그4j와 레이어
왜 어떤 개발자들과 조직들은 취약점 소식이 여러 경로로 나오고 있음에도 취약한 버전을 그대로 받아서 사용하는 걸까? 아니, 왜 처음부터 그런 취약한 버전을 사람들 혹은 플랫폼들에서 배포하는 걸까?
보안 업체 퀄리스(Qualys)의 부회장인 트라비스 스미스(Travis Smith)는 이에 대해 몇 가지 답을 제시한다. “대부분은 자동 빌드 시스템들이 알아서 다운로드 하기 때문일 겁니다. 필요한 소프트웨어 요소들을 자동으로 파악하고, 그걸 자동으로 검색해 자동으로 다운로드 받는 시스템들이 다수 사용되고 있죠. 만약 소프트웨어 관리자나 개발자가 이 부분에까지 신경을 쓰지 않는다면 기존처럼 취약한 버전들이 계속해서 다운로드 될 겁니다.”
또, 로그4j가 수많은 자바 애플리케이션들의 필수 요소이고, 몇 층위 아래에 깊숙하게 박혀 있기 때문에 찾기가 힘들다는 점도 문제 해결을 더디게 만든다고 스미스는 지적한다. “로그4j는 벽돌 건축물 속의 특정 벽돌 같습니다. 벽돌이 있는 그대로 노출된 건물도 있지만, 대부분은 벽돌은 안에 있고, 그 바깥에 마감재들이 겹겹이 붙어 있죠. 문제가 되는 벽돌을 하나 찾으려면 마감재를 다 뜯어내야 하기 때문에 일이 커집니다. 큰 일을 하는 과정일 수도 있고, 일이 커서 시작도 못하고 있는 경우도 있을 겁니다.”
그 외에, 취약한 버전의 분석과 실험을 위해 다운로드 하는 전문가들의 수도 적지 않을 거라고 스미스는 말한다. “보안 전문가들이나 보안에 관심이 많은 개발자들이 자신들의 기존 작품들의 소프트웨어 요소들을 실험하고 분석하기 위해 일부러 취약한 버전을 다운로드 받는 경우도 있습니다.”
소나타입의 CTO인 일카 투루넨(Ilkka Turunen)은 “이런 저런 까닭들이 있겠지만 기본적으로는 소프트웨어 공급망 관리 체계를 갖춘 기업들이 거의 없어서”라고 지적한다. “소프트웨어 개발을 하려면 여러 가지 하위 소프트웨어들을 사용할 수밖에 없습니다. 작은 소프트웨어 수십~수백 개가 모여 하나의 큰 소프트웨어를 만드는데, 이걸 일일이 검사하는 곳은 거의 없습니다. 그래서 최근 소프트웨어 물자표(bill of materials) 제도를 도입하자는 목소리가 나오고 있지요.”
투루넨은 로그4j 사태가 터지고 나서 해당 문제 해결을 위해 여러 기업과 조직들을 방문해 상담을 진행했다고 한다. “실질적인 개선을 가로막는 가장 큰 장애는 인식 수준이었습니다. 로그4j 사태의 심각성을 완전히 이해하지 못하고 있고, 설명해도 대수롭지 않다고 여기는 조직 임원진들과 개발자들이 거의 대다수였습니다. 또한 자신들이 사용하는 서드파티 요소들에 대해 아무 것도 모르는 조직들이 그렇게 많다는 것도 처음 알았습니다. 뭔가를 개발해서 시장에 내놓긴 하는데, 그 구성 요소나 원리에 대해서는 전혀 모르고 있는 곳이 태반이었습니다.”
보안 업체 퀄리스는 자사 클라우드 보안 플랫폼으로부터 데이터를 추출해 분석했고, 그 결과 인터넷에 존재하는 로그4j 인스턴스들 중 30%가 여전히 취약하다는 사실을 알아냈다. 이는 위의 소나타입의 연구 결과와 비슷하다. 보안 업체 불칸사이버(Vulcan Cyber)의 엔지니어인 마이크 파킨(Mike Parkin)은 “로그4j는 무수히 많은 곳에서 사용하고 있으며, 무수히 많은 패키지에 내포되어 있다”고 말한다. “그러니 개발자마다 자신만의 방식으로 로그4j를 다루거나 관리하고, 그러니 취약한 버전들이 여전히 많은 비율을 차지할 수밖에 없습니다.”
취약한 버전들이 왜 아직도 다운로드가 가능하도록 설정되어 있는가?
그렇다면 메이븐센트럴과 같은 리포지터리들도 들고 일어나 취약한 버전이 애초부터 유통되지 않도록 막으면 되지 않을까? 스미스는 “그리 간단한 문제가 아니”라고 설명한다. “아직 수많은 소프트웨어와 애플리케이션들이 취약한 버전의 소프트웨어와 연계되어 있습니다. 갑자기 리포지터리에서 특정 버전을 삭제하면 소프트웨어들과 애플리케이션들은 물론, 그런 것들이 설치된 시스템이 고장을 일으킬 수도 있습니다. 누구도 예측할 수 없는 리스크인 것이죠.”
소나타입의 CTO인 브라이언 폭스(Brian Fox)는 “메이븐센트럴은 일종의 가스 파이프라인과 같은 것이지 주유소는 아니”라고 비유한다. “주유소에서는 고객이 원하는 유종을 원하는 만큼 골라서 넣을 수 있어요. 하지만 가스 파이프라인에서 그렇게 하지는 못하죠. 가스 파이프라인은 그저 필요한 연료들을 나르고 옮겨서 에너지 유통이 원활히 이뤄지도록 하는 역할만 할 뿐입니다. 메이븐센트럴이 특정 소프트웨어를 선별하는 순간 수많은 소프트웨어의 마비를 야기하는 것이 되고, 그건 메이븐센트럴 본연의 역할을 크게 위반하는 것입니다.”
그러면서 폭스는 2016년에 발생한 한 사건을 예로 든다. “한 프로그래머가 레프트패드(left-pad)라는 걸 개발했습니다. 그리고 이를 자바스크립트 리포지터리인 npm에 올렸다가 다른개발자들과 말다툼을 하고 삭제했어요. 그런데 이미 수천~수만 개의 애플리케이션들이 이 레프트패드를 사용하고 있었습니다. 그래서 여러 소프트웨어들이 작동하지 않기 시작하면서 인터넷 일부 구간에 꽤나 큰 ‘마비 현상’이 찾아왔어요. 로그4j를 메이븐센트럴에서 그런 식으로 대체하면 인터넷 사용자 모두 잃는 게 더 많아질 겁니다.”
3줄 요약
1. 3달 전에 발견된 로그4j 취약점, 이미 패치된 버전까지 오래 전에 나옴.
2. 그런데도 취약한 버전이 40% 정도 다운로드 되고 있음.
3. 소프트웨어 공급망 관리 부실과 낮은 인식 수준, 일부 보안 연구 때문.
[국제부 문가용 기자(globoan@boannews.com)]
<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>