하우리 로고 이미지

전체메뉴 열기

Boan News

보안뉴스 매체사 기사

보안매체 기사

트로얀 소스, 소스코드를 몰래 감염시키는 신박한 공급망 공격 기법
등록일 :
2021.11.02
프로그래밍 언어들이 간과하는 요소가 한 가지 있다. 유니코드의 자체 제어 장치다. 이 장치는 사람의 눈에도 보이지 않고, 코드 편집기들도 크게 문제 삼지 않는다. 게다가 코멘트나 문자열 속에 집어 넣으면 컴파일러도 그냥 넘어가 준다. 이를 이용하면 투명 멀웨어가 포함된 정상 소스코드가 완성된다.
 
[보안뉴스 문가용 기자] 사람의 눈과 컴파일러의 탐지 기술을 모두 속이는 악성 코드 삽입 기법이 고안됐다. 소스코드에 악성 요소를 직접 심는 이 공격에는 ‘트로얀 소스(Trojan Source)’라는 이름이 붙었다. 캠브리지대학의 연구원들인 니콜라스 바우처(Nicholas Boucher)와 로스 앤더슨(Ross Anderson)이 이와 관련된 보고서를 발표했다.
 

[이미지 = utoimage]


두 연구원에 의하면 트로얀 소스 공격은 모든 소스코드를 위협할 수 있는 공격 기법이라고 한다. 그들 스스로도 C, C++, C#, 자바스크립트, 자바, 러스트, 고, 파이선 언어들에 대한 공격을 성공시켰으며, 그에 대한 개념증명 코드까지 개발을 완료했다. 그 외에도 다른 현대 모든 프로그래밍 언어들에도 영향을 줄 수 있을 것이라고 바우처와 앤더슨은 보고 있다.
 
이번 연구와 관련된 취약점은 총 두 가지로 CVE-2021-42574와 CVE-2021-42694다. 둘 다 유니코드(Unicode) 시스템과 관련된 취약점들이다. “예를 들어 라틴어로 된 문자들을 화면에 나타낼 때는 왼쪽에서 오른쪽으로 텍스트가 흐르도록 합니다. 반대로 아라비아어 문자라면 오른쪽에서 왼쪽으로 가는 게 정상이죠. 이런 두 가지 텍스트가 섞여 있을 때, 화면에 글자가 나타나는 순서가 서로 충돌하게 됩니다. 이를 해결하는 알고리즘이 유니코드에 있긴 하지만 충분치 않을 수 있습니다. 이 때 유니코드는 눈에 보이지 않는 문자나 기호들을 삽입함으로써 ‘여기서부터 텍스트 노출 순서가 바뀐다’는 표시를 합니다.” 트로얀 소스 공격은 이 지점을 악용하는 것이라고 볼 수 있다.
 
“아무리 정교하게 설계된 프로그래밍 언어들이라고 하더라도 유니코드가 텍스트 흐름을 제어하기 위해 삽입하는 투명 문자 및 기호들을 피해갈 수밖에 없습니다. 논리적인 인코딩을 유지하기 위해서이죠. 이 부분을 건드리게 되면 코딩의 논리 흐름이 깨집니다. 컴파일을 해 보면 구문 오류가 뜹니다. 구문 오류는 코멘트나 문자열 처리를 통해 해결할 수 있는 오류들인데요, 코멘트나 문자열 모두 처음과 끝을 지정해 주는 명령들이 존재합니다. 그런데 유니코드의 알고리즘을 익스플로잇 하는 공격은 코멘트와 문자열의 처음과 끝을 지정하는 명령을 무시합니다. 그러므로 특정 유니코드용 제어 문자들을 코멘트나 문자열 안에 삽입함으로써 컴파일러도 발견하지 못하는 악성 코드를 삽입할 수 있게 됩니다.”
 
이를 현실에 적용한다면 소스코드로서도 완벽히 정상적으로 보이고 컴파일도 제대로 되는데 완벽하게 악의적인 기능을 발휘하는 코드를 만들 수 있게 된다고 연구원들은 강조했다. 그러므로 전혀 새로운 공급망 공격을 할 수 있게 된다고 한다. “코멘트와 문자열 안에 악의적 논리를 가진 유니코드 글자들을 삽입함으로써 실제 소스코드의 논리를 해치지 않으면서도 독자적인 멀웨어를 설치할 수 있게 되는 겁니다. 사람들의 눈에도 띄지 않고 컴파일러도 속일 수 있으며, 심지어 보안 솔루션들도 높은 확률로 피해갈 수 있습니다.”
 
유니코드의 이러한 ‘보이지 않는 문자’들이 거의 모든 시스템에서 ‘복사 및 붙여넣기’ 기능을 통해서도 간편하게 옮겨진다는 것도 문제다. 코드의 정상적인 부분들을 긁어다 붙였을 뿐인데 자기도 모르게 악성 코드까지 심을 수 있다는 뜻이다. 깃허브(GitHub) 등을 통해 공유되는 코드들이 개발자들 사이에서 ‘복사 및 붙여넣기’로 대부분 전파된다는 걸 감안하면 이러한 특성 역시 대단히 위험하게 작용할 수 있다. 때문에 이러한 취약점이 통하지 않도록 컴파일러의 업데이트가 필요한 상황이다. 실제 두 연구원들은 보고서를 발표하기 전에 미리 컴파일러 개발사에 연락해 필요한 조치를 취했다고 한다. 하지만 모두 여기에 대응을 하고 있는 건 아니다.
 
한 가지 다행인 점은 아직 이러한 공격 시도가 실제 현장에서는 발견되지 않고 있다는 것이다. “CVE-2021-42574와 CVE-2021-42694가 아직까지는 실제 공격에서 익스플로잇 된 사례가 없었습니다. 하지만 아직까지 트로얀 소스 공격에 대한 완벽한 대처법이 존재하지 않는다는 걸 간과해서는 안 되겠죠. 현존하는 모든 프로그래밍 언어들의 유지 보수를 담당하는 분들이 빨리 코드 편집기와 컴파일러를 패치하기를 기다리는 수밖에 없습니다.”
 
3줄 요약
1. 거의 모든 프로그래밍 언어를 유니코드의 특성으로 농락하는 방법 개발됨.
2. 이 방법을 잘 사용하면 사람도, 컴파일러도, 보안 솔루션도 모두 속일 수 있음.
3. 프로그래밍 언어 관리 유지 책임자들이 컴파일러와 편집기 패치를 서둘러야만 해결이 가능한 위협.

[국제부 문가용 기자(globoan@boannews.com)]

<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>

  • - 본 정보에 대한 저작권은 '보안뉴스'에게 있으며 이에 무단 사용 및 재배포를 금지합니다.
  • - 본 정보에 대한 이용문의는 "보안뉴스(www.boannews.com)"로 문의하여 주십시오.

Top