| 오픈소스 코드 및 패키지 위협하는 철자 오류 | 2016.08.08 |
한 대학원생의 실험, 개발자들의 부주의한 코드 퍼가기 드러내
“빠른 것도 중요하지만 안정성도 중요해” [보안뉴스 문가용] 개발자들이 보안에 더욱 유의해야 할 이유가 한 가지 더 생겼다. 바로 눈에 거의 띄지 않는 철자오류를 통한 공격인 타이포스쿼팅(typosquatting)이 코드 리포지토리를 겨냥할 가능성이 높아지고 있기 때문이다. ![]() ▲ 당장은 위험한 것 인지하고 스스로 확인하는 수밖에 없다 이 현상을 이해하려면 먼저 타이포스쿼팅이 무엇인지 알아야 한다. 정식 주소 및 표현에 의도적인 철자오류를 일으켜 눈속임을 하는 것으로, 얼른 봤을 때 비슷한 글자로 대체하거나 사소한 부분의 철자 순서를 바꾸거나, 반복되는 단어를 한 개 정도 빼놓는 것을 말한다. 리포지토리는 유용한 오픈소스 코드들이 저장되어 있는 공간이다. 최근 정보 시스템을 전공하고 있는 니콜라이 샤셰르(Nikolai Tschacher)라는 대학원생이 학위논문을 위해 타이포스쿼팅과 관련된 실험을 진행했다. 몇몇 코드 레지스트리에 패키지를 추가하되 몇몇 패키지 이름의 철자를 일부러 틀리게 한 것이다. 얼마 후 1만 7천여대의 컴퓨터에서 진짜 패키지가 아니라 이 철자 틀린 가짜 패키지가 실행되었다. 게다가 이 중 7천 5백여대에서는 관리자 권한 내에서 스크립트가 실행되었다. 현대의 패키지 및 코드 레지스트리에는 해시 등의 기술들이 덧입혀져서 ‘이 코드는 무단으로 변경되지 않았습니다’라는 걸 보장한다. 즉 안전장치가 마련되어 있다는 뜻이다. 디지털 서명이나 특정 환경에서는 실행이 되지 않도록 하는 기술도 있다. 하지만 철자 몇 개 살짝 바꿈으로써 이 모든 최신 보안 기술이 무용지물이 된다. 게다가 현대의 패키지 및 코드 레지스트리 혹은 레포지토리들 중 공식적으로 신뢰를 받는 곳은 없다. 오픈소스 코드가 모여 있는 장소를 관리하려면 1) 개발자 확인, 2) 개발자 등록, 3) 주소 확인, 4) 제출된 코드의 확인 등 해야 할 일이 어마어마하기 때문이다. 그렇다고 무료로 공개된 오픈소스 코드를 관리하는 데에 유료 사업 모델이 존재할 수도 없다. 설사 개발자들이 보다 안전한 코드 사용을 위해 돈을 낼 의향이 있다고 하더라도, 오픈소스를 사용하는 큰 이유 중 하나인 ‘속도’에 커다란 애로사항이 생겨날 것이다. 결국 오픈소스 코드는 ‘알면서도’ 계속해서 위험에 노출될 수밖에 없게 된다. 누가 코드를 공유하고 있는지도 모르고, 좋은 의도인지 아닌지도 알 수가 없으며, 누가 무슨 장치를 쳐놨는지도 알 수가 없다. 하지만 오픈소스 코드를 사용하는 건 매우 편하며 빠르다. 요즘 누가 완전히 백지에서부터 개발을 하나? 속도가 높고 개발이 편하다는 건 단순히 좋다고 하기에는 너무나 큰 장점이다. 하지만 안정성 역시 양보할 수 없는 장점이다. 절충안이 필요하다. 출처와 코드를 확인하는 과정을 빼놓고 뭔가를 개발한다는 건 보안의 측면에서 상식 밖의 일이다. 내부적으로 코드 레지스트리를 따로 마련해 운영하는 것이 하나의 해결책이다. 물론 이 역시 내부자의 위협에서부터는 안전하지 못하다. 내부 개발자들 모두 천사와 같은 심성을 가진 사람들이라도 철자까지 매번 완벽하리라 기대할 수는 없다. 외부로부터 온 코드를 보다 안전하게 확인하고 통제할 수는 없을까? 이렇다 할 방법이 아직은 없다. 개발하는 사람이 코드를 가져올 때 최대한 알아보는 것만이 거의 유일한 답이다. 코드의 출처, 코드를 개발한 사람을 알고, 코드의 인풋과 아웃풋 등에 대한 완벽한 이해도를 갖추려 해야 한다. 새로운 아이템과 조우해야 하는 상황이라면 격리된 환경에서 이것 저거서 실험을 해보아야 한다. 오픈소스 코드와 패키지의 안정성, 지금의 ‘빠른’ 개발 풍토가 계속 지속되는 한 반드시 짚고 넘어가야 할 문제다. 글 : 존 킹(Jon King) Copyrighted 2015. UBM-Tech. 117153:0515BC [국제부 문가용 기자(globoan@boannews.com)] <저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지> |
|
|
|