S3 سراسری؛ کانال C2 تازه برای Code Interpreterهای AgentCore
خلاصهٔ کاملتر
یه محقق امنیتی از شرکت Sonrai، با ادامهی پژوهشهای قبلی دربارهی خروج داده از طریق DNS، یه کانال فرماندهی (Command & Control یا C2) تازه برای Code Interpreterهای sandboxed در Amazon Bedrock AgentCore پیدا کرده: دسترسی سراسری به S3. نکتهی مهم اینه که این یه آسیبپذیری Bedrock نیست، بلکه استفادهی نامتعارف از یه قابلیتِ کاملاً مستندشدهست.
زمینهی ماجرا اینه که Code Interpreterها محیطی هستن که اجرای کد دلخواه توشون یه «قابلیت» محسوب میشه نه آسیبپذیری؛ پس اگه مهاجمی بتونه کد توش تزریق کنه، جای زیادی برای سوءاستفاده هست. آمازون برای همین حالت sandbox رو اضافه کرد تا دسترسی مفسر به اینترنت عمومی محدود بشه. قبلاً محققهای BeyondTrust و Unit 42 پالو آلتو نشون داده بودن که این حالت رو میشه با کوئریهای DNS دور زد، که آمازون اون رو برطرف کرد. ولی بستن DNS کل ریسک خروج داده رو حل نمیکنه.
محقق نشون داده که دسترسی به S3 از داخل مفسر sandboxed تقریباً هیچ محدودیتی نداره: دسترسی به باکتهای بینسازمانی مجازه و حتی بدون نقش اجرایی (execution role) هم اگه باکت برای دسترسی عمومی تنظیم شده باشه، میشه با درخواستهای بدونامضا خوند و نوشت. چون این دسترسی سراسریه، تبدیلش به یه کانال ارتباطی دوطرفه سادهست: یه باکت خارجی (بینحساب و بینسازمان) راه میندازی، یه اسکریپت کلاینت مینویسی که باکت رو poll میکنه، هر اسکریپت شل رو اجرا میکنه و خروجی رو دوباره توی باکت مینویسه، و بعد دستورها رو آپلود میکنی و منتظر جواب میمونی. برای اینکه فقط خودت و مفسر به باکت دسترسی داشته باشین، از pre-signed URLها استفاده میشه. ساختار فایل دستوری که توی باکت آپلود میشه اینطوریه:
{
"seq": <Sequence Number>,
"cmd": "<Shell Command>",
"response_put_url": "<Presigned PUT URL for s3://{bucket}/sessions/{id}/out/{seq}>"
}محقق با همکاری Kinnaird McQuade، ابزار متنباز قبلیِ مبتنی بر DNS رو با S3 بهعنوان کانال دوم گسترش داده و یه reverse shell کامل به مفسر sandboxed ساخته (با تزریق پرامپت به یه وبسرورِ هوش مصنوعیِ آسیبپذیر). راهحل پیشنهادی اینه: تا جای ممکن از حالت VPC بهجای sandbox استفاده کن چون کنترل دقیقتری روی شبکه میده؛ و اگه واقعاً به S3 نیاز داری، از Gateway Endpoint همراه با Endpoint Policyهای سفتوسخت استفاده کن تا دسترسی فقط به باکتهای مشخص محدود بشه. آمازون نمیتونه دسترسی سراسری S3 رو کلاً ببنده چون گردشکارهای قانونی رو میشکنه.
نکات کلیدی:
- دسترسی سراسری به S3 میتونه کانال C2 برای Code Interpreterهای sandboxed آمازون باشه
- این آسیبپذیری نیست؛ استفادهی نامتعارف از یه قابلیت مستندشدهست
- حتی بدون نقش اجرایی هم میشه باکتهای عمومی رو با درخواست بدونامضا خوند و نوشت
- راهحل: حالت VPC بهجای sandbox و Gateway Endpoint با سیاستهای محدودکنندهی سفتوسخت




