2021년 12월 9일, 아파치 ‘Log4j 2’라는 오픈소스 유틸리티에서 역사상 최악의 심각한 보안 취약점이 발견되었다. Log4j는 자바 애플리케이션에서 로깅(이벤트 기록)을 구현할 때 사용되는 라이브러리다. 전 세계 자바 애플리케이션에서 광범위하게 이용되고 있었고, 국내도 예외는 아니었다.
Log4j 2에 취약점이 있다는 소식이 전해지자 기업들은 당연히 취약점이 없는 버전으로 업데이트하려고 나섰다. 하지만 문제가 있었다. 어느 부분에 Log4j가 사용되었는지 알기가 어려웠다.
“소프트웨어도 자재명세서가 필요해”
현대의 소프트웨어 개발은 개발자가 한땀한땀 코딩을 하는 것이 아니다. 시중에 존재하는 오픈소스나 컴포넌트를 조합하면서 자신만의 코드를 더하는 방식으로 이뤄진다. 자동차 제조사가 바퀴나 시트까지 하나하나 만드는 것이 아니라 여러 부품을 조립하는 것과 비슷한 모습이다.
자동차 제조의 경우 어느 부품이 어디에 어떻게 사용됐는지 명확하게 정리돼 있지만, 소프트웨어 개발 프로젝트는 그렇지 못했다. 개발자들은 자신의 필요에 따라 오픈소스를 가져다 쓰기도 하고, 직접 코드를 작성하기도 한다. 복잡하게 얽히고 설킨 소프트웨어 속의 어느 부분에 Log4j가 사용됐나 분명하게 아는 조직은 별로 없었다.
이 때문에 소프트웨어도 어떤 부품이 사용됐는지 가시화해야 한다는 목소리가 커졌다. 어떤 부품이 사용됐는지 알아야 그 부품의 취약점이 발견됐을 때 대처가 가능하기 때문이다. ‘소프트웨어 공급망 보안’라는 개념이 등장한 이유다.
소프트웨어 공급망 보안이 중요한 또다른 이유는 공급망 중 하나가 뚫리면 연쇄적 피해로 이어진다는 점이다. 2020년 벌어진 솔라윈즈 사태가 이를 보여준다. IT관리 소프트웨어 회사 솔라윈즈 제품의 취약점을 통해 다수의 솔라윈즈 고객사들이 해킹 피해를 입었다. 이처럼 공급망 공격은 한 곳의 취약점을 통해 수많은 기업과 사용자에게 피해를 줄 수 있어 그 영향력이 매우 크다.
소프트웨어 공급망을 가시화하기 위한 첫걸음으로 꼽히는 것은 소프트웨어 자재명세서(Software Bill Of Materials) 작성이다. SBOM은 소프트웨어 패키지나 애플리케이션을 구성하는 모든 컴포넌트의 상세 목록을 의미한다. 소프트웨어의 구성 요소를 투명하게 공개함으로써 보안 위험을 관리하고, 취약점에 신속하게 대응할 수 있게 해준다.
만약 SBOM이 잘 만들어져 있다면 Log4j 사태가 벌어졌을 때 어느 부분에 Log4j가 사용됐는지 손쉽게 알아낼 수 있었을 것이다.
공개 저장소의 위험성과 방화벽의 필요성
소프트웨어 개발자들은 일반적으로 공개 저장소에서 만들어진 컴포넌트를 다운로드 해 사용한다. 예를 들어 자바 개발자의 경우 메이븐 센트럴이라는 곳에서 필요한 라이브러리를 다운로드해 사용한다. 언제든 쉽게 필요한 라이브러리를 내려받을 수 있다는 점은 편리하지만, 공개된 장소이기 때문에 악용하기 위한 해커들도 많이 활동한다.
유명 컴포넌트와 비슷한 이름으로 악성코드나 멀웨어를 만들어 개발자들이 착각하도록 한다든지, 백도어를 심은 컴포넌트를 배포하기도 한다. 또 유명한 컴포넌트의 최신 버전인 것처럼 같은 이름으로 속여서 올리기도 하며, 특정 기업이 내부적으로 사용하는 컴포넌트의 이름을 알아내서 악성코드에 그 이름을 붙여 다운로드를 유도하는 경우도 있다.
메이븐 센트럴과 같은 퍼블릭 저장소는 애플 앱스토어처럼 하나하나 보안성 검사를 할 수 없어서, 이용자가 모르는 사이 악성코드를 다운로드하는 일이 벌어질 수 있다.
이 때문에 퍼블릭 저장소에서 직접 다운로드 하는 대신, 조직 내부에 사설 오픈소스 저장소와 방화벽을 둘 필요가 있다는 이야기도 나온다. 개발자들이 공개 저장소에서 직접 컴포넌트나 라이브러리를 다운로드하는 것이 아니라, 조직 내부의 사설 저장소에서 내려받도록 하자는 것이다. 사설 저장소의 경우 방화벽을 통해 검증된 컴포넌트만 등재될 수 있도록 조치를 취할 수 있다.
오픈소스 구축기업 OSC코리아의 김재천 대표는 “퍼블릭 저장소에 악성코드 하나 올려놓으면 그걸 다운로드 한 수많은 컴퓨터를 해킹할 수 있기 때문에 공급망 공격은 해킹의 경제학 측면으로 볼 때 매우 효율적인 기법”이라면서 “오픈소스를 위한 방화벽이 필요한 상황”이라고 말했다.
글. 바이라인네트워크
<심재석 기자>shimsky@byline.network