GCP - Artifact Registry Privesc
Rejestr Artefaktów
Aby uzyskać więcej informacji na temat Rejestru Artefaktów, sprawdź:
GCP - Artifact Registry Enumartifactregistry.repositories.uploadArtifacts
Dzięki temu uprawnieniu atakujący mógłby przesyłać nowe wersje artefaktów z złośliwym kodem, takimi jak obrazy Docker:
Sprawdzono, że możliwe jest przesłanie nowego złośliwego obrazu dockera o tej samej nazwie i tagu, co już obecny, więc stary straci tag i następnym razem, gdy obraz z tym tagiem zostanie pobrany, zostanie pobrany złośliwy.
Nie można przesłać biblioteki Pythona o tej samej wersji, która już istnieje, ale można przesłać większe wersje (lub dodać dodatkowe .0
na końcu wersji, jeśli to działa - nie w Pythonie), lub usunąć ostatnią wersję i przesłać nową z (potrzebne artifactregistry.versions.delete)
:
artifactregistry.repositories.downloadArtifacts
artifactregistry.repositories.downloadArtifacts
Dzięki temu uprawnieniu możesz pobierać artefakty oraz wyszukiwać wrażliwe informacje i luki.
Pobierz obraz Docker:
Pobierz bibliotekę python:
Co się stanie, jeśli zdalne i standardowe rejestry zostaną zmieszane w wirtualnym i pakiet istnieje w obu? Sprawdź tę stronę:
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
)Usuń artefakty z rejestru, takie jak obrazy docker:
artifactregistry.repositories.delete
artifactregistry.repositories.delete
Usuń pełne repozytorium (nawet jeśli ma zawartość):
artifactregistry.repositories.setIamPolicy
artifactregistry.repositories.setIamPolicy
Napastnik z tym uprawnieniem mógłby nadać sobie uprawnienia do przeprowadzenia niektórych z wcześniej wspomnianych ataków na repozytoria.
Przechodzenie do innych usług przez odczyt i zapis w Artifact Registry
Cloud Functions
Gdy tworzona jest funkcja chmurowa, nowy obraz docker jest przesyłany do Artifact Registry projektu. Próbowałem zmodyfikować obraz na nowy, a nawet usunąć bieżący obraz (i obraz cache
), ale nic się nie zmieniło, funkcja chmurowa nadal działa. Dlatego może możliwe jest nadużycie ataku Race Condition jak w przypadku bucketu, aby zmienić kontener docker, który będzie uruchamiany, ale po prostu modyfikacja przechowywanego obrazu nie jest wystarczająca, aby skompromitować funkcję chmurową.
App Engine
Mimo że App Engine tworzy obrazy docker w Artifact Registry. Przetestowano, że nawet jeśli zmodyfikujesz obraz w tej usłudze i usuniesz instancję App Engine (aby wdrożona została nowa), wykonywany kod się nie zmienia. Możliwe, że przeprowadzenie ataku Race Condition jak w przypadku bucketów mogłoby umożliwić nadpisanie wykonywanego kodu, ale to nie zostało przetestowane.
Last updated