Dependency Confusion

htARTE (HackTricks AWS Red Team Expert)를 통해 **제로부터 영웅까지 AWS 해킹을 배우세요**!

기본 정보

요약하면, 의존성 혼란 취약점은 프로젝트가 철자가 틀린 이름, 존재하지 않는 또는 지정되지 않은 버전을 가진 라이브러리를 사용하고 사용된 의존성 저장소가 공개 저장소에서 업데이트된 버전을 수집할 수 있을 때 발생합니다.

  • 철자가 틀린: requests 대신에 **reqests**를 임포트

  • 존재하지 않는: 더 이상 존재하지 않는 내부 라이브러리인 company-logging을 임포트

  • 지정되지 않은 버전: 내부 존재하는 company-requests 라이브러리를 임포트하지만 레포가 공개 레포지토리에서 더 큰 버전이 있는지 확인합니다.

공격

모든 경우에 공격자는 피해자 회사가 사용하는 라이브러리의 악성 패키지를 발행하기만 하면 됩니다.

철자가 틀린 & 존재하지 않는

회사가 내부가 아닌 라이브러리를 임포트하려고 하는 경우, 라이브러리 레포가 공개 저장소에서 해당 라이브러리를 찾을 것입니다. 공격자가 만들었다면, 귀하의 코드와 실행 중인 기기가 크게 침해될 가능성이 높습니다.

지정되지 않은 버전

개발자들이 라이브러리의 버전을 지정하지 않는 것이 매우 흔합니다. 또는 주 버전만 지정하는 경우도 있습니다. 그럼 인터프리터는 해당 요구 사항을 충족하는 최신 버전을 다운로드하려고 할 것입니다. 라이브러리가 알려진 외부 라이브러리인 경우(예: 파이썬 requests), 공격자는 많은 것을 할 수 없습니다, 왜냐하면 requests라는 라이브러리를 만들 수 없기 때문입니다(원래 저자가 아닌 한). 그러나 이 예에서처럼 라이브러리가 내부인 경우, requests-company인 경우, 라이브러리 레포외부에서도 새 버전을 확인할 수 있도록 허용된다면, 공개적으로 사용 가능한 새 버전을 찾을 것입니다. 따라서 공격자가 회사가 requests-company 라이브러리 버전 1.0.1을 사용한다는 것을 알고 있다면(마이너 업데이트 허용), 라이브러리 requests-company 버전 1.0.2발행할 수 있고 회사는 내부 라이브러리 대신 해당 라이브러리를 사용할 것입니다.

AWS 수정

이 취약점은 AWS CodeArtifact에서 발견되었습니다(이 블로그 게시물에서 자세한 내용을 읽으세요). AWS는 내부 라이브러리를 외부 저장소에서 다운로드하지 않도록 하기 위해 라이브러리가 내부인지 외부인지를 지정할 수 있도록 수정했습니다.

취약한 라이브러리 찾기

의존성 혼란에 관한 원본 게시물에서 저자는 수천 개의 노출된 package.json 파일을 검색하여 자바스크립트 프로젝트의 종속성을 찾았습니다.

참고 자료

htARTE (HackTricks AWS Red Team Expert)를 통해 **제로부터 영웅까지 AWS 해킹을 배우세요**!

Last updated