در جریان همایش بینالمللی امنیت سایبری Pwn2Own Berlin 2025، یک آسیبپذیری جدی از نوع Integer Overflow در پلتفرم مجازیسازی VMware ESXi شناسایی و با موفقیت مورد بهرهبرداری قرار گرفته است. این رخداد اولین نمونهی موفق از نفوذ به ESXi در تاریخ این رقابت معتبر بوده و حاکی از ضعف امنیتی در نسخههای فعلی این پلتفرم میباشد. با توجه به اهمیت بالای VMware ESXi در زیرساختهای مجازیسازی سازمان، اتخاذ تدابیر پیشگیرانه تا زمان انتشار وصلهی امنیتی رسمی توسط شرکت VMware ضروری به نظر میرسد.
جزئیات فنی آسیبپذیری:
در این حمله، مهاجم با استفاده از یک نقص از نوع سرریز عدد صحیح (Integer Overflow) در لایه مدیریت منابع VMware ESXi، موفق به اجرای کد دلخواه در سطح hypervisor شد. این نقص میتواند منجر به نقض کامل کنترل ماشینهای مجازی میزبانیشده شود و با توجه به ماهیت hypervisor، پیامدهای آن میتواند کل ساختار مجازیسازی سازمان را تحت تأثیر قرار دهد.
اقدامات پیشنهادی:
محدودسازی دسترسیها: دسترسی به محیط مدیریتی ESXi تنها به افراد مجاز و از طریق شبکههای داخلی محدود شود. دسترسی از راه دور (Remote Access) به هاستهای ESXi فقط از طریق VPN ایمن و با احراز هویت دومرحلهای انجام گیرد.
جداسازی و ایزولهسازی سرویسها: ماشینهای مجازی حیاتی یا دارای دادههای حساس در هاستهای جداگانه میزبانی شده و از ماشینهای عمومی یا توسعهای تفکیک گردند.
نظارت داثمی: استفاده از سامانههای مانیتورینگ و تحلیل رخداد برای شناسایی فعالیتهای غیرعادی در سطح هایپروایزر. بررسی مستمر لاگهای امنیتی هاستهای ESXi جهت کشف نشانههای نفوذ احتمالی.
محدودیت در تخصیص منابع: اعمال سقف تخصیص منابع (RAM، CPU) برای هر ماشین مجازی با هدف جلوگیری از سوءاستفاده از ضعف مدیریت حافظه. بررسی سلامت و تمامیت فایلهای hypervisor از طریق checksum و log integrity برای اطمینان از عدم آلودگی.
دیاگرام مفهومی حمله به ESXi با Integer Overflow
+————————–+
| Guest VM (Attacker) |
| – User with low priv. |
+———–+————–+
|
| Craft Malicious Input
V
+————————–+
| VMware ESXi Hypervisor |
| – Integer Overflow Bug |
| – Memory miscalculation |
+———–+————–+
|
| Memory corruption (e.g., heap overflow)
V
+————————–+
| Arbitrary Code Execution|
| – VM Escape |
| – Read/write outside |
| intended memory bounds |
+————————–+
|
V
+————————–+
| Full Host Compromise |
| – All VMs exposed |
| – Privilege escalation |
+————————–+
شبهکد نمونه مثال تخصیص حافظه با Overflow:
// فرض: حمله از طریق درخواست تخصیص حافظه در VM
uint32_t input_size = attacker_supplied_value(); // مثلا ۰xFFFFFFFF (4294967295)
uint32_t total_bytes = input_size * sizeof(struct Packet);
// Integer Overflow رخ میدهد اگر input_size خیلی بزرگ باشد
void* buffer = malloc(total_bytes)
; // تخصیص حافظه کمتر از مورد انتظار
// نوشتن داده به بافر، خارج از حافظه مجاز
for (int i = 0; i < input_size; i++) {
buffer[i] = attacker_controlled_data(); // نوشتن در ناحیه ممنوعه حافظه
}
مهاجم حالا میتواند ساختارهای حیاتی سیستم را overwrite کند
.
شبیه سازی حمله
شبیهسازی حمله نشان داد که اگر مهاجم مقدار بزرگی مانند input_size = 2^32 / sizeof(Packet) + δ را به سیستم ارائه دهد، عملیات ضرب در سیستم ۳۲ بیتی دچار سرریز عدد صحیح (Integer Overflow) میشود:
🔴 نتیجه: سیستم تنها ۴ گیگابایت حافظه تخصیص میدهد در حالی که انتظار میرفت ۵۷۶ گیگابایت تخصیص یابد. این ناهماهنگی منجر به نوشتن در حافظه خارج از محدوده (Out-of-Bounds Write) شده و میتواند برای اجرای کد مخرب یا دسترسی به دادههای غیرمجاز مورد استفاده قرار گیرد.