# 의존성 혼동
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)를 발견해보세요. 독점적인 [**NFT**](https://opensea.io/collection/the-peass-family) 컬렉션입니다.
* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요.
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter**에서 **팔로우**하세요 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **[hacktricks repo](https://github.com/carlospolop/hacktricks)와 [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**에 PR을 제출하여 여러분의 해킹 기법을 공유하세요.
## 기본 정보
요약하자면, 의존성 혼동 취약점은 프로젝트가 **맞춤법이 틀린** 이름, **존재하지 않는** 라이브러리 또는 **지정되지 않은 버전**을 사용하고 사용 중인 의존성 저장소가 **공개 저장소에서 업데이트된 버전을 수집**할 수 있을 때 발생합니다.
* **맞춤법이 틀린**: `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 파일을 검색하여 JavaScript 프로젝트의 종속성을 찾았습니다.
## 참고 자료
* [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)
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)를 발견해보세요. 독점적인 [**NFT**](https://opensea.io/collection/the-peass-family) 컬렉션입니다.
* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요.
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter**에서 **팔로우**하세요 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **[hacktricks repo](https://github.com/carlospolop/hacktricks)와 [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**에 PR을 제출하여 여러분의 해킹 기법을 공유하세요.