최신 보안 뉴스

보안 및 IT 분야의 최신 뉴스를 정확하고 신속하게 전해드립니다.

솔라윈즈 사태로 드러난 소프트웨어 코드 서명 시스템의 문제

  • Facebook에 공유하실 수
    있습니다.

  • Twitter에 공유하실 수
    있습니다.

  • Linked in

    Linked in에 공유하실 수
    있습니다.

  • 붙여넣기

    블로그나 게시판에 붙여넣기 하실
    수 있습니다.

솔라윈즈 사태에 대한 추가 사실들이 나오면서 무슨 일이 일어난 것인지 조금 더 상세히 이해할 수 있게 되었다. 현재까지 밝혀진 바에 따르면 공격에 활용된 멀웨어는 총 4개로, 그 중 하나인 선스팟(Sunspot)은 솔라윈즈(SolarWinds)의 개발자들이 애플리케이션 구축 시 사용하는 빌드 서버에 일찌감치 설치된 것으로 파악됐다. 이것이 주요 공격 통로가 되어 솔라윈즈 솔루션을 사용하는 고객사들에 공격자들은 침투할 수 있었다.

 

 


 

 

그렇기 때문에 우리는 솔라윈즈 사태를 최악의 공급망 공격 사례로 꼽기도 한다. 소프트웨어 공급망에서 소프트웨어 출처를 표시하기 위해 우리는 ‘코드 서명’이라는 것을 활용한다. 이론상 이 코드 서명이라는 것은 코드의 무결성과 진본성을 확인시켜 주는 장치이다. 하지만 이 ‘이론’은 현실에서 그리 충실하게 구현되지 않는다.

 

현실에서 코드 서명은 개발의 최종 단계에서 원래 소스코드로부터 그대로 받아 소프트웨어 패키징에 추가하는, 일종의 형식적인 절차가 되어버린 지 오래다. 소프트웨어 빌드 파이프라인이나 지속적인 통합(CI) 프로세스에 개입하여 뭔가를 변경할 수 있는 공격자라면 서명까지 마친 최종 제품에도 영향을 미칠 수 있다. 솔라윈즈 사태의 공격자들도 이를 증명했다. 코드 서명은 사실상 본래의 취지와 목적성을 상실한 상태다.

 

그런데도 대다수 소프트웨어 개발사들은 소프트웨어 개발 및 출시 파이프라인 자체를 보호하는 데 크게 신경 쓰지 않는다. 최근 여기 저기 발생하고 있는 공급망 공격은, 해커들이 이러한 사실을 잘 이해하고 있으며, 이를 자신들의 이익 창출을 위해 효과적으로 악용하는 법을 잘 알고 있다는 것을 증명한다. 그러므로 우리에게는 소스코드가 정식 소프트웨어가 되기까지의 모든 과정을 인증할 수 있는 새로운 시스템이 필요하다.

 

코드 서명의 진짜 문제는 ‘아무도 이 서명을 위협하지 못하겠지’라는 믿음

사실 코드를 서명하는 프로세스 자체가 처음부터 나빴던 것은 아니다. 개념도 분명하다. “허가된 사람이 아니면 코드를 변경하지 못하게 한다”는 것이기 때문이다. 그러니 ‘서명이 있으면 안전하다’는 인식이 광범위하게 심겨진 것이다. 문제는 ‘서명만 있으면 안전하다’라는 믿음이 코드 서명과 함께 수반되어야 할 다른 준수 사항들의 간과로 이어진 것이다.

 

실제 코드 서명은 자동화 기술을 통해 이뤄진다. 사람이 이를 두 번, 세 번 확인하는 경우는 거의 없다. 아무리 완벽한 프로세스와 시스템이라 하더라도 ‘잘 되겠지’라고 자동 처리에만 맡기면 반드시 취약한 부분이 생기고, 이를 파고드는 활동이 시작된다. 그리고 그것이 오늘날 빈번하게 발생하기 시작한 공급망 공격을 통하여 현실화 되고 있다.

 

공격자들이 현재의 코드 서명 프로세스를 악용하기 위해 해야 할 것은 간단하다. 코드 서명이 적용되기 전에 코드를 자신들의 목적에 맞게 변경하면 된다. 서명은 자동으로 되는 것이고, 아무도 재차 확인하지 않으니 말이다. “이 소프트웨어의 공급 체계는 합법적이었다”는 걸 증명해 주는 것이 서명인데, 이미 오염된 것이더라도 확인 없이 서명을 해 주니 무용지물이 되는 것이다.

 

소프트웨어 공급망의 무결성 강화하기

그렇다면 어떻게 해야 코드 서명 프로세스의 의미를 살릴 수 있을까? 조직 입장에서는 현재 조직 내에서 사용되고 있는 모든 코드 요소들이 무엇인지 파악하는 것부터 시작해야 한다. 그런 다음에는 각 요소들에 있을 수 있는 잠재적 취약점들을 알아내고 필요한 패치들을 실시해야 한다. 일종의 코드 감사를 해야 한다는 것이다. 코드 서명 프로세스에 원래 있었어야 할 수동 검사 및 확인 절차를 삽입하는 것이라고 정리해도 된다.

 

또한 최근 떠오르고 있는 ‘컨피덴셜 컴퓨팅(confidential computing)’을 고려하는 것도 괜찮은 해결책이 될 거라고 개인적으로 보고 있다. 사실 이미 보안을 중시하는 산업들에서는 어느 정도 도입이 되어 있는 방법론이기도 하다. 물론 기반 시설의 변경과 관련이 있는 것이라 만만치 않은 투자가 감행되어야 한다는 단점이 있긴 하다. 하지만 소프트웨어 벤더들에 있어 소프트웨어 개발 파이프라인만큼 중요하고, 투자가 아깝지 않은 분야가 있을까.

 

솔라윈즈 사태가 드러냈듯, 공격자가 소프트웨어 코드 자체를 오염시키면 지금의 코드 서명 시스템으로서는 방어가 불가능하다시피 하다. 그 일을 겪고도 소프트웨어 벤더로서 파이프라인을 강화하지 않는다면, ‘오염된 소프트웨어를 공급하겠다’고 말하는 것과 다름이 없다고 생각한다. 오히려 ‘우리 회사 소프트웨어는 절대로 공급망 공격에 당하지 않는다’는 메시지를 시장에 심을 수 있는 기회로 삼아야 한다.

 

예를 들어 시그널(Signal)의 경우, 왓츠앱에서 불거진 프라이버시 문제 때문에 탈퇴하는 사용자들이 늘어나자 반사 이익을 거두고 있다. 평소 프라이버시와 보안의 강력함을 특장점으로 내세웠기 때문이다. 동종 업계의 누군가가 겪고 있는 위기는, 안타깝지만 나의 기회가 된다. 솔라윈즈와 비슷한 업계에 있는 모든 벤더사들에게도 적용되는 사실이다.

 

마지막으로 하고 싶은 말은, “이미 침해됐다”는 가정 하에 보안을 강화 및 관리하는 것이 현재는 가장 안전하다는 것이다. 침해되지 않으려고만 애쓰다 보면 지나치게 많은 투자가 불필요하게 발생하거나 지레 포기하게 된다. 침해됐다고 가정하면, ‘어디로 침해되었을까’를 연구하게 되고, 적절한 부분에서 방어 조치를 취할 수 있게 된다. 또한 예정된 피해를 줄이는 데에도 더 적합하다.

 

코드 서명으로 모든 것이 보호되거나 모든 공격에 대한 방비가 되지 않는다. 이미 해커들은 이를 알고 있고, 이미 우리 안에 침투해 들어와 있다. 그것이 솔라윈즈 사태가 주는 교훈이다.

 

글 : 제스로 비크만(Jethro Beekman), Technical Director, Fortanix​ 

  • 보안뉴스 로고
  • 문가용 기자
  • Facebook에 공유하실 수
    있습니다.

  • Twitter에 공유하실 수
    있습니다.

  • Linked in

    Linked in에 공유하실 수
    있습니다.

  • 붙여넣기

    블로그나 게시판에 붙여넣기 하실
    수 있습니다.