GCP - Artifact Registry Privesc
Artifact Registry
Artifact Registry에 대한 자세한 정보는 다음을 확인하세요:
GCP - Artifact Registry Enumartifactregistry.repositories.uploadArtifacts
이 권한을 통해 공격자는 Docker 이미지와 같은 악성 코드를 포함한 아티팩트의 새 버전을 업로드할 수 있습니다:
이미 존재하는 것과 동일한 이름과 태그를 가진 새로운 악성 docker 이미지를 업로드하는 것이 가능하다는 것이 확인되었습니다, 따라서 이전 이미지는 태그를 잃게 되고 다음에 해당 태그로 다운로드될 때 악성 이미지가 다운로드됩니다.
이미 존재하는 것과 동일한 버전의 파이썬 라이브러리를 업로드하는 것은 불가능하지만, 더 높은 버전을 업로드하거나 (작동한다면 버전 끝에 .0
을 추가할 수 있음 - 파이썬에서는 아님), 또는 마지막 버전을 삭제하고 새로운 버전을 업로드할 수 있습니다 (필요한 artifactregistry.versions.delete
):
artifactregistry.repositories.downloadArtifacts
artifactregistry.repositories.downloadArtifacts
이 권한을 사용하면 아티팩트를 다운로드하고 민감한 정보 및 취약점을 검색할 수 있습니다.
Docker 이미지를 다운로드:
Download a python 라이브러리:
원격 레지스트리와 표준 레지스트리가 가상 레지스트리에서 혼합되고 두 곳 모두에 패키지가 존재하면 어떻게 될까요? 이 페이지를 확인하세요:
artifactregistry.tags.delete
, artifactregistry.versions.delete
, artifactregistry.packages.delete
, (artifactregistry.repositories.get
, artifactregistry.tags.get
, artifactregistry.tags.list
)
artifactregistry.tags.delete
, artifactregistry.versions.delete
, artifactregistry.packages.delete
, (artifactregistry.repositories.get
, artifactregistry.tags.get
, artifactregistry.tags.list
)레지스트리에서 아티팩트를 삭제합니다. 예: 도커 이미지:
artifactregistry.repositories.delete
artifactregistry.repositories.delete
전체 리포지토리를 삭제합니다(내용이 있더라도):
artifactregistry.repositories.setIamPolicy
artifactregistry.repositories.setIamPolicy
이 권한을 가진 공격자는 이전에 언급된 일부 리포지토리 공격을 수행할 수 있는 권한을 스스로 부여할 수 있습니다.
Artifact Registry 읽기 및 쓰기를 통한 다른 서비스로의 피벗
Cloud Functions
Cloud Function이 생성될 때 새로운 도커 이미지가 프로젝트의 Artifact Registry에 푸시됩니다. 나는 이미지를 새로운 것으로 수정하려고 시도했으며, 현재 이미지를 삭제하고(cache
이미지도) 아무것도 변경되지 않았습니다. 클라우드 함수는 계속 작동합니다. 따라서, 아마도 버킷과 같은 경쟁 조건 공격을 악용하여 실행될 도커 컨테이너를 변경할 수 있을지도 모릅니다. 그러나 저장된 이미지를 수정하는 것만으로는 Cloud Function을 손상시킬 수 없습니다.
App Engine
App Engine이 Artifact Registry 내에서 도커 이미지를 생성하더라도, 이 서비스 내에서 이미지를 수정하고 App Engine 인스턴스를 제거(새 인스턴스가 배포됨)하더라도 실행되는 코드는 변경되지 않습니다. 버킷과 같은 경쟁 조건 공격을 수행하면 실행되는 코드를 덮어쓸 수 있을지도 모르지만, 이는 테스트되지 않았습니다.
Last updated