mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-29 22:20:33 -08:00
Translated ['src/pentesting-cloud/aws-security/aws-services/aws-sagemake
This commit is contained in:
@@ -2,31 +2,31 @@
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Service-Übersicht
|
||||
## Service Overview
|
||||
|
||||
Amazon SageMaker ist AWS' verwaltete Machine-Learning-Plattform, die Notebooks, Trainingsinfrastruktur, Orchestrierung, Registries und verwaltete Endpunkte zusammenführt. Eine Kompromittierung von SageMaker-Ressourcen verschafft typischerweise:
|
||||
Amazon SageMaker ist AWS' verwaltete Machine-Learning-Plattform, die Notebooks, Trainings-Infrastruktur, Orchestrierung, Registries und verwaltete Endpoints zusammenführt. Eine Kompromittierung von SageMaker-Ressourcen ermöglicht typischerweise:
|
||||
|
||||
- Langfristige IAM-Ausführungsrollen mit weitreichendem Zugriff auf S3, ECR, Secrets Manager oder KMS.
|
||||
- Zugriff auf sensible Datensätze, die in S3, EFS oder in Feature Stores gespeichert sind.
|
||||
- Netzwerk-Fußfeste innerhalb von VPCs (Studio apps, training jobs, endpoints).
|
||||
- Hochprivilegierte presigned URLs, die die Console-Authentifizierung umgehen.
|
||||
- Netzwerk-Footprints innerhalb von VPCs (Studio apps, training jobs, endpoints).
|
||||
- Hochprivilegierte presigned URLs, die die Konsolen-Authentifizierung umgehen.
|
||||
|
||||
Zu verstehen, wie SageMaker aufgebaut ist, ist entscheidend, bevor Sie pivot, persist oder exfiltrate Daten.
|
||||
Das Verständnis, wie SageMaker aufgebaut ist, ist entscheidend, bevor Sie pivot, persist oder exfiltrate Daten.
|
||||
|
||||
## Core Building Blocks
|
||||
|
||||
- **Studio Domains & Spaces**: Web IDE (JupyterLab, Code Editor, RStudio). Jede Domain hat ein gemeinsames EFS-Dateisystem und eine standardmäßige Ausführungsrolle.
|
||||
- **Studio Domains & Spaces**: Web-IDE (JupyterLab, Code Editor, RStudio). Jede Domain hat ein gemeinsames EFS-Dateisystem und eine standardmäßige Ausführungsrolle.
|
||||
- **Notebook Instances**: Verwaltete EC2-Instanzen für eigenständige Notebooks; verwenden separate Ausführungsrollen.
|
||||
- **Training / Processing / Transform Jobs**: Ephemere Container, die Code aus ECR und Daten aus S3 ziehen.
|
||||
- **Pipelines & Experiments**: Orchestrierte Workflows, die alle Schritte, Inputs und Outputs beschreiben.
|
||||
- **Models & Endpoints**: Verpackte Artefakte, die für Inference über HTTPS-Endpoints bereitgestellt werden.
|
||||
- **Feature Store & Data Wrangler**: Verwaltete Services zur Datenaufbereitung und Feature-Verwaltung.
|
||||
- **Models & Endpoints**: Verpackte Artefakte, die für Inferenz über HTTPS-Endpunkte bereitgestellt werden.
|
||||
- **Feature Store & Data Wrangler**: Verwaltete Services für Datenvorbereitung und Feature-Management.
|
||||
- **Autopilot & JumpStart**: Automatisiertes ML und kuratierter Modellkatalog.
|
||||
- **MLflow Tracking Servers**: Verwaltetes MLflow UI/API mit presigned access tokens.
|
||||
- **MLflow Tracking Servers**: Verwaltete MLflow UI/API mit presigned access tokens.
|
||||
|
||||
Jede Ressource referenziert eine Ausführungsrolle, S3-Standorte, Container-Images und optional VPC/KMS-Konfiguration—erfassen Sie alle während der enumeration.
|
||||
Jede Ressource referenziert eine Ausführungsrolle, S3-Standorte, Container-Images und optionale VPC-/KMS-Konfiguration — erfassen Sie alle während der Enumeration.
|
||||
|
||||
## Konto- & globale Metadaten
|
||||
## Account & Global Metadata
|
||||
```bash
|
||||
REGION=us-east-1
|
||||
# Portfolio status, used when provisioning Studio resources
|
||||
@@ -39,7 +39,7 @@ aws sagemaker list-models --region $REGION --query 'Models[].ExecutionRoleArn' -
|
||||
# Generic tag sweep across any SageMaker ARN you know
|
||||
aws sagemaker list-tags --resource-arn <sagemaker-arn> --region $REGION
|
||||
```
|
||||
Notiere jegliche cross-account trust (execution roles oder S3 buckets mit external principals) und grundlegende Einschränkungen wie service control policies oder SCPs.
|
||||
Notieren Sie jegliche Cross-Account-Trusts (execution roles oder S3 buckets mit external principals) und grundlegende Einschränkungen wie service control policies (SCPs).
|
||||
|
||||
## Studio Domains, Apps & Shared Spaces
|
||||
```bash
|
||||
@@ -60,23 +60,23 @@ aws sagemaker describe-space --domain-id <domain-id> --space-name <space> --regi
|
||||
aws sagemaker list-studio-lifecycle-configs --region $REGION
|
||||
aws sagemaker describe-studio-lifecycle-config --studio-lifecycle-config-name <name> --region $REGION
|
||||
```
|
||||
Was zu erfassen:
|
||||
Was zu protokollieren ist:
|
||||
|
||||
- `DomainArn`, `AppSecurityGroupIds`, `SubnetIds`, `DefaultUserSettings.ExecutionRole`.
|
||||
- Eingehängte EFS (`HomeEfsFileSystemId`) und S3-Home-Verzeichnisse.
|
||||
- Lifecycle-Skripte (enthalten oft Bootstrap-Anmeldeinformationen oder zusätzlichen Push-/Pull-Code).
|
||||
- Gemountetes EFS (`HomeEfsFileSystemId`) und S3-Home-Verzeichnisse.
|
||||
- Lifecycle-Skripte (enthalten oft Bootstrap-Zugangsdaten oder zusätzlichen Code zum Pushen/Pullen).
|
||||
|
||||
> [!TIP]
|
||||
> Vorgesignierte Studio-URLs können die Authentifizierung umgehen, wenn sie breit vergeben werden.
|
||||
> Presigned Studio URLs können die Authentifizierung umgehen, wenn sie weitreichend gewährt werden.
|
||||
|
||||
## Notebook-Instanzen & Lifecycle-Konfigurationen
|
||||
## Notebook Instances & Lifecycle Configs
|
||||
```bash
|
||||
aws sagemaker list-notebook-instances --region $REGION
|
||||
aws sagemaker describe-notebook-instance --notebook-instance-name <name> --region $REGION
|
||||
aws sagemaker list-notebook-instance-lifecycle-configs --region $REGION
|
||||
aws sagemaker describe-notebook-instance-lifecycle-config --notebook-instance-lifecycle-config-name <cfg> --region $REGION
|
||||
```
|
||||
Notebook-Metadaten offenbaren:
|
||||
Notebook-Metadaten geben Aufschluss über:
|
||||
|
||||
- Ausführungsrolle (`RoleArn`), direkter Internetzugang vs. nur VPC-Modus.
|
||||
- S3-Standorte in `DefaultCodeRepository`, `DirectInternetAccess`, `RootAccess`.
|
||||
@@ -96,11 +96,11 @@ aws sagemaker describe-transform-job --transform-job-name <job> --region $REGION
|
||||
Prüfen:
|
||||
|
||||
- `AlgorithmSpecification.TrainingImage` / `AppSpecification.ImageUri` – welche ECR-Images bereitgestellt werden.
|
||||
- `InputDataConfig` & `OutputDataConfig` – S3-Buckets, Prefixes und KMS-Schlüssel.
|
||||
- `ResourceConfig.VolumeKmsKeyId`, `VpcConfig`, `EnableNetworkIsolation` – bestimmen die Netzwerk- oder Verschlüsselungs-Konfiguration.
|
||||
- `HyperParameters` können Umgebungsgeheimnisse oder Connection-Strings leak.
|
||||
- `InputDataConfig` & `OutputDataConfig` – S3-Buckets, Prefixes und KMS-Keys.
|
||||
- `ResourceConfig.VolumeKmsKeyId`, `VpcConfig`, `EnableNetworkIsolation` – bestimmen Netzwerk- oder Verschlüsselungskonfiguration.
|
||||
- `HyperParameters` können Umgebungsgeheimnisse oder Connection Strings leak.
|
||||
|
||||
## Pipelines, Experimente & Trials
|
||||
## Pipelines, Experiments & Trials
|
||||
```bash
|
||||
aws sagemaker list-pipelines --region $REGION
|
||||
aws sagemaker list-pipeline-executions --pipeline-name <pipeline> --region $REGION
|
||||
@@ -110,7 +110,7 @@ aws sagemaker list-experiments --region $REGION
|
||||
aws sagemaker list-trials --experiment-name <experiment> --region $REGION
|
||||
aws sagemaker list-trial-components --trial-name <trial> --region $REGION
|
||||
```
|
||||
Pipeline-Definitionen beschreiben jeden Schritt, zugeordnete Rollen, Container-Images und Umgebungsvariablen. Trial-Komponenten enthalten häufig Trainings-Artefakt-URIs, S3-Logs und Metriken, die auf sensible Datenflüsse hinweisen.
|
||||
Pipeline-Definitionen beschreiben jeden Schritt, die zugehörigen Rollen, Container-Images und Umgebungsvariablen. Trial-Komponenten enthalten oft URIs von Trainingsartefakten, S3-Logs und Metriken, die auf sensible Datenflüsse hinweisen.
|
||||
|
||||
## Modelle, Endpoint-Konfigurationen & bereitgestellte Endpoints
|
||||
```bash
|
||||
@@ -125,10 +125,10 @@ aws sagemaker describe-endpoint --endpoint-name <endpoint> --region $REGION
|
||||
```
|
||||
Fokusbereiche:
|
||||
|
||||
- S3-URIs der Model-Artefakte (`PrimaryContainer.ModelDataUrl`) und Inference-Container-Images.
|
||||
- Konfiguration von Endpoint Data Capture (S3 bucket, KMS) für mögliche Log exfil.
|
||||
- Multi-model Endpoints, die `S3DataSource` oder `ModelPackage` verwenden (auf cross-account packaging prüfen).
|
||||
- Netzwerkkonfigurationen und security groups, die an Endpoints angehängt sind.
|
||||
- Modell-Artefakt S3-URIs (`PrimaryContainer.ModelDataUrl`) und Inference-Container-Images.
|
||||
- Konfiguration der Endpoint Data Capture (S3 bucket, KMS) für mögliche log exfil.
|
||||
- Multi-Model-Endpunkte, die `S3DataSource` oder `ModelPackage` verwenden (auf Cross-Account-Packaging prüfen).
|
||||
- Netzwerk-Konfigurationen und Sicherheitsgruppen, die an Endpoints angehängt sind.
|
||||
|
||||
## Feature Store, Data Wrangler & Clarify
|
||||
```bash
|
||||
@@ -143,9 +143,9 @@ aws sagemaker list-model-monitoring-schedule --region $REGION
|
||||
```
|
||||
Sicherheits-Hinweise:
|
||||
|
||||
- Online feature stores replizieren Daten zu Kinesis; überprüfe `OnlineStoreConfig.SecurityConfig.KmsKeyId` und VPC.
|
||||
- Data Wrangler flows enthalten häufig eingebettete JDBC/Redshift-Zugangsdaten oder private Endpunkte.
|
||||
- Clarify/Model Monitor jobs exportieren Daten nach S3, die möglicherweise weltweit lesbar oder kontenübergreifend zugänglich sind.
|
||||
- Online feature stores replizieren Daten in Kinesis; prüfen Sie `OnlineStoreConfig.SecurityConfig.KmsKeyId` und die VPC.
|
||||
- Data Wrangler flows enthalten häufig JDBC/Redshift-Zugangsdaten oder private Endpunkte.
|
||||
- Clarify/Model Monitor-Jobs exportieren Daten nach S3, die möglicherweise öffentlich lesbar oder kontoübergreifend zugänglich sind.
|
||||
|
||||
## MLflow Tracking Servers, Autopilot & JumpStart
|
||||
```bash
|
||||
@@ -158,14 +158,14 @@ aws sagemaker describe-auto-ml-job --auto-ml-job-name <name> --region $REGION
|
||||
aws sagemaker list-jumpstart-models --region $REGION
|
||||
aws sagemaker list-jumpstart-script-resources --region $REGION
|
||||
```
|
||||
- MLflow tracking servers speichern Experimente und Artefakte; presigned URLs können alles exponieren.
|
||||
- Autopilot jobs starten mehrere training jobs — enumeriere Outputs nach versteckten Daten.
|
||||
- JumpStart reference architectures können privilegierte Rollen im Konto bereitstellen.
|
||||
- MLflow-Tracking-Server speichern Experimente und Artefakte; presigned URLs können alles offenlegen.
|
||||
- Autopilot-Jobs starten mehrere training jobs — prüfe die Outputs auf versteckte Daten.
|
||||
- JumpStart reference architectures können privilegierte Rollen im Account bereitstellen.
|
||||
|
||||
## IAM & Netzwerküberlegungen
|
||||
|
||||
- Ermittle IAM-Policies, die an alle Ausführungsrollen angehängt sind (Studio, notebooks, training jobs, pipelines, endpoints).
|
||||
- Überprüfe Netzwerkkontexte: subnets, security groups, VPC endpoints. Viele Organisationen isolieren training jobs, vergessen jedoch, ausgehenden Traffic zu beschränken.
|
||||
- Liste die IAM-Policies auf, die an alle Ausführungsrollen angehängt sind (Studio, notebooks, training jobs, pipelines, endpoints).
|
||||
- Prüfe Netzwerk-Kontexte: subnets, security groups, VPC endpoints. Viele Organisationen isolieren training jobs, vergessen aber, den ausgehenden Traffic zu beschränken.
|
||||
- Überprüfe S3-Bucket-Policies, die in `ModelDataUrl`, `DataCaptureConfig`, `InputDataConfig` referenziert werden, auf externen Zugriff.
|
||||
|
||||
## Privilege Escalation
|
||||
|
||||
Reference in New Issue
Block a user