# 의존성 혼란
htARTE (HackTricks AWS Red Team Expert)를 통해 **제로부터 영웅까지 AWS 해킹을 배우세요**! * **사이버 보안 회사**에서 일하시나요? **회사가 HackTricks에 광고되길 원하시나요**? 혹은 **PEASS의 최신 버전에 액세스하거나 HackTricks를 PDF로 다운로드**하고 싶으신가요? [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요! * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 저희의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션 * [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 얻으세요 * **[💬](https://emojipedia.org/speech-balloon/) Discord 그룹**에 **가입**하거나 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **트위터** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**를 팔로우**하세요. * **해킹 요령을 공유**하려면 **[hacktricks 레포](https://github.com/carlospolop/hacktricks)** 및 **[hacktricks-cloud 레포](https://github.com/carlospolop/hacktricks-cloud)**로 PR을 제출하세요.
{% embed url="https://websec.nl/" %} ## 기본 정보 요약하면, 의존성 혼란 취약점은 프로젝트가 **철자가 틀린** 이름, **존재하지 않는** 또는 **지정되지 않은 버전**을 가진 라이브러리를 사용하고 사용된 의존성 저장소가 **공개 저장소에서 업데이트된 버전을 수집할 수 있을 때** 발생합니다. * **철자가 틀린**: `requests` 대신에 **`reqests`**를 임포트 * **존재하지 않는**: 더 이상 존재하지 않는 내부 라이브러리인 `company-logging`을 임포트 * **지정되지 않은 버전**: 내부 **존재하는** `company-requests` 라이브러리를 임포트하지만 레포가 **공개 레포지토리**에서 **더 큰 버전**이 있는지 확인합니다. ## 공격 {% hint style="warning" %} 모든 경우에 공격자는 피해자 회사가 사용하는 라이브러리의 **악성 패키지를 발행**하기만 하면 됩니다. {% endhint %} ### 철자가 틀린 & 존재하지 않는 회사가 **내부가 아닌 라이브러리를 임포트**하려고 하는 경우, 라이브러리 레포가 **공개 저장소**에서 해당 라이브러리를 찾을 것입니다. 공격자가 만들었다면, 귀하의 코드와 실행 중인 기기가 크게 **침해**될 가능성이 높습니다. ### 지정되지 않은 버전 개발자들이 라이브러리의 버전을 **지정하지 않는 것**이 매우 흔합니다. 또는 **주 버전만 지정**하는 경우도 있습니다. 그럼 인터프리터는 해당 요구 사항을 충족하는 **최신 버전**을 다운로드하려고 할 것입니다.\ 라이브러리가 **알려진 외부 라이브러리**인 경우(예: 파이썬 `requests`), **공격자는 많은 것을 할 수 없습니다**, 왜냐하면 `requests`라는 라이브러리를 만들 수 없기 때문입니다(원래 저자가 아닌 한).\ 그러나 이 예에서처럼 라이브러리가 **내부**인 경우, `requests-company`인 경우, **라이브러리 레포**가 **외부에서도 새 버전을 확인할 수 있도록** 허용된다면, 공개적으로 사용 가능한 새 버전을 찾을 것입니다.\ 따라서 **공격자가** 회사가 `requests-company` 라이브러리 **버전 1.0.1**을 사용한다는 것을 알고 있다면(마이너 업데이트 허용), 라이브러리 `requests-company` **버전 1.0.2**를 **발행**할 수 있고 회사는 내부 라이브러리 대신 **해당 라이브러리를 사용**할 것입니다. ## AWS 수정 이 취약점은 AWS **CodeArtifact**에서 발견되었습니다(이 [**블로그 게시물**](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d)에서 자세한 내용을 읽으세요).\ AWS는 내부 라이브러리를 외부 저장소에서 다운로드하지 않도록 하기 위해 라이브러리가 내부인지 외부인지를 지정할 수 있도록 수정했습니다. ## 취약한 라이브러리 찾기 [**의존성 혼란에 관한 원본 게시물**](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610)에서 저자는 수천 개의 노출된 package.json 파일을 검색하여 자바스크립트 프로젝트의 종속성을 찾았습니다. ## 참고 자료 * [https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610) * [https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d)
{% embed url="https://websec.nl/" %}
htARTE (HackTricks AWS Red Team Expert)를 통해 **제로부터 영웅까지 AWS 해킹을 배우세요**! * **사이버 보안 회사**에서 일하시나요? **회사가 HackTricks에 광고되길 원하시나요**? 혹은 **PEASS의 최신 버전에 액세스하거나 HackTricks를 PDF로 다운로드**하고 싶으신가요? [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요! * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 저희의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션 * [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 얻으세요 * **[💬](https://emojipedia.org/speech-balloon/) Discord 그룹**에 **가입**하거나 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **트위터** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**를 팔로우**하세요. * **해킹 요령을 공유**하려면 **[hacktricks 레포](https://github.com/carlospolop/hacktricks)** 및 **[hacktricks-cloud 레포](https://github.com/carlospolop/hacktricks-cloud)**로 PR을 제출하세요.