پژوهشگران امنیتی زنجیرهای از حملات را شناسایی کردهاند که از طریق آپلود تصاویر با فرمت HEIC در کتابخانه رسانهای (Media Library) وردپرس، منجر به اجرای کد از راه دور (Remote Code Execution) در فرآیند PHP-FPM میشود.
ریشه آسیبپذیری و مکانیسم حمله
این ریسک امنیتی مربوط به کتابخانه libheif است؛ مؤلفهای گسترده که برای خواندن فایلهای HEIC، HEIF و AVIF استفاده میشود. زمانی که وردپرس یک تصویر آپلود شده را برای تغییر اندازه به ImageMagick ارسال میکند، یک فایل specially crafted میتواند به دکودر آسیبپذیر نفوذ کرده و به جای تولید تصویر، باعث تخریب حافظه (Memory Corruption) شود.
آسیبپذیری اصلی که با شناسه GHSA-x8r2-mggj-j6wr ردیابی میشود، دکودر تصاویر فشردهنشده در libheif را هدف قرار میدهد. در این سناریو، فایل مخرب دو کانال رنگی با عرض بایتهای متفاوت تعریف میکند. دکودر فضای بسیار کمی را برای یکی از کانالها رزرو میکند اما دادهها را با عرض بیشتر مینویسد، که منجر به Buffer Overflow و جریان یافتن بایتهای تحت کنترل مهاجم به خارج از محدوده حافظه تعیین شده میشود.
جزئیات فنی اکسپلویت
- تغییر مسیر توابع: این سرریز حافظه میتواند ارجاعات اشیاء C++ را تغییر داده و در نهایت فراخوانی یک تابع مجازی (Virtual Function Call) را در هنگام پاکسازی دکودر منحرف کند.
- دور زدن ASLR: برای غلبه بر تصادفیسازی حافظه (ASLR)، مهاجم ابتدا تصاویری برای افشای اطلاعات آپلود میکند و سپس با بررسی پیکسلهای فایلهای JPEG تولید شده توسط وردپرس، اطلاعات لازم برای شناسایی نسخه کتابخانه و شخصیسازی Trigger نهایی را استخراج میکند.
- پیشنیازها: این حمله نیازمند یک کاربر وارد شده (Logged-in) با دسترسی
upload_filesاست (معمولاً نقش Author یا بالاتر).
محیطهای تأثیرپذیر و نتایج آزمایش
این زنجیره حمله در محیطهای آزمایشگاهی بر روی توزیعهای زیر تأیید شده است:
- Ubuntu 26.04: وردپرس 7.1.1، PHP-FPM 8.5.4، ImageMagick 7.1.2.18 و libheif 1.21.2
- Debian 13: وردپرس 7.0، PHP-FPM 8.4.24، ImageMagick 7.1.1.43 و libheif 1.19.8
در آزمایشات، کد مخرب با دسترسیهای حساب www-data اجرا شده است که نشاندهنده دسترسی کامل به مجوزهای سرویس وب است.
راهکارهای دفاعی و توصیهها
به مدیران سیستم و متخصصان SOC توصیه میشود اقدامات زیر را سریعاً اجرا کنند:
- بهروزرسانی فوری: کتابخانه libheif را به نسخه 1.23.3 یا بالاتر ارتقا دهند (نسخههای 1.18.0 تا 1.23.2 آسیبپذیر هستند).
- محدود کردن فرمتها: در صورتی که نیاز به آپلود HEIC یا AVIF نیست، این فرمتها را پیش از رسیدن به مرحله دکودینگ مسدود کنند.
- ایزولهسازی: پردازش رسانههای غیرقابل اعتماد را در سرویسهای ایزوله با دسترسیهای محدود (Low-privilege) انجام دهند.
- مانیتورینگ: خروجهای مکرر (Crash) فرآیندهای PHP-FPM و پاسخهای HTTP 503 پس از آپلود تصاویر HEIC را بررسی کنند.