‘소스코드’라는 단어가 주는 무게감은, ‘소스코드 유출 사고’에는 제대로 이식되지 않습니다. 개인정보나 신용카드 정보가 유출되는 것이 훨씬 더 많은 관심을 불러일으킵니다. 보안의 시각에서 소스코드가 가지는 의미를 짚어 봅니다.
지난 10월 6일 오후 10시 30분, 트위치(Twitch)는 자사 블로그에 다음과 같은 글을 올렸습니다. “서버 설정 변경 오류로 인해 일부 정보가 인터넷에 공개되었고, 악의를 가진 자들이 이 정보에 접근했습니다.” 그리고 10월 15일, 트위치 측은 “당시 유출된 정보 대부분이 트위치의 소스코드와 트위치 크리에이터들의 수익 관련 정보”라고 발표했습니다.
하지만 당시 여론은 ‘크리에이터들이 얼마나 돈을 버는가’에 초점이 맞춰져 있었습니다. 일부 소스코드 유출에 대해서는 아무도 문제 삼지 않는 분위기였습니다. 소스코드 유출이 얼마나 심각한 문제인지 아무도 모르거나, 전부 모르는 척하는 것 같기까지 합니다.
보안이 삼엄하다 하는 주요 기업에서의 소스코드 유출은 해마다 빠짐없이 발생합니다. 2012년에는 시만텍에서, 2013년에는 어도비에서, 2017년에는 마이크로소프트에서, 2018년에는 애플과 스냅챗에서, 2019년에는 삼성에서 이러한 사고가 있었습니다. 2020년에는 스위스의 해커 단 한 명이 10개가 넘는 기업의 소스코드를 가져가기도 했었습니다. 소스코드는 해커들이 항상 노리는 표적입니다.
소스코드는 기업이 보유하고 있는 수많은 디지털 자산 중 하나입니다. 기획, 생성, 실험, 발표, 수정, 보완 등을 거치며 정교하게, 그리고 정성스럽게 다듬어지는 데에 수천 시간이 소요됩니다. 기술을 기반으로 한 기업들에 있어 소스코드는 자사 서비스나 제품의 청사진이나 다름이 없습니다. 어쩌면 디지털 자신 중 가장 높은 가치를 가진 자산이기도 하고, 실제 그렇게 인식하고 있는 기업들이 상당수입니다. 소스코드에서부터 기업의 가치가 발생한다고 해도 과언이 아닙니다.
하지만 어느 청사진이나 그렇듯 설계도를 대신할 수는 없습니다. 산업 스파이가 경쟁 업체의 청사진을 확보했다고 해서 완전히 똑같은 제품을 만들 수는 없기 때문입니다. 중요한 세부 사항들이 빠져 있는 청사진을 크게 중요하지 않게 생각하는 사람들이 있는 것은 이런 이유 때문입니. 소스코드가 유출되었다고 했을 때 덤덤하게 받아들이는 보안 전문가들도 그렇게 생각할 가능성이 높습니다. 기술적 관점에서 소스코드 유출이 그리 큰일이 아니라는 건 맞는 말을 수 있습니다. 특히 사업 행위를 이어간다는 관점에서 소스코드 유출은 아무런 영향이 없는 게 사실입니다.
그러나 소스코드가 유출된 것을 사소하게 여기는 건 문제가 있는 태도입니다. 소스코드도 엄연한 지적재산이고, 세부 사항이 조금 빠져 있더라도 서비스나 제품을 떠받치고 있는 논리 구조와 설계 철학을 고스란히 드러내기 때문입니다. 게다가 소스코드를 훔쳐낸 자들은 ‘피해를 주겠다’는 목적과 의도가 분명합니다. 세부 내용이 없더라도 크게 상관이 없습니다다. 게다가 소스코드에는 개발자들이 공유했던 각종 크리덴셜이나 접근 키가 그대로 저장되어 있는 경우도 많습니다. 이 정보는 공격자들이 얼마든지 재활용할 수 있습니다.
소프트웨어 개발이라는 분야에서 ‘비밀’이란, 주로 디지털 인증 크리덴셜, 즉 시스템이나 데이터로의 접근을 허용하는 정보를 말합니다. 수많은 코드 조각들을 이어 붙여 만드는 요즘 시대의 웹 애플리케이션들의 경우 이 ‘비밀’들은 절대 불가결의 요소입니다. 제각각의 기능을 발휘하는 조각들을 하나로, 안전하게 묶어주는 역할을 하기 때문입니다.
그런데 트위치 소스코드 유출 사건을 통해 이 비밀들을 관리하는 데에 있어 큰 오류가 있었음이 드러났습니다. 개발자들이 애플리케이션 개발과 관리를 위해 주기적으로 사용하는 크리덴셜과 민감한 데이터가 ‘평문’으로 보관되어 있었다는 것이 밝혀졌기 때문입니다. 트위치는 거대한 플랫폼을 제공하는 IT 업체임에도 기본적인 애플리케이션 보안의 표준을 거의 무시하고 있었던 것입니다.
그렇지만 회사나 여론이나 이 사건을 ‘고객 개인정보는 무사하다’는 내러티브로 묻어버렸습니다. 하지만 이 내러티브는 반쯤만 사실입니다. 고객 정보가 직접적으로 유출되지 않았다는 점에서는 무사하다고 말할 수 있습니다. 하지만 각종 데이터와 시스템에 접근하게 해 주는 ‘비밀’들이 노출되었고, 이 비밀들을 통해 공격자들은 고객 정보가 담긴 시스템에 접근할 수 있습니다. 그렇다면 고객 정보는 무사한 게 아닙니다.
트위치 사건을 통해 유출된 건 약 6000 개의 리포지터리였습니다. 이 중 ‘비밀’에 속하는 정보를 포함하고 있던 것이 1100개가 넘었습니다. AWS나 구글과 같은 대형 클라우드 서비스 접근 키에서부터 각종 API까지 종류도 다양했습니다. 데이터베이스에 접속하게 해 주는 문자열 전체와 깃허브 오오스(GitHub OAuth) 키들도 발견됐습니다. 데이터와 시스템을 안전하게 묶어주는 끈인 비밀이 허술하게 관리됐으니, 거기에 묶여 있던 각종 정보들이 쏟아진 것입니다.
이렇듯 소스코드가 유출되면, 다른 그 무엇보다 크리덴셜이 새나가는 경우가 부지기수입니다. 그리고 이는 공격자들의 ‘공격 표면’ 혹은 ‘공격 경로’를 기하급수적으로 늘립니다. 청사진에 세부 내용이 얼마나 저장되어 있거나 말거나는, 이 시점에서 아무런 상관이 없습니다. 공격자들은 내부 시스템 및 데이터로 접근하는 방법을 양손 가득 거머쥐게 되었기 때문입니다. “서버 설정 변경 오류”라고 설명했던 트위치에서의 해프닝은 이렇게 “수많은 공격 경로를 공격자들이 알아갔다”는 위중한 사건으로 변했습니다. 크리에이터들의 수입 수준보다 낮은 관심을 받았던 소스코드가 새나갔기 때문입니다.
물론 이런 사고를 100% 막는 건 불가능합니다. 아직 우리는 보안성을 높이는 좋은 습관을 몸에 담지 못했고, 그래서 누군가는 어느 시점에 실수를 할 수밖에 없습니다. 2020년 한 해 동안 유명 리포지터리인 깃허브에서 발견된 ‘비밀’들의 수는 200만 개가 넘었다. 트위치만 유독 취약했던 건 아니고, 실제 어떤 조직이나 비슷한 상황을 겪을 수 있습니다.
그러나 소스코드 유출이라는 것이 손도 못쓸 수준의 사건 사고는 절대 아닙니다. 소프트웨어 개발 조직과 담당자들의 보안 인식을 바꾸기 위해 끈질기게 교육하고, 보다 안전한 개발 행위에 도움이 되는 도구들을 제공하는 노력으로 유의미한 개선이 가능하기 때문입니다.
출처 : 보안뉴스,Technology photo created by rawpixel.com – www.freepik.com, 정보유출, DLP, GRADIUSDLP, 그라디우스, 데이터유출, 정보유출방지, 내부정보유출방지, 취약점, 시큐어코딩, 취약점진단, 취약점점검, 스패로우, sparrow, vada, 시스템취약점진단