FlawOpen

flawopen.com/참고/Dependency Confusion

Dependency Confusion: 패키지 출처 혼동이 발생하는 방식

High Severity CWE-829: Inclusion of Functionality from Untrusted Control Sphere 소프트웨어 공급망
쉽게 설명 — 이름이 비슷한 공급업체

팀이 공급업체 카탈로그에서 구성 요소를 주문하는데 서로 다른 업체가 같은 제품명을 쓴다고 해 보세요. 규칙이 신뢰할 업체를 지정하지 않으면 빌드가 예상하지 못한 구성 요소를 받을 수 있습니다. Dependency Confusion은 출처 선택 실패입니다. 빌드가 조직이 신뢰하려던 곳이 아닌 레지스트리나 네임스페이스에서 패키지를 가져옵니다.

Boundary: 패키지 이름, 네임스페이스, 레지스트리 설정, lockfile 출처
Failure: 리졸버가 의도하지 않은 출처에서 같은 이름의 패키지를 가져올 수 있음
Impact: 검토되지 않은 서드파티 코드가 빌드에 들어올 수 있고 설치 스크립트가 실행될 수 있음
Remediation: 명시적인 네임스페이스-레지스트리 정책, 검토된 lockfile, 최소 권한 빌드

Dependency Confusion이 발생하는 방식

정확한 동작은 패키지 관리자와 설정에 따라 다릅니다. pip 문서는 사설 --index-url과 공개 --extra-index-url을 함께 쓰면 같은 이름의 공개 패키지가 선택될 수 있다고 경고합니다. npm은 패키지 scope 또는 기본 설정으로 레지스트리를 선택하며 항상 더 높은 버전을 고르지는 않습니다. 공통 원인은 모호한 출처 정책입니다. 스크립트가 허용되면 빌드 작업 권한으로 실행됩니다.

pip.conf 및 requirements.txt (모호한 출처)위험한 설정
[global]
index-url = https://packages.example.internal/simple
extra-index-url = https://pypi.org/simple

corp-auth-utils
.npmrc 및 package.json (scope 기반 명시적 라우팅)강화 예시
@corp:registry=https://packages.example.internal/repository/npm/

{
  "dependencies": {
    "@corp/billing-engine": "1.2.0"
  }
}

Dependency Confusion의 실패 경로

엔지니어링 방어 통제

관련 보안 주제와 사고 분석 보기:보안 디렉터리 →

참고 자료

함께 보기 Docker 소켓 노출: 위험과 방어 GitHub Actions 스크립트 인젝션과 안전한 입력 처리 Cosign GHSA-fx35-mq7g-6g98: Bundle 검증 우회