یک آسیبپذیری امنیتی از نوع تزریق دستور (Command Injection) در کتابخانه orbitale/imagemagick-php (نسخههای ۳.۳.۵ و پایینتر) شناسایی شده است. این نقص امنیتی در تابع Command::font در فایل src/Command.php قرار دارد و به مهاجم اجازه میدهد تا از طریق آرگومان fontFile، دستورات سیستمعامل را تزریق و اجرا کند.
جزئیات فنی و نحوه حمله
این آسیبپذیری زمانی رخ میدهد که یک اپلیکیشن، دادههای کنترلنشده توسط کاربر را بدون پاکسازی (Sanitization) به پارامتر fontFile منتقل کند. مهاجم میتواند با استفاده از کاراکترهای خاص در شل (Shell Metacharacters)، دستورات خود را به دستورات اصلی ImageMagick اضافه کرده و آنها را در سطح سیستمعامل اجرا کند. اگرچه امتیاز CVSS این آسیبپذیری ۵.۵ (متوسط) برآورد شده است، اما در صورت دسترسی مستقیم کاربر به پارامترهای ورودی، خطر واقعی میتواند به سطح اجرای کد از راه دور (RCE) با تاثیر بالا برسد.
وضعیت اکسپلویت و اصلاحیه
- وضعیت اکسپلویت: یک کد اثبات مفهوم (PoC) عمومی برای این آسیبپذیری منتشر شده است که سطح دشواری حمله را کاهش میدهد.
- وضعیت اصلاحیه: تا لحظه انتشار این گزارش، هیچ اصلاحیه یا پچ (Patch) رسمی از سوی توسعهدهنده ارائه نشده است، زیرا توسعهدهنده به گزارشهای مربوط به این نقص پاسخ نداده است.
توصیههای امنیتی و مقابله
از آنجایی که این یک کتابخانه (Library) است و نه یک سرویس مستقل، میزان آسیبپذیری کاملاً به نحوه پیادهسازی در اپلیکیشن میزبان بستگی دارد. اقدامات زیر توصیه میشود:
- استفاده از لیستهای مجاز (Allowlist): تنها مسیرهای فونت شناخته شده و معتبر را در سمت سرور بپذیرید و از پذیرش هرگونه ورودی آزاد توسط کاربر خودداری کنید.
- پاکسازی ورودیها: در صورت عدم امکان استفاده از لیست مجاز، حتماً از توابعی مانند
escapeshellargیاescapeshellcmdبرای خنثیسازی کاراکترهای خاص استفاده کنید. - اصل حداقل دسترسی: دستورات ImageMagick را در یک کانتینر (Container) ایزوله با سطح دسترسی بسیار محدود و سیستم فایل خواندنی (Read-only) اجرا کنید تا در صورت موفقیت حمله، دامنه آسیب (Blast Radius) محدود شود.