Z tym uprawnieniem atakujący mógłby wgrywać nowe wersje artefaktów z złośliwym kodem, takie jak obrazy Docker:
# Configure docker to use gcloud to authenticate with Artifact Registrygcloudauthconfigure-docker<location>-docker.pkg.dev# tag the image to upload itdockertag<local-img-name>:<local-tag><location>-docker.pkg.dev/<proj-name>/<repo-name>/<img-name>:<tag># Upload itdockerpush<location>-docker.pkg.dev/<proj-name>/<repo-name>/<img-name>:<tag>
Sprawdzono, że jest możliwe przesłanie nowego złośliwego obrazu Docker o tej samej nazwie i tagu co już obecny, więc stary obraz straci tag, a następnym razem, gdy ten obraz z tym tagiem zostanie pobrany, zostanie pobrany złośliwy.
Prześlij bibliotekę Pythona
Zacznij od stworzenia biblioteki do przesłania (jeśli możesz pobrać najnowszą wersję z rejestru, możesz ominąć ten krok):
Ustaw strukturę projektu:
Utwórz nowy katalog dla swojej biblioteki, np. hello_world_library.
Wewnątrz tego katalogu utwórz kolejny katalog o nazwie pakietu, np. hello_world.
Wewnątrz katalogu pakietu utwórz plik __init__.py. Ten plik może być pusty lub może zawierać inicjalizacje dla twojego pakietu.
W głównym katalogu twojego hello_world_library utwórz plik setup.py.
Ten plik zawiera metadane o twojej bibliotece i mówi Pythonowi, jak ją zainstalować.
# setup.pyfrom setuptools import setup, find_packagessetup(name='hello_world',version='0.1',packages=find_packages(),install_requires=[# Wszystkie zależności twojej biblioteki],)
Teraz prześlij bibliotekę:
Zbuduj pakiet:
Z głównego katalogu twojego hello_world_library uruchom:
python3setup.pysdistbdist_wheel
Skonfiguruj uwierzytelnianie dla twine (używane do przesłania twojego pakietu):
Upewnij się, że masz zainstalowany twine (pip install twine).
Nie można przesłać biblioteki Pythona z tą samą wersją, 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 przypadku Pythona -), lub usunąć ostatnią wersję i przesłać nową (potrzebne artifactregistry.versions.delete):
Z tym uprawnieniem możesz pobrać artefakty oraz wyszukiwać informacje poufne i luki w zabezpieczeniach.
Pobierz obraz Docker:
# Configure docker to use gcloud to authenticate with Artifact Registrygcloudauthconfigure-docker<location>-docker.pkg.dev# Dowload imagedockerpull<location>-docker.pkg.dev/<proj-name>/<repo-name>/<img-name>:<tag>