mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-03-12 21:22:57 -07:00
Translated ['', 'src/pentesting-cloud/gcp-security/gcp-privilege-escalat
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
|
||||
## Vertex AI
|
||||
|
||||
Для отримання додаткової інформації про Vertex AI перегляньте:
|
||||
Для отримання додаткової інформації про Vertex AI див. нижче:
|
||||
|
||||
{{#ref}}
|
||||
../gcp-services/gcp-vertex-ai-enum.md
|
||||
@@ -12,11 +12,11 @@
|
||||
|
||||
### `aiplatform.customJobs.create`, `iam.serviceAccounts.actAs`
|
||||
|
||||
Маючи дозвіл `aiplatform.customJobs.create` та `iam.serviceAccounts.actAs` на цільовому service account, зловмисник може **execute arbitrary code with elevated privileges**.
|
||||
Маючи дозвіл `aiplatform.customJobs.create` та `iam.serviceAccounts.actAs` на цільовому сервісному акаунті, зловмисник може **виконати довільний код із підвищеними привілеями**.
|
||||
|
||||
Це працює шляхом створення custom training job, який запускає код, контрольований зловмисником (або custom container, або Python package). Вказавши привілейований service account через прапорець `--service-account`, job успадковує permissions цього service account. Job виконується на інфраструктурі, керованій Google, з доступом до GCP metadata service, що дозволяє витягти OAuth access token цього service account.
|
||||
Це працює шляхом створення custom training job, який запускає код, контрольований зловмисником (або custom container, або Python package). Вказавши привілейований сервісний акаунт через прапорець `--service-account`, job успадковує права цього сервісного акаунту. Job виконується на інфраструктурі, керованій Google, з доступом до GCP metadata service, що дозволяє витягнути OAuth access token сервісного акаунта.
|
||||
|
||||
**Вплив**: Full privilege escalation to the target service account's permissions.
|
||||
**Наслідок**: Повна ескалація привілеїв до прав цільового сервісного акаунта.
|
||||
|
||||
<details>
|
||||
|
||||
@@ -49,7 +49,7 @@ gcloud ai custom-jobs create \
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Альтернатива: витягнути token з logs</summary>
|
||||
<summary>Альтернатива: витягнути токен із логів</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]
|
||||
> Користувацьке завдання виконуватиметься з дозволами вказаного сервісного акаунта. Переконайтеся, що у вас є `iam.serviceAccounts.actAs` дозвіл на цільовому сервісному акаунті.
|
||||
|
||||
### `aiplatform.models.upload`, `aiplatform.models.get`
|
||||
|
||||
Ця техніка дозволяє підвищити привілеї шляхом завантаження моделі в Vertex AI та подальшого використання цієї моделі для виконання коду з підвищеними привілеями через розгортання endpoint або batch prediction job.
|
||||
Ця техніка дозволяє підвищити привілеї шляхом завантаження моделі в Vertex AI і подальшого використання цієї моделі для виконання коду з підвищеними правами через endpoint deployment або batch prediction job.
|
||||
|
||||
> [!NOTE]
|
||||
> Щоб виконати цю атаку, потрібно мати world readable GCS bucket або створити новий для завантаження артефактів моделі.
|
||||
> Щоб виконати цю атаку, потрібно мати GCS bucket з доступом для читання для всіх або створити новий, куди можна завантажити артефакти моделі.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Upload malicious pickled model with reverse shell</summary>
|
||||
<summary>Завантаження шкідливої pickled model з reverse shell</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>Завантажити модель з container reverse shell</summary>
|
||||
<summary>Завантажити модель із контейнером, що містить reverse shell</summary>
|
||||
```bash
|
||||
# Method 2 using --container-args to run a persistent reverse shell
|
||||
|
||||
@@ -145,12 +143,12 @@ gcloud ai models upload \
|
||||
</details>
|
||||
|
||||
> [!DANGER]
|
||||
> Після завантаження шкідливої моделі зловмисник може чекати, поки хтось її використає, або запустити модель самостійно через розгортання endpoint або batch prediction job.
|
||||
> Після завантаження шкідливої моделі зловмисник може почекати, поки хтось використає модель, або запустити модель самостійно через розгортання на endpoint або виконання пакетної задачі прогнозування.
|
||||
|
||||
|
||||
#### `iam.serviceAccounts.actAs`, ( `aiplatform.endpoints.create`, `aiplatform.endpoints.deploy`, `aiplatform.endpoints.get` ) or ( `aiplatform.endpoints.setIamPolicy` )
|
||||
|
||||
Якщо у вас є дозволи створювати та розгортати моделі на endpoints, або змінювати політики IAM endpoint'а, ви можете використати завантажені шкідливі моделі в проєкті для ескалації привілеїв. Щоб запустити одну з раніше завантажених шкідливих моделей через endpoint, все що потрібно зробити — це:
|
||||
Якщо у вас є дозволи на створення та розгортання моделей на endpoints, або на зміну політик IAM для endpoints, ви можете використати завантажені шкідливі моделі в проєкті для ескалації привілеїв. Щоб викликати одну з раніше завантажених шкідливих моделей через endpoint, все, що вам потрібно зробити — це:
|
||||
|
||||
<details>
|
||||
|
||||
@@ -175,12 +173,12 @@ gcloud ai endpoints deploy-model <endpoint-id> \
|
||||
|
||||
#### `aiplatform.batchPredictionJobs.create`, `iam.serviceAccounts.actAs`
|
||||
|
||||
Якщо у вас є дозволи на створення **batch prediction jobs** та запуск їх від імені сервісного облікового запису, ви можете отримати доступ до служби метаданих. Шкідливий код виконується з **custom prediction container** або **malicious model** під час процесу batch prediction.
|
||||
Якщо у вас є дозволи на створення **batch prediction jobs** і їх запуск під service account, ви можете отримати доступ до metadata service. Зловмисний код виконується з **custom prediction container** або **malicious model** під час процесу batch prediction.
|
||||
|
||||
**Note**: Batch prediction jobs можна створювати лише через REST API або Python SDK (підтримка gcloud CLI відсутня).
|
||||
**Note**: Batch prediction jobs можна створити лише через REST API або Python SDK (підтримка gcloud CLI відсутня).
|
||||
|
||||
> [!NOTE]
|
||||
> Ця атака вимагає спочатку завантаження malicious model (див. розділ `aiplatform.models.upload` вище) або використання custom prediction container з вашим reverse shell code.
|
||||
> Ця атака вимагає спочатку завантажити malicious model (див. розділ `aiplatform.models.upload` вище) або використати custom prediction container з вашим кодом reverse shell.
|
||||
|
||||
<details>
|
||||
|
||||
@@ -240,14 +238,14 @@ https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT}/locations/${R
|
||||
|
||||
### `aiplatform.models.export`
|
||||
|
||||
Якщо у вас є дозвіл **models.export**, ви можете експортувати артефакти моделі в GCS bucket під вашим контролем, що потенційно дозволяє отримати доступ до чутливих даних навчання або файлів моделі.
|
||||
Якщо у вас є право **models.export**, ви можете експортувати артефакти моделі в GCS bucket, яким ви керуєте, потенційно отримавши доступ до чутливих даних навчання або файлів моделі.
|
||||
|
||||
> [!NOTE]
|
||||
> Щоб виконати цю атаку, потрібно мати GCS bucket, доступний для читання й запису для всіх, або створити новий, куди завантажити артефакти моделі.
|
||||
> Щоб виконати цю атаку, потрібно мати GCS bucket, доступний для читання й запису всім, або створити новий, щоб завантажити артефакти моделі.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Експорт артефактів моделі в GCS bucket</summary>
|
||||
<summary>Експортувати артефакти моделі в 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`
|
||||
|
||||
Створюйте **ML pipeline jobs**, які виконують кілька кроків з довільними контейнерами та дозволяють досягти privilege escalation через reverse shell access.
|
||||
Створіть **ML pipeline jobs**, які виконують кілька кроків з довільними контейнерами та дозволяють ескалацію привілеїв через reverse shell.
|
||||
|
||||
Pipelines особливо ефективні для privilege escalation, оскільки вони підтримують багатостадійні атаки, де кожен компонент може використовувати різні контейнери та конфігурації.
|
||||
Pipelines особливо потужні для ескалації привілеїв, оскільки підтримують багатоступеневі атаки, де кожен компонент може використовувати різні контейнери та конфігурації.
|
||||
|
||||
> [!NOTE]
|
||||
> Вам потрібен GCS bucket, доступний для запису будь-ким (world writable), щоб використовувати його як pipeline root.
|
||||
> Вам потрібен GCS bucket з правом запису для всіх користувачів, щоб використовувати його як корінь pipeline.
|
||||
|
||||
<details>
|
||||
|
||||
@@ -292,7 +290,7 @@ pip install google-cloud-aiplatform
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Створити pipeline job з reverse shell container</summary>
|
||||
<summary>Створити pipeline job з контейнером reverse shell</summary>
|
||||
```python
|
||||
#!/usr/bin/env python3
|
||||
import json
|
||||
@@ -386,15 +384,15 @@ print(f" {response.text}")
|
||||
|
||||
### `aiplatform.hyperparameterTuningJobs.create`, `iam.serviceAccounts.actAs`
|
||||
|
||||
Створюйте **hyperparameter tuning jobs**, які виконують довільний код з підвищеними привілеями через custom training containers.
|
||||
Створюйте завдання налаштування гіперпараметрів, які виконують довільний код з підвищеними привілеями через власні контейнери для навчання.
|
||||
|
||||
Hyperparameter tuning jobs дозволяють запускати кілька тренувальних прогонів паралельно, кожен з різними значеннями гіперпараметрів. Вказавши зловмисний контейнер з reverse shell або exfiltration command і асоціювавши його з привілейованим service account, ви можете досягти privilege escalation.
|
||||
Завдання налаштування гіперпараметрів дозволяють запускати кілька навчальних прогонів у паралелі, кожен з різними значеннями гіперпараметрів. Вказавши шкідливий контейнер із reverse shell або командою для ексфільтрації даних і пов’язавши його з привілейованим сервісним обліковим записом, можна досягти ескалації привілеїв.
|
||||
|
||||
**Impact**: Повне privilege escalation до прав цільового service account.
|
||||
**Вплив**: повна ескалація привілеїв до дозволів цільового сервісного облікового запису.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Створити hyperparameter tuning job з reverse shell</summary>
|
||||
<summary>Створити завдання налаштування гіперпараметрів з reverse shell</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`
|
||||
|
||||
Експорт **наборів даних** для exfiltrate даних навчання, які можуть містити конфіденційну інформацію.
|
||||
Експортуйте **datasets** для exfiltrate даних для навчання, які можуть містити конфіденційну інформацію.
|
||||
|
||||
**Примітка**: Операції з наборами даних вимагають REST API або Python SDK (gcloud CLI не підтримує набори даних).
|
||||
**Примітка**: Операції з Dataset вимагають REST API або Python SDK (немає підтримки gcloud CLI для datasets).
|
||||
|
||||
Набори даних часто містять оригінальні дані навчання, які можуть включати PII, конфіденційні бізнес-дані або іншу чутливу інформацію, що використовувалася для навчання продукційних моделей.
|
||||
Datasets часто містять оригінальні дані для навчання, які можуть включати PII, конфіденційні бізнес-дані або іншу чутливу інформацію, що використовувалася для навчання продуктивних моделей.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Експорт набору даних для exfiltrate даних навчання</summary>
|
||||
<summary>Експорт dataset для exfiltrate даних для навчання</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`
|
||||
|
||||
Імпортуйте шкідливі або poisoned дані в існуючі набори даних, щоб **маніпулювати навчанням моделі та вводити backdoors**.
|
||||
Імпортуйте шкідливі або poisoned дані в існуючі набори даних, щоб **маніпулювати навчанням моделей і вводити backdoors**.
|
||||
|
||||
**Примітка**: Операції з наборами даних вимагають REST API або Python SDK (немає підтримки gcloud CLI для наборів даних).
|
||||
**Примітка**: операції з наборами даних вимагають REST API або Python SDK (немає підтримки gcloud CLI для datasets).
|
||||
|
||||
Імпортуючи спеціально підготовлені дані в набір даних, який використовується для навчання ML моделей, зловмисник може:
|
||||
- Впровадити backdoors у моделях (trigger-based misclassification)
|
||||
- Poison training data для погіршення продуктивності моделі
|
||||
- Інжектувати дані, щоб змусити моделі leak інформацію
|
||||
Імпортуючи сконструйовані дані в набір даних, що використовується для навчання ML моделей, зловмисник може:
|
||||
- Впровадити backdoors у моделі (trigger-based misclassification)
|
||||
- Poison training data, щоб погіршити продуктивність моделі
|
||||
- Inject data, щоб змусити моделі leak інформацію
|
||||
- Маніпулювати поведінкою моделі для конкретних вхідних даних
|
||||
|
||||
Ця атака особливо ефективна при націлюванні на набори даних, що використовуються для:
|
||||
- Класифікації зображень (вводити неправильно марковані зображення)
|
||||
- Класифікації тексту (вводити упереджений або шкідливий текст)
|
||||
- Виявлення об'єктів (маніпулювати обмежувальними рамками)
|
||||
- Систем рекомендацій (вводити підроблені уподобання)
|
||||
Ця атака особливо ефективна, коли вона націлена на набори даних, що використовуються для:
|
||||
- Класифікація зображень (inject mislabeled images)
|
||||
- Класифікація тексту (inject biased or malicious text)
|
||||
- Виявлення об'єктів (manipulate bounding boxes)
|
||||
- Системи рекомендацій (inject fake preferences)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Імпорт poisoned даних у набір даних</summary>
|
||||
<summary>Import poisoned data into dataset</summary>
|
||||
```bash
|
||||
# Step 1: List available datasets to find target
|
||||
PROJECT="your-project"
|
||||
@@ -567,11 +565,11 @@ curl -s -X GET \
|
||||
```
|
||||
</details>
|
||||
|
||||
**Сценарії атак:**
|
||||
**Сценарії атаки:**
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Backdoor attack - класифікація зображень</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>Отруєння даних для витягнення моделі</summary>
|
||||
```bash
|
||||
# Scenario 3: Data Poisoning for Model Extraction
|
||||
# Inject carefully crafted queries to extract model behavior
|
||||
@@ -612,7 +610,7 @@ EOF
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Цілеспрямована атака на конкретні цілі</summary>
|
||||
<summary>Цілеспрямована атака на конкретні об'єкти</summary>
|
||||
```bash
|
||||
# Scenario 4: Targeted Attack on Specific Entities
|
||||
# Poison data to misclassify specific individuals or objects
|
||||
@@ -626,37 +624,37 @@ EOF
|
||||
|
||||
> [!DANGER]
|
||||
> Атаки отруєння даних можуть мати серйозні наслідки:
|
||||
> - **Security systems**: Обходити розпізнавання облич або виявлення аномалій
|
||||
> - **Fraud detection**: Навчити моделі ігнорувати певні схеми шахрайства
|
||||
> - **Content moderation**: Змусити шкідливий контент класифікуватися як безпечний
|
||||
> - **Medical AI**: Неправильно класифікувати критичні стани здоров'я
|
||||
> - **Autonomous systems**: Маніпулювати виявленням об'єктів у рішеннях, критичних для безпеки
|
||||
>
|
||||
> **Impact**:
|
||||
> - Моделі з бекдором, що неправильно класифікують при конкретних тригерах
|
||||
> - **Системи безпеки**: Обійти розпізнавання облич або виявлення аномалій
|
||||
> - **Виявлення шахрайства**: Навчити моделі ігнорувати певні шаблони шахрайства
|
||||
> - **Модерація контенту**: Змушувати шкідливий контент класифікуватися як безпечний
|
||||
> - **Медичний AI**: Неправильно класифікувати критичні медичні стани
|
||||
> - **Автономні системи**: Маніпулювати виявленням об'єктів для рішень, критичних для безпеки
|
||||
>
|
||||
> **Вплив**:
|
||||
> - Моделі з бекдором, які неправильно класифікують при певних тригерах
|
||||
> - Погіршення продуктивності та точності моделі
|
||||
> - Зміщені моделі, які дискримінують певні вхідні дані
|
||||
> - Упереджені моделі, що дискримінують певні вхідні дані
|
||||
> - Витік інформації через поведінку моделі
|
||||
> - Довготривала персистентність (моделі, навчені на отруєних даних, успадкують бекдор)
|
||||
>
|
||||
|
||||
### `aiplatform.notebookExecutionJobs.create`, `iam.serviceAccounts.actAs`
|
||||
|
||||
> - Тривала стійкість (моделі, навчені на отруєних даних, успадкують бекдор)
|
||||
>
|
||||
>
|
||||
> ### `aiplatform.notebookExecutionJobs.create`, `iam.serviceAccounts.actAs`
|
||||
>
|
||||
> [!WARNING]
|
||||
> > [!NOTE]
|
||||
> **Deprecated API**: API `aiplatform.notebookExecutionJobs.create` застаріло внаслідок виведення з експлуатації Vertex AI Workbench Managed Notebooks. Сучасний підхід — використовувати **Vertex AI Workbench Executor**, який запускає ноутбуки через `aiplatform.customJobs.create` (вже описано вище).
|
||||
> Vertex AI Workbench Executor дозволяє планувати запуск ноутбуків, які виконуються на інфраструктурі Vertex AI custom training з вказаним service account. Це по суті зручна оболонка над `customJobs.create`.
|
||||
> **Для ескалації привілеїв через ноутбуки**: Використовуйте метод `aiplatform.customJobs.create`, описаний вище; він швидший, надійніший і використовує ту ж базову інфраструктуру, що й Workbench Executor.
|
||||
|
||||
**Наступна техніка наведена лише для історичного контексту і не рекомендована до використання в нових оцінюваннях.**
|
||||
|
||||
Створюйте **notebook execution jobs**, які запускають Jupyter ноутбуки з довільним кодом.
|
||||
|
||||
Notebook jobs ідеально підходять для інтерактивного виконання коду з використанням service account, оскільки підтримують Python-ячейки коду та shell-команди.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Створити зловмисний файл ноутбука</summary>
|
||||
> **Застарілий API**: API `aiplatform.notebookExecutionJobs.create` виведено з експлуатації разом із Vertex AI Workbench Managed Notebooks. Сучасний підхід — використовувати **Vertex AI Workbench Executor**, який запускає ноутбуки через `aiplatform.customJobs.create` (вже описано вище).
|
||||
> Vertex AI Workbench Executor дозволяє планувати запуск ноутбуків, які виконуються на інфраструктурі Vertex AI custom training з вказаним service account. Фактично це зручна оболонка поверх `customJobs.create`.
|
||||
> **For privilege escalation via notebooks**: Використовуйте метод `aiplatform.customJobs.create`, описаний вище, який є швидшим, надійнішим і використовує ту саму інфраструктуру, що й Workbench Executor.
|
||||
>
|
||||
> **Наступна техніка надається лише в історичних цілях і не рекомендована для використання в нових оцінюваннях.**
|
||||
>
|
||||
> Створюйте **notebook execution jobs**, які запускають Jupyter notebooks з довільним кодом.
|
||||
>
|
||||
> Notebook jobs ідеально підходять для виконання коду в інтерактивному стилі з service account, оскільки вони підтримують Python code cells і shell commands.
|
||||
>
|
||||
> <details>
|
||||
>
|
||||
> <summary>Створити шкідливий файл ноутбука</summary>
|
||||
```bash
|
||||
# Create a malicious notebook
|
||||
cat > malicious.ipynb <<'EOF'
|
||||
@@ -683,7 +681,7 @@ gsutil cp malicious.ipynb gs://deleteme20u9843rhfioue/malicious.ipynb
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Виконати notebook за допомогою цільового service account</summary>
|
||||
<summary>Виконати notebook під цільовим сервісним обліковим записом</summary>
|
||||
```bash
|
||||
# Create notebook execution job using REST API
|
||||
PROJECT="gcp-labs-3uis1xlx"
|
||||
|
||||
Reference in New Issue
Block a user