본문 바로가기

POST/Series Article

[비개발자의 눈] #4 - Security study : 의존성 혼동(Dependency Confusion)

의존성 혼동이란

수백 개에 달하는 악성 오픈소스 패키지를 크게 세 가지 유형으로 나누면 의존성 혼동(Dependency Confusion), 타이포스쿼팅(Typosquatting), 체인잭킹(Chainjacking)으로 구분됩니다.

 

이 중, 의존성 혼동(Dependency Confusion) 공격은 정상적인 소프트웨어와 동일한 이름을 갖고 있는 새로운 버전의 악의적인 소프트웨어를 이용한 수법입니다. 소프트웨어 개발 도구가 공개 및 비공개 저장소에서 서드파티 패키지를 끌어오는 기본 방식에서 새롭게 발견된 논리적 결함인데, 공격자들이 이 단순하면서도 자동화된 성질을 이용하는 것입니다.

 

실제 기업이 사용하는 사용 애플리케이션에서 전체 코드 중 76%가 오픈소스 소프트웨어이고, 전체 96%의 코드베이스가 오픈소스를 포함하고 있는 것으로 알려져 있습니다. 이는 모든 프로그래밍 언어에 이용할 수 있는 서드파티 구성요소 그리고 패키지로 구성되어 있는 생태계 덕분입니다. 자바스크립트(JavaScript)에는 NPM, 파이썬(Python)에는 PyPI가 있는 것처럼 사용자는 각기 커뮤니티에서 유지하고 관리하는 공개 저장소에서 패키지를 끌어옵니다.

 

위 이미지의 예시로 알 수 있는 것처럼 패키지 사이의 관계가 복잡하기 때문에 하나의 구성요소를 애플리케이션 내에 의존성을 끌어온다고 해도 결국 수 십 개 혹은 수 백 개의 다른 애플리케이션을 가져오는 것과 같다고 할 수 있습니다. 이때에 저장소에 악성 패키지가 유입되는지 제대로 탐지하고 차단하지 않는다면 큰 피해를 겪게 되는 것입니다.

 

알렉스 버산(Alex Birsan)의 연구

보안 연구원이자 윤리적 해커인 알렉스 버산(Alex Birsan)이 지난 20212 PyPI, npm, 루비젬스(RubyGems)등 보편적으로 이용되는 생태계에서 의존성 혼동의 단순한 약점을 악용함으로써 35곳의 IT 대기업을 해킹해 버그 현상금으로 13만 달러 이상을 받은 사례가 있습니다.

 

버산은 의존성 혼동을 이용한 해킹이 놀라울 정도로 쉬웠다고 말했고, 이 이야기를 증명하듯, 이후 며칠 동안 수 천 개의 의존성 혼동 모방 패키지가 PyPI, npm와 같은 생태계에 넘쳐났고 대기업을 겨냥한 악의적 사례도 생겨났습니다.

의존성 혼동 공격을 피할 방법

의존성 혼동을 해결하는 방법은 다양하게 있지만, 공개 및 비공개 피드를 모두 사용하는 혼합 구성을 사용하지 않는 것, 그리고 개발 조직이 항상 모든 패키지의 면밀한 조사와 검증이 이뤄지는 비공개 피드를 사용하도록 패키지 관리자를 구성하는 것입니다. 또 자동화 솔루션, 예를 들면 오픈소스 소프트웨어 패키지가 공급망에 유입될 때 이를 관리할 수 있는 SDLC(Software Development Lifecycle) 방화벽 등을 이용하는 것입니다. 대표적인 솔루션은 데브옵스 자동화 및 오픈소스 통제 관리 솔루션 Sonatype는 버산의 연구 보고가 공개된 후 48시간이 채 지나지 않아 모방 npm 패키지를 275개 이상 찾아냈습니다.

 

마이크로소프트(Microsoft)는 버산의 연구 보고서를 확인한 뒤, 의존성 혼동을 완화할 수 있는 방법에 대한 백서를 공개했는데, 백서에서는 피드에서 공개 패키지가 비공개 패키지를 우선시할 수 있도록 허용할 경우 버산이 시도한 것과 같은 치환 공격이 가능하기 때문에 공개 패키지가 비공개 패키지를 우선시하지 않도록 피드를 구성하거나 다른 완화 방법을 사용해야 한다.’고 조언했습니다.

 

또는, 일부 패키지 관리자에서 허용하는 이름공간 또는 범위 기능을 사용하는 방법도 있습니다. 실제로 의존성 공격으로부터 벗어나기 위해서는 개발 도구, 패키지 관리자 그리고 워크플로우의 구성까지 많은 요소를 변경하며 모든 조직이 공급망 공격에 대해 이해하고 대응 방법을 구비하기까지는 오랜 시간이 소요됩니다.

 

오픈소스 소프트웨어 구성요소의 생태계의 규모가 상당하고 구성요소 간의 상호의존성이 복잡하기 때문에 언제든지 의존성 공격의 표적이 될 수 있다는 점을 유의하며 신뢰할 수 있는 솔루션, Sonatype Platform과 같은 도구를 적절히 사용할 수 있도록 해야 합니다.

 

 

 

참고

"사례로 본" 보편적인 공급망 공격 유형 6가지

공개 SW포털 오픈소스 저장소 사용 시의 또 다른 위험, ‘의존성 혼동이란 무엇인가 

npm.anvaka