
오픈소스 소프트웨어의 근본적 취약점…누가 어떻게 해결해야 하나?
현재 볼칸 야즈즈(Volkan Yazici)는 하루 22시간 무급으로 일하고 있다. 야즈즈는 지금 ‘로그4J(Log4J)’의 취약점을 해결하기 위한 프로젝트에 참여하고 있는 중이다.
로그4J는 프로그램을 작성하는 도중에 로그(log), 즉 유지 관리를 목적으로 프로그램의 동작 상태를 기록으로 남기기 위해 사용되는 자바 기반 오픈소스 소프트웨어이다. 이것은 아이클라우드(iCloud)에서 트위터까지 다양한 애플리케이션을 포함해 인터넷의 많은 부분들이 제대로 기능할 수 있게 도와주는 역할을 하는데, 최근 심각한 해킹을 야기할 수 있는 ‘취약점(vulnerability)‘이 발견돼 야즈즈와 팀원들이 이를 해결하기 위해 필사적으로 노력하고 있는 것이다.
게임 서버나 클라우드 서버를 운영하는 정보기술(IT) 기업체는 물론이고 웹사이트를 운영하는 기업들, 심지어 정부 기관까지 로그4J를 활용하고 있어 이 취약점이 해결되지 않을 경우 심각한 피해가 발생할 수 있다.
로그4J의 취약점을 악용하기는 너무나 쉽다. 이것을 사용하는 시스템에 악의적인 문자열을 전송하기만 하면 어떤 코드든 원하는 코드를 실행시킬 수 있다. 취약점이 드러나고 초반에 발생했던 공격 중에는 마인크래프트(Minecraft) 서버에 누군가 악의적인 코드를 붙여넣으면서 발생한 사례도 있었다. 주로 중국 및 이란과 연결되어 있는 해커들은 현재 로그4J를 사용하는 시스템의 취약점을 찾아내 악용하려고 하고 있다.
뚜렷한 해결 방법 보이지 않아
안타깝게도 아직 뚜렷한 해결 방법은 보이지 않고 있다. 이번 ‘로그4J 문제’는 몇 개월에서 몇 년까지 지속될 가능성이 있는 장기적인 보안위기에 해당한다. 미국 사이버보안 및 인프라 보안국(Cybersecurity and Infrastructure Security Agency)의 책임자 젠 이스털리(Jen Esterly)는 이번 상황이 자신이 목격한 “가장 심각한 문제”라고 밝힌 바 있다.
그런데 사람들은 세계 최대의 기술 기업들과 정부들이 이 취약점을 조속히 해결하기 위해 수백 명의 전문가들을 고용했을 거라고 기대할지도 모른다.
하지만 현실은 이런 기대와는 사뭇 다르다. 오랫동안 핵심 인터넷 인프라의 중요한 부분을 담당해왔던 로그4J는 무상으로 개발하여 공개하는 오픈소스 프로젝트이다. 따라서 수백만에서 수십억 달러 규모의 다양한 기업들이 로그4J를 활용하고 있고, 이들이 매일 이 소프트웨어를 통해 이익을 거두고 있다고 해도 로그4J 프로젝트는 여전히 상당 수준 무상으로 운영되고 있다. 다시 말해, 야즈즈와 그의 팀은 거의 아무런 금전적 보상도 없이 이 문제를 해결하고자 하고 있는 것이다.
이상한 상황처럼 보이겠지만, 사실 이는 오픈소스 소프트웨어 세계에서는 일상적으로 일어나는 일이다. 오픈소스 소프트웨어란 누구든 코드를 검토하고 수정하고 사용할 수 있게 공개된 프로그램을 뜻하며, 지난 수십 년 동안 인터넷이 제대로 기능하는 데 중요한 역할을 해왔다. 이러한 오픈소스 소프트웨어는 제대로 활용되고 있을 때는 다양한 사람들의 협력을 통해 탄생한 훌륭한 성과로 보일 수도 있지만 상황이 잘못되면 엄청난 위험이 될 수 있다.
구글에서 오픈소스 프로젝트를 맡아 작업하고 있는 개발자 필리포 발소다(Filippo Valsorda)는 “오픈소스는 인터넷이 돌아가게 하는 기반이며, 더 확장해서 생각하면 경제를 돌아가게 하는 기반이라고도 할 수 있다”면서 “그러나 핵심 인프라 프로젝트들도 해당 프로젝트에 대한 보수 없이 소규모 유지관리팀을 운영하거나, 유지관리 담당자 한 명만 배치하는 것이 매우 흔한 일”이라고 설명했다.
제대로 인정받지 못하는 일
야즈즈는 내가 처음 그에게 연락을 취했을 때 이메일을 통해 “우리 팀은 현재 24시간 내내 일하고 있다. 오전 6시부터 오전 4시까지(오타가 아니다) 잡혀 있던 내 근무가 방금 끝났다”고 답했다.
하루에 거의 22시간에 달하는 그 긴 업무 시간 중에 야즈즈는 트위터를 통해 상황을 비판하는 이들을 지적했다. 그는 트위터에 이렇게 적었다. “로그4J 관리자들은 오류를 수정하고, 문서화하고, 문의에 회신하는 등 상황 해결을 위해 조처하느라 잠도 제대로 청하지 못한 채 작업하고 있다. 그런데도 사람들은 우리가 돈도 받지 않고 하고 있는 이 일에 대해서, 그리고 우리도 다들 싫어하지만 ‘하위호환성(backward compatibility, 이전 제품을 위해 만들어진 제품이 새 제품에서도 별도의 수정 없이 그대로 쓰일 수 있는 것)’ 우려로 계속 유지해야 하는 부분에 대해서 계속해서 우리를 강도 높게 비난하고 있다.”
개발자가 아닌 사람들은 잘 모르고 있었지만 사실 다양한 곳에서 광범위하게 활용되고 있던 로그4J가 이번 취약점으로 인해 뉴스 헤드라인을 장식하기 전 프로젝트 책임자 랠프 고어스(Ralph Goers)의 작업을 도와주는 사람은 세 명뿐이었다. 다른 곳에서 정규직으로 일하면서 로그4J 관련 작업도 맡고 있는 고어스는 결함 있는 코드를 수정하고, 수백만 달러에 달하는 피해를 가져오고 있는 사태를 해결하는 일을 담당한다. 통상적인 근무를 마치고 남는 시간에 하기에는 너무나 엄청난 업무량이다.
보안회사 베라코드(Veracode)의 최고기술책임자 크리스 와이소팔(Chris Wysopal)은 오픈소스 프로젝트에 자금 지원이 부족하면, “미국뿐만 아니라 필수적인 인프라, 은행 시스템, 금융 등에 심각한 위험이 될 수 있다”면서 “오픈소스 생태계는 리눅스, 윈도우 및 기본 인터넷 프로토콜로 구성된 필수적인 인프라에 매우 중요하므로 문제가 발생하면 인터넷 전체에 영향을 주는 위험이 될 수 있다”고 경고했다.
오픈소스 소프트웨어의 유지와 관리상의 문제점
어떻게 상황이 이 지경에 이르렀을까? 이 질문은 “무상으로 얻을 수 있는 것에 대해서 기술 회사들이 돈을 낼 이유가 있을까?”라는 다른 질문으로 이어진다. 그러나 광범위하게 활용되고 있는 오픈소스 소프트웨어의 엄청난 중요성을 생각해 보면 현재와 같은 운영 방식으로는 오픈소스 생태계를 유지하기가 앞으로 점점 더 어려워질 것임을 알 수 있다.
“무급으로 일을 하는 사람들은 자신들이 재미있어하거나 흥미를 가지는 부분에 대해서만 작업할 권리가 있기 때문에, 중요한 인프라를 운영하는 데 지금처럼 개발자들이 무상으로 봉사하는 방식은 앞으로 지속될 수 없을 것이다. 오픈소스 프로젝트에는 철저한 테스트와 릴리스 엔지니어링(release engineering, 배포를 위해 완성 전 소프트웨어를 준비하는 과정), 문제점 분류 및 정리, 보안 검토, 코드 검토 등 다양한 과정이 필요하다. 그러나 무상으로 프로젝트에 참여하는 관리자들은 이런 일들에 전혀 관심이 없을 수도 있다.” 발소다의 설명이다.
로그4J 팀에 대해 엄청난 압박과 비난이 쏟아지면서, 오픈소스 세계의 공정성에 대한 오랜 질문이 다시 제기되고 있다.
로그4(Log4)를 만든 세키 굴추(Ceki Gülcü)는 “공정성은 중요한 문제다”라면서 “오픈소스 세계에는 무언가로부터 이익을 얻으면서도 아무것도 되돌려주지 않는 이상한 불균형이 존재한다”고 밝혔다.
대중들은 인터넷이 기능하는 데 도움을 주는 오픈소스 소프트웨어가 무료 노동으로 운영되고 있는 엄청난 상황과 그에 따른 위험에 대해 아무것도 모르고 있다. 예를 들어 암호화에 사용하는 OpenSSL과 리눅스는 안드로이드(Android)를 비롯해 지구에서 가장 널리 사용되는 운영체제의 기반이 된다.
굴추는 오픈소스 프로젝트와 관련한 직원 채용과 유지 관련 문제를 지적했다. 만약 어떤 프로젝트에 대해 회사가 보수를 주지 않을 수도 있다고 한다면, 그것이 아무리 큰 프로젝트라고 해도 인재를 끌어모으고 유지하기가 쉽지 않을 것이다. 게다가 이러한 상황은 국가 안보에까지 영향을 미칠 수 있다.
2018년에 ‘ua-parser-js’라고 하는 인기 있는 오픈소스 프로젝트를 만든 개발자가 더는 무료로 일할 수 없다면서 그만두는 일도 있었다. 해당 소프트웨어는 구글, 아마존, 페이스북 등 대형 기술 회사들이 사용한다. 그 후 ‘ua-parser-js’ 소프트웨어를 차지한 해커가 암호화폐를 훔치기 위해 소프트웨어에 악성코드를 추가했다. 미국 국토안보부는 이러한 해커의 작업에 대해 사용자들에게 경고를 보냈다. 해당 소프트웨어를 사용하는 개발자는 수천 명에 달했지만, 그 프로젝트에 모금된 금액은 고작 41달러 61센트에 불과했다. 익명의 후임자에게 통제권을 내줬던 원래 개발자는 그 상황을 보고 ‘제정신이 아니다(insane)’라고 표현했다.
그러나 업계 최상위권의 소프트웨어 개발자들이 몇 년 동안 무료 노동력을 투자한 대가로 늘 아무것도 얻지 못하는 것은 아니다. 예를 들어, 굴추는 로그4J를 무상으로 개발한 덕분에 금융 산업계에서 수익성이 좋은 다양한 소프트웨어 개발 업무를 제안받을 수 있었다.
사실 오픈소스 작업을 통해 포트폴리오를 쌓고, 그 포트폴리오로 일자리를 구하는 것은 상당히 일반적인 일이다. 어떤 면에서 이러한 구조는 다른 산업계의 무급인턴십과 유사하기도 하다. (물론 무급인턴십이나 오픈소스 작업 같은 시스템은 비윤리적이고 착취적이며, 주어진 여건상 무급으로 일을 할 수 없는 사람들 대신에 무급 작업을 맡을 여유가 있는 이들에게 유리하다는 점에서 불공평하다고 점점 더 여겨지고 있다.) 이렇게 오픈소스 작업에 자금 투자가 부족하면, 단순히 기술적인 문제뿐만 아니라 그 이상의 다양한 문제들까지도 계속 발생할 수 있다.
문제 해결 방법
그래도 이 상황에 대한 문제를 마침내 사람들이 인식하기 시작했다.
와이소팔은 “기술 기업들과 소프트웨어를 작성하는 모든 사람은 오픈소스에 의존한다”면서 “이제 정부 최고위층에서도 이러한 상황이 큰 위험이 될 수 있다는 사실을 인식하게 되었다”고 설명했다.
이스털리와 다른 전문가들은 기술 회사가 투명성을 향상시킬 필요가 있다고 강조했다. 조 바이든 미국 대통령이 ‘2021년 사이버보안 행정명령’에 따라 지시한 대로 ‘소프트웨어 구성요소 명세서(Software Bill of Materials, SBOM)’를 채택하면, 소프트웨어에 문제가 발견됐을 때 실제로 해킹에 취약한 부분이 무엇인지 개발자와 사용자 모두 더 잘 파악할 수 있게 될 것이다.
오픈소스 개발을 통해 좋은 직업을 얻은 사람 중 한 명인 발소다는 오픈소스 작업을 이용해 개발자들과 대기업들이 공식적이고 전문적인 관계를 구축하면 상황 개선에 도움이 될 수 있을 것이라고 설명했다. 그는 취미에 가까운 오픈소스 작업을 전문적인 커리어로 전환하는 방식을 지지한다. 그렇게 되면 중요한 인프라가 이미 정규직으로 일하고 있는 개발자의 여가 활동에 불과한 현재 상황을 바꿀 수 있을 것이다. 또한 그는 회사들이 오픈소스 프로젝트를 유지하는 사람들에게 공정한 시장 가치를 지불하는 시스템을 개발해야 한다고 주장한다.
일부 기업들은 이미 그 필요성을 인식하고 있다. 구글은 최근 오픈소스 개발을 지원하고 취약점을 수정하기 위해 1억 달러를 투자하겠다고 발표했다.
와이소팔은 오픈소스 프로젝트의 건전성을 이해하려면 더 많은 작업이 이루어져야 하며(마지막 업데이트가 일주일 전인지 2년 전인지 등), 좋은 프로젝트는 체계적으로 지원하고 제대로 보안이 이루어질 수 없는 프로젝트는 중단해야 한다고 주장했다. 또 다른 구글 프로젝트인 ‘오픈소스 기술 개선 기금(Open Source Technology Improvement Fund)’은 중요한 오픈소스 프로젝트를 감사하고 개선하는 것을 목표로 한다.
로그4J 취약점으로 인한 상황은 더 큰 문제를 보여주는 완벽한 사례이기도 하다. 결함이 소프트웨어의 설계에 있으므로, 결함을 찾기 위해서는 소프트웨어의 설계를 제대로 파악하고 있는 사람이 필요하다. 소프트웨어에 문제가 생겼을 때, 소프트웨어를 살펴보고 결함을 발견할 외부인을 고용하는 현재의 ‘버그바운티(bug bounty)’ 방식은 이런 상황에서 큰 도움이 되지 못한다. 외부인들에게는 소프트웨어에 대해 그렇게 깊이 파악해야 할 충분한 금전적 혜택이나 동기가 없기 때문이다.
와이소팔은 “이것은 완전히 시장실패”라며 이렇게 덧붙였다. “우리는 오픈소스 코드에서 좋은 부분만 차지하려고 하면서, 나쁜 부분은 다른 사람이 책임지도록 하고 있다. 문제를 찾아내고 고치는 데 더 많은 자금을 지원해야 한다.”