[보안뉴스 = 자이 비자얀 IT 칼럼니스트] 최근 XZ유틸즈(XZ Utils)라는 데이터 압축 프로그램에서 백도어가 발견된 사건이 있었다. 현존하는 거의 모든 리눅스 배포판에 기본적으로 탑재되는 프로그램인지라 충격이 상당했다. 불행 중 다행으로 모든 버전에 영향을 주는 건 아니었기 때문에 여파가 생각보다 크지는 않았다. 하지만 오픈소스를 즐겨 활용하는 모든 개발자나 회사, 기관들에 적잖은 불안감을 남기기는 했다. XZ유틸즈는 가장 널리 사용되고 가장 성공적인 오픈소스의 사례 중 하나로 손꼽히고 있었다.

[이미지 = gettyimagesbank]
이 사건을 이해하려면 먼저 XZ유틸즈에 대해 알아야 한다. 모든 오픈소스 프로젝트가 그렇듯 XZ유틸즈도 자원하는 사람들이 참여하여 유지하고 보수하는 방식으로 운영되고 있었다. 유지 관리를 중심적으로 맡는 주체를 ‘메인테이너(maintainer)’라고 부르는데, 오픈소스에 따라 메인테이너가 여럿이기도 하고 단일 인물 혹은 단체이기도 하다. XZ유틸즈의 경우 메인테이너가 한 명이었다.
메인테이너들은 특별히 오픈소스의 보안에 대한 책임을 지지도 않고, 보안 관련 기능을 일부러 더 추가하지도 않는다. 오픈소스를 사용하는 사람들이 리스크를 인정하고 감수하는 게 오픈소스 계통의 불문율이다. 보안 업체 엔도(Endor)의 제품 관리자 제이미 스콧(Jamie Scott)은 “그렇다는 건 사용자 편에서 다른 모든 서비스나 소프트웨어를 관리하듯 오픈소스도 관리해야 한다는 뜻”이라고 설명한다. “사용자가 안전하게 관리한다고 해서 오픈소스의 모든 것이 안전해지는 건 아닙니다만, 위험을 크게 줄일 수 있는 건 확실합니다.”
그래서 그는 “오픈소스를 아웃소싱처럼 여기는 것이 모든 문제의 근원”이라고 지적한다. “돈을 내고 외부에서 뭔가를 가지고 들어올 때, 우리는 돈을 준 만큼 판매자들이 안전도 책임져주기를 기대합니다. 그건 정당할 수 있습니다. 하지만 오픈소스 메인테이너들에게 우리는 아무 것도 지불하지 않죠. 그래서 보안을 요구하지 않습니다. 스스로가 관리를 합니다. 그렇기 때문에 오픈소스 생태계를 통해 뭔가를 가져간다면, 보안에 대한 책임도 같이 가져가는 겁니다. 그런데 그걸 다들 알고도 받아들이지 않습니다. 보안 관련 책임을 지려하지 않는 것이죠.”
의도는 좋지만 자원이 부족
오픈소스 소프트웨어들이 가지고 ‘보안 불안정성’은 익히 알려진 이야기다. 하지만 그것이 체감적으로 와닿지는 않는 분위기다. 로그4셸(Log4Shell) 사태라든가 이번 XZ유틸즈 사건과 같은 일이 떠들썩하게 벌어져야 겨우 ‘아, 맞다’하고 화들짝 놀란다. 이런 일 없이 오픈소스를 하나하나 점검해 가며 사용하는 사례는 극히 드물다. 아무런 보수도 받지 않고, 오로지 선한 마음으로 메인테이너 일을 감당하는 사람들이 모든 것을 완벽하게 처리하고 보완했을 거라는 믿음이 맹목적이라는 걸 모르지 않는데도 말이다.
위에서도 언급했지만 XZ유틸즈는 단 한 명이 운영하는 프로젝트다. 그리고 한 개인이 이 프로젝트 메인테이너에게 접근했다. 3년 동안 충실하게 메인테이너와 교류하며 신뢰를 쌓았다. 그러면서 자신도 메인테이너에 가까운 위치에 올라갈 수 있었다. MS의 엔지니어가 최초로 발견하지 못했다면 XZ유틸즈는 그 자가 가한 변경을 아무도 알아채지 못했을 수도 있다. 그리고 너무나 늦게 발견돼 이미 전 세계적으로 수천만 사용자가 영향을 받는 상태에서 전말이 드러났을 수도 있다.
보안 업체 타이드리프트(Tidelift)의 CEO인 도널드 피셔(Donald Fischer)는 “공격자의 접근법이 너무나 소름끼친다”는 의견이다. “공격자는 오픈소스 소프트웨어를 공략할 수 있는 가장 확실하면서 눈에 안 띄는 방법을 선보였습니다. 여러 가지 ‘행운의 요소들’로 인해 이 사건이 일파만파 안 퍼진 거지, 피해가 훨씬 심각했을 수 있습니다. 누군가 다른 오픈소스 프로젝트에서 비슷한 일을 꾸밀 수도 있고, 이미 진행되고 있을 수도 있습니다. 그랬다면 지금처럼 행운이 따르지 않을 겁니다.”
최근 하버드비즈니스스쿨에서 조사한 바에 따르면 오픈소스 소프트웨어의 ‘수요 측면에서의 가치’는 8조 천억 달러에 달한다고 한다. 이 거대한 경제 구조의 중심부에는 아무런 보수 없이 일하는 메인테이너들이 있다. “게다가 그 메인테이너들 대부분 혼자서, 독립적으로 작업합니다. 절반 이상이 메인테이너를 그만두고 싶어하지만 여러 가지 이유로 그러지 못하고 있기도 하고요. 외롭고, 대가도 충분치 못해 불만도 많은 것으로 조사되고 있습니다.” 피셔의 설명이다.
의존성 전이의 위험성
오픈소스가 가진 위험성은 ‘의존성 전이’라는 것에도 기인한다. 95%의 오픈소스 취약점들이 이른 바 ‘의존성 전이’라는 특성을 가지고 있는데, 한 마디로 서로가 서로와 얽혀 있다는 뜻이다. A라는 오픈소스는 B라는 패키지나 라이브러리가 없으면 작동을 하지 않고, B 역시 또 다른 자원과 묶여 있는 상황이 끝없이 이어지고 있다. 그러므로 특정 오픈소스를 찾아 활용하면, 자기도 모르게 그것과 얽혀있는 수많은 다른 오픈소스들도 같이 가져오는 게 된다.
스콧은 “예를 들어 메이븐(Maven)이라는 패키지를 신뢰하여 활용할 경우, 평균 14개의 다른 요소들을 자동으로 신뢰하는 것과 마찬가지”라고 표현한다. “소프트웨어 검사를 철저히 해야 하는데, 하나만 가져와도 검사할 것이 14배로 뻥튀기 됩니다. 그러면 그 14개는 안전할까요? 그럴 리 없죠. 그 하나하나도 다른 오픈소스 소프트웨어일 때가 많은데요. 그러면 또 그것 하나하나와 연결된 수많은 소프트웨어들을 검사해야 해요. 정말로 ‘기하급수적’이라는 표현이 어울립니다.”
그렇기에 개발자들이 소프트웨어를 미리 검사한다 해도 어디선가는 구멍이 날 수밖에 없다는 게 보안 업체 엔도의 CTO 디미트리 스틸랴디스(Dimitri Stiliadis)의 설명이다. “그럼에도 디펜던시 모두를 확인할 수밖에 없는 게 현재 상황입니다. 특히 한두 사람의 메인테이너만으로 유지되는 오픈소스들은 더욱 더 큰 관심이 필요하죠. 사건 대응력을 키우려면 - 즉 문제가 생겼을 때 근원을 최대한 빠르게 찾아내고 해결책을 모색할 수 있으려면 - 무엇보다 소프트웨어 인벤토리 관리 능력이 중요합니다. 디펜던시 관리는 오픈소스를 사용하려는 모든 개발자들이 반드시 해결하고 넘어가야 할 과제입니다.”
피셔는 “시장에 이미 오픈소스를 보다 용이하게 점검하게 해 주는 도구들이 존재한다”며 “이런 도구를 적극 활용하는 게 중요하다”고 귀띔한다. “조금이라도 편리하게 해 주는 도구가 없다면 일을 진행하다가 포기하게 되죠. 오래 가지 않습니다. 그와 더불어 오픈소스와 관련된 표준이나 규정도 마련되어야 할 것입니다. 즉 오픈소스는 IT 업계 모두의 문제라는 뜻이 됩니다.”
글 : 자이 비자얀(Jai Vijayan), IT 칼럼니스트
[국제부 문정후 기자(globoan@boannews.com)]
<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>