محققان امنیتی یک حمله سردرگمی نام ( confusion attack ) را کشف کردهاند که به هر کسی که یک تصویر ماشین آمازون (AMI) با یک نام خاص منتشر کند، اجازه دسترسی به یک حساب Amazon Web Services (AWS) میدهد.
حملهای که به نام “whoAMI” شناخته میشود، توسط محققان DataDog در آگوست ۲۰۲۴ طراحی شد، و آنها نشان دادند که مهاجمان میتوانند با سوءاستفاده از نحوه بازیابی شناسههای AMI در پروژههای نرمافزاری، به اجرای کد در حسابهای AWS دست یابند.
آمازون وجود آسیبپذیری را تایید کرد و در سپتامبر یک راهحل منتشر کرد، اما این مشکل همچنان در سمت مشتریان ادامه دارد در محیطهایی که سازمانها کد خود را بهروز نمیکنند.
اجرای حمله whoAMI
AMIها ماشینهای مجازی هستند که با نرمافزارهای ضروری (سیستم عامل، برنامهها) از پیش پیکربندی شدهاند و برای ایجاد سرورهای مجازی استفاده میشوند، که این سرورها در اکوسیستم AWS به نام EC2 instances (نمونههای EC2) شناخته میشوند.
آمازون ماشین ایمیجها (AMIها) به دو دسته عمومی و خصوصی تقسیم میشوند، که هر کدام دارای یک شناسه خاص هستند. در مورد AMIهای عمومی، کاربران میتوانند در کاتالوگ AWS جستجو کنند تا شناسه صحیح AMI مورد نظر خود را پیدا کنند.
برای اطمینان از اینکه AMI از یک منبع معتبر در بازار AWS است، جستجو باید شامل ویژگی ‘owners’ باشد، در غیر این صورت خطر حمله whoAMI که ناشی از سردرگمی نام است، افزایش مییابد.
حمله whoAMI به دلیل پیکربندی نادرست انتخاب AMI در محیطهای AWS ممکن است.
- استخراج AMIها توسط نرمافزار با استفاده از API ec2:DescribeImages بدون مشخص کردن مالک.
- استفاده از کاراکترهای جایگزین (wildcards) توسط اسکریپتها به جای شناسههای خاص AMI.
- عملکرد برخی از ابزارهای “زیرساخت بهعنوان کد” مانند Terraform که از “most_recent=true” استفاده میکنند، به طور خودکار جدیدترین AMI که با فیلتر مطابقت دارد را انتخاب میکند.
این شرایط به مهاجمان اجازه میدهند تا AMIهای مخرب را در فرآیند انتخاب وارد کنند، با نامگذاری منبع بهطرزی مشابه یک AMI معتبر. بدون مشخص کردن مالک، AWS همه AMIهای مطابقتدار را برمیگرداند، از جمله AMI مهاجم.
اگر پارامتر most_recent فعال باشد، سیستم قربانی جدیدترین AMIها را از بازار AWS ارائه میدهد که ممکن است شامل AMI مخربی باشد که نام آن شبیه به نام یک AMI معتبر است، و این میتواند منجر به حملات مخرب شود.
در اصل، همه چیزی که یک مهاجم باید انجام دهد این است که یک AMI با نامی منتشر کند که با الگوی مورد استفاده توسط مالکان معتبر تطابق داشته باشد، بهطوری که انتخاب آن توسط کاربران و راهاندازی یک نمونه EC2 برای آنها آسان شود.
حمله whoAMI نیازی به نفوذ به حساب AWS هدف ندارد. مهاجم تنها به یک حساب AWS نیاز دارد تا AMI مخرب خود را در کاتالوگ عمومی AMIهای جامعه منتشر کند و بهطور استراتژیک نامی انتخاب کند که شبیه به AMIهای هدفهای خود باشد.
طبق گزارش Datadog، حدود ۱% از سازمانهایی که آنها نظارت میکنند آسیبپذیر به حملات whoAMI هستند، اما این آسیبپذیری ممکن است هزاران حساب AWS مختلف را تحت تاثیر قرار دهد.
پاسخ و تدابیر دفاعی آمازون.
محققان DataDog نقص امنیتی را به آمازون اطلاع دادهاند و آمازون تایید کرده که سیستمهای داخلی غیرتولیدی این شرکت در معرض حمله whoAMI قرار دارند.
این مشکل در تاریخ ۱۹ سپتامبر سال گذشته حل شد و در تاریخ ۱ دسامبر AWS یک کنترل امنیتی جدید به نام ‘Allowed AMIs’ معرفی کرد که به مشتریان این امکان را میدهد تا فهرستی از ارائهدهندگان AMI معتبر را ایجاد کنند.
AWS اظهار داشت که این آسیبپذیری خارج از آزمایشهای محققان امنیتی مورد سوءاستفاده قرار نگرفت، بنابراین هیچ دادهای از مشتریان از طریق حملات whoAMI فاش نشده است.
آمازون به مشتریان توصیه میکند که همیشه هنگام استفاده از API «ec2:DescribeImages»، مالکان AMI را مشخص کنند و ویژگی «Allowed AMIs» را برای حفاظت بیشتر فعال کنند.
ویژگی جدید از طریق کنسول AWS → EC2 → ویژگیهای حساب → Allowed AMIs در دسترس است.
از نوامبر گذشته، نسخه ۵٫۷۷ Terraform شروع به نمایش هشدارهایی به کاربران کرد زمانی که از «most_recent = true» بدون استفاده از فیلتر مالک استفاده میشود، و اجرای سختگیرانهتر برای نسخههای آینده (۶٫۰) برنامهریزی شده است.
مدیران سیستم باید پیکربندی خود را بررسی کنند و کدهای خود را در منابع AMI (مانند Terraform، AWS CLI، Python Boto3 و Go AWS SDK) برای بازیابی ایمن AMI بهروزرسانی کنند.
برای بررسی اینکه آیا AMIهای غیرمعتبر در حال استفاده هستند یا نه، حالت «Audit Mode» AWS را از طریق «Allowed AMIs» فعال کنید و سپس به حالت «Enforcement Mode» تغییر وضعیت دهید تا آنها را مسدود کنید.
DataDog همچنین یک اسکنر منتشر کرده است تا حساب AWS را برای شناسایی نمونههایی که از AMIهای غیرمعتبر ایجاد شدهاند بررسی کند، که در این مخزن GitHub در دسترس است.