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

This commit is contained in:
Translator
2025-11-24 10:25:40 +00:00
parent 1722abf240
commit d05f4b8d4b

View File

@@ -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"