소프트웨어 공급망 관리 기업 소나타입(Sonatype)의 새 보고서에 따르면 맬웨어가 오픈소스 소프트웨어 개발 생태계에 놀라운 속도로 침투하고 있다. 이 회사는 널리 사용되는 자바, 자바스크립트, 파이썬 및 .NET 패키지 레지스트리에서 2023년 11월 이후 50만 개 이상의 새로운 악성 패키지를 포착했다고 밝혔다.
설명에 따르면 이는 회사가 연례 소프트웨어 공급망 현황 보고서를 통해 2019년부터 추적해온 약 70만 개의 맬웨어 패키지 중 70% 이상에 해당하는 수치다.
오픈소스 생태계의 맬웨어는 기업이 직면하는 오픈소스 요소 품질 문제를 심화시킨다. 소나타입의 데이터에 따르면, 기업 애플리케이션은 평균적으로 180개 이상의 써드파티 구성 요소를 포함하고 있다. 관리하기 버거운 양에 해당한다.
그 결과, 취약한 애플리케이션 종속성의 80% 이상이 1년 이상 패치되지 않은 상태로 남아 있으며, 95%는 더 안전한 대안을 사용할 수 있음에도 불구하고 패치되지 않은 것으로 나타났다고 소나타입은 전했다. 업데이트가 적용되더라도 3.6%의 경우 취약한 종속성이 다른 안전하지 않은 버전으로 업데이트되곤 한다는 설명이다.
한 사례로 Log4j를 들 수 있다. 2021년 12월 수백만 개의 애플리케이션에서 사용되는 이 자바용 로깅 라이브러리에 Log4Shell이라는 심각한 취약점이 있음이 발견됐다. 이 결함에 더해 몇 가지 다른 결함이 널리 알려졌지만 거의 3년이 지난 지금도 메이븐 센트럴 자바(Maven Central Java) 리포지토리에서 다운로드되는 log4j의 13%가 취약한 버전이다.
소나타입은 보고서에서 “오픈소스 위험을 관리하려면 새로운 OSS 라이브러리의 빠른 진화에 발맞춰 보안 정책과 관행을 최적화해야 한다. 조직들은 취약성을 수동으로 검토하는 과정에서 데브옵스 프로세스의 속도가 느려지는 실질적 문제로 어려움을 겪고 있다. 이는 개발자의 좌절로 이어진다”라고 밝혔다.
공급망 사고로 이어질 수 있는 맬웨어
데스크톱 컴퓨터를 노리는 맬웨어와 마찬가지로, 오픈소스 패키지 리포지토리에 업로드된 악성 구성 요소는 다양한 목적을 가지고 있으며, 그 영향도 다양하다.
소나타입은 전체 악성 구성 요소의 거의 절반 가까이가 ‘PUA’(potentially unwanted applications)인 것으로 보고 있다. 최종 사용자에게 공개되지 않은 기능을 가지고 있을 뿐 현실적으로 무해하다는 의미의 분류다. 요소 제작자가 관심 있는 사안에 대한 관심을 유도하기 위해 항의 메시지나 행동을 담아 배포하는 프로텍트웨어도 여기에 포함된다.
또 다른 12%는 ‘ security holding packages’라는 라벨을 가진다. 이는 생태계 관리자가 특정 시점부터 악성 패키지임을 표시하고, 이를 깨끗한 플레이스홀더 패키지로 대체한 것을 의미한다.
문제는 나머지 요소들이다. 공급망을 심각하게 손상시킬 수 있는 결과를 초래할 수 있다. 약 14%의 패키지는 피싱 기법을 통해 배포되는데, 이는 종속성 혼란을 이용해 개발 시스템에 추가 맬웨어를 심을 목적으로 조직에서 사용하는 내부 패키지를 사칭하는 것을 의미한다.
이 밖에 악성 패키지의 약 14%는 환경 변수, 인증 토큰, 비밀번호 파일, 기타 정보 등 시스템에서 민감한 파일과 데이터를 훔쳐 나중에 공격자가 더 많은 시스템을 손상시키는 데 도움이 될 수 있는 정보를 훔치도록 설계됐다는 분석이다. 또한 패키지의 3%는 개인 식별 정보(PII)를 노리고, 3%는 컴퓨터에 백도어와 트로이 목마를 배포하는 것으로 분석됐다.
다른 유형의 악성 행위로는 암호화폐 채굴 프로그램 배치(1.2%), 파일 시스템 손상, 개발자가 코드 작성에 사용하는 IDE 도구 손상, 또는 지속적 통합 플랫폼 손상 등이 있다.
최근 발생한 바람직하지 않은 패키지 사건으로는 오픈소스 기여에 보상하는 암호화폐 제도의 혜택을 받기 위해 약 1만 4,000개의 가짜 패키지를 NPM에 업로드한 개발자, 타이포스쿼팅을 사용하여 유명 라이브러리와 매우 유사한 이름의 Python 패키지를 배포한 공격자, 악성 개발자가 코드를 오염시킬 의도로 합법적인 프로젝트에 수년간 침투한 사례인 ZX Utils 백도어 등을 들 수 있다.
소나타입 연구진은 “기존의 맬웨어 스캐닝 솔루션은 이러한 새로운 형태의 공격을 탐지하지 못하기 때문에 개발자와 데브옵스 환경이 위험에 처하게 된다. 그 양이 계속 증가함에 따라 조직이 직면한 분명하고 현존하는 위험도 증가할 것”이라고 밝혔다.
신뢰할 수 없는 일부 취약성 정보
소나타입의 연구에 따르면 기업 애플리케이션들은 평균적으로 매년 13개의 중요하거나 심각도가 높은 취약점을 종속성으로 인해 상속받는다. 종속성에서 발견된 취약점과 함께 모든 직접 및 전이적 종속성(종속성의 종속성)을 추적할 수 있는 자동화된 도구가 필요한 셈이다.
그러나 취약성 정보의 출처가 동일하지 않다는 문제가 있다. 예를 들어, 국가 취약점 데이터베이스(NVD)에는 아직 처리되지 않은 1만 7,000개 이상의 취약점 백로그가 있다. 소나타입은 또 CVSS 심각도 점수가 7점(중간) 미만으로 평가된 취약점의 3분의 2 이상이 자세히 검토됐을 때 7점(높음 또는 심각) 이상에 해당한다는 점을 발견했다고 전했다.
즉 취약점 정보의 출처에 따라 기업은 취약점을 완전히 놓치거나 실제보다 처리해야 할 중요도가 낮다고 생각하여 취약점 해결을 미룰 수 있다. 또한 애플리케이션을 평가한 후 취약점 점수가 변경된 경우, 취약점을 다시 검사할 때까지 얼마나 시간이 걸릴지 알기 어렵다.
연구원들은 “종속성을 관리하고 실시간 취약점 탐지를 적용하는 데 도움이 되는 도구에 집중하면 위험을 줄일 수 있다. 실제로 소프트웨어 자재 명세서(SBOM)를 사용하여 OSS 종속성을 관리하는 프로젝트는 그렇지 않은 프로젝트에 비해 수정 시간이 264일 단축된 것으로 나타났다”라고 전했다.
SBOM 표준의 발전과 이를 강력히 장려하는 정부 규정으로 인해 점점 더 많은 오픈소스 개발자가 이를 채택하고 있다. 그러나 실행 추이는 새로 등장하는 구성 요소의 속도를 따라가지 못하고 있다. 지난 12개월 동안 약 700만 개의 새로운 오픈소스 컴포넌트가 공개되었지만, 이 중 SBOM이 적용된 것은 6만 1,000개에 불과했다.
현실적으로 심각한 현상 중 하나는 심각도에 관계없이 취약점을 수정하는 데 걸리는 평균 시간이 증가하고 있다는 점이다. 중요 취약점의 평균 수정 시간은 200~250일 정도였지만, 이제는 500일을 초과하는 경우도 있다. 심각도가 높은 취약점은 150~300일에서 400일 이상으로, 심각도가 낮은 취약점은 500~700일, 일부는 800일까지 수정 시간이 늘어났다.
연구원들은 “이러한 급격한 변화는 퍼블리셔가 보안 문제의 양과 지속적인 혁신 및 기능 개발에 대한 요구를 모두 따라잡기 위해 고군분투하며 압도당하고 있음을 시사한다”라고 말했다.
dl-ciokorea@foundryco.com