
컴퓨터 네트워킹이 등장한 이래로 해커들은 시스템에 불법 침입해 웹 곳곳의 자산을 장악하려는 시도를 멈춘 적이 없습니다. 대부분은 감염된 소프트웨어를 다운로드하도록 사용자를 유도해 피해자의 PC에 접근하는 방식을 씁니다.
그런데 만약 유도할 필요조차 없다면 어떨까요? 소프트웨어 업데이트를 탈취해 정상적인 배포 채널을 통해 바이러스를 유포한다면요. 실제로 2017년 9월 해커들이 CCleaner의 5.33 업데이트 배포를 장악했고, 시스코(Cisco)는 그달 말에야 이 공격을 발견했습니다.
공급망 공격(Supply Chain Attack)이란?

CCleaner 사용자들이 겪은 이런 사건을 '공급망 공격'이라고 부릅니다. 해커들은 개발사(하필 보안 전문기업 아바스트!)의 보안을 뚫고 CCleaner에 악성코드를 심은 뒤, 70만 대의 컴퓨터에 5.33 업데이트를 아무 이상 없다는 듯 배포했습니다. 이 악성코드는 감염된 PC들을 봇넷(botnet)으로 편입시켰을 뿐 아니라, 시스코를 포함한 20개 주요 IT 기업을 표적으로 삼아 시스템 및 운영 정보 탈취까지 시도했습니다.
이는 정부 기관이나 숙련된 개발자 팀을 고용할 수 있는 세력에서 나오는 것으로 흔히 목격되는, 매우 정교한 형태의 사이버 스파이 활동입니다.
공급망 공격이 특히 위험한 이유는 오염된 소프트웨어가 정상적인 경로를 통해 내 컴퓨터에 도착하기 때문입니다. 해커들은 평소 다른 서버에 침입할 때 쓰는 방법, 즉 해당 서버가 구동하는 소프트웨어의 취약점을 악용하거나 정교한 피싱 기법을 동원해 이런 배포 서버에 무단 접근합니다.
이런 공격을 막으려면 어떻게 해야 할까?

앞서 확인했듯이 공급망 공격에서는 악성코드가 정상 채널을 통해 전달됩니다. 즉, 신뢰할 수 있는 출처에서만 소프트웨어를 받는 등 감염 예방을 위해 할 수 있는 모든 조치를 다했더라도, 본인도 모르는 사이에 피해자가 될 수 있습니다. 이런 공격의 가장 난감한 점은 예방 조치가 전적으로 소프트웨어를 배포하는 측의 손에 넘어가 있다는 사실입니다. 예방에 대한 통제권은 문자 그대로 사용자에게 없습니다.
다만 소프트웨어를 꾸준히 최신 버전으로 유지하면 공격으로 인한 피해는 줄일 수 있습니다. 결국 처음 소프트웨어를 건네준 배포자를 다시 믿어야 한다는 점에서 모순처럼 들리지만, 해커에게 침해당한 당사자이기에 '후속' 업데이트도 반드시 배포하게 됩니다.
반면 한동안(수개월~1년) 업데이트가 없던 소프트웨어는 경계해야 합니다. 개발자가 프로젝트를 사실상 포기했을 가능성이 큽니다. 그런데 이 소프트웨어가 자동 업데이트를 설정해 두었다면, 해커가 이를 역이용해 감염된 버전을 밀어넣을 수 있습니다.
개발이 중단된 프로젝트라면 수정 패치를 내놓지 않을 수도 있습니다. 방치된 소프트웨어라면 업데이트 서버도 종료됐으리라 기대하지만, 현실은 늘 그렇지 않습니다. 개발자가 같은 서버에 아직 활성화된 다른 프로젝트를 운영 중인 경우도 있기 때문입니다.
더 충격적인 사실이 있습니다. 서버가 이미 꺼져 있어도 URL은 언젠가 만료됩니다. 그러면 누군가 DNS 도메인을 구매해 '새로운' 버전을 배포하는 것만으로 정상 채널을 통해 악성코드를 유포할 수 있습니다. 이를 막는 유일한 방법은 방치된 소프트웨어의 자동 업데이트 기능을 끄는 것입니다.
이런 사례는 드물지만, CCleaner조차 이런 방식으로 탈취당할 수 있다면 공급망 공격이 줄어들 추세라고 보기 어렵습니다. 오히려 이번 사건이 다른 해커들에게 영감을 주어 유사 공격이 더 잦아질 수 있습니다.
이런 상황에서 활용할 만한 다른 보안 수칙이 있나요? 댓글로 여러분의 노하우를 공유해 보세요!