jQuery File Upload یک ویجت jQuery است که قابلیت زیادی مانند انتخاب چندین فایل، درگ اند دراپ(drag & drop) ، ستون وضعیت و پیش نمایش فایلهای صوتی و تصویری را دارد.
این باگ توسط لری کشدالر، محقق شرکت Akamai کشف و گزارش شد. او اعلام کرده است که بسیاری از پکیجهای مختلف دیگری که شامل این کدها هستند هم ممکن است در معرض این خطر باشند.
اشخاص میتوانند باگ امنیتی CVE-2018-9206 برای انجام فعالیتهای مخرب زیادی مثل ایجاد تغییرات ظاهری در سایت، افزودن بدافزار، دزدی اطلاعات و …استفاده کنند.
این محقق میگوید: «همچنین این پکیج به عنوان بخشی در پکیجهای دیگر نیز وجود دارد. از این پکیج در پروژههای مختلفی استفاده شده است که هم اکنون از دایرکتوریهایی وب قابل دسترسی هستند و باعث میشود که پروژههای زیادی در حال حاضر در معرض حمله باشند.»
JQuery File Upload در میان تعداد زیادی از پلتفرمهای سرور که آپلود معمولی فایل از طریق صفحات HTML را ساپورت میکنند، بسیار محبوب است. پلتفرمهایی مانند: PHP, Python, Ruby, Java, Node JS, Go و غیره.
“کشدالر” دو فایل با نامهای upload.php و uploadHandler.php در سورس پکیجها پیدا کرد که شامل کدهای مربوطه برای آپلود فایل بودند.
این فایلها در دایرکتوری روت وبسرور آپلود میشدند و کارشناس توانست با نوشتن دستور تستی با Curl و یک شل PHP ساده، در هاست cPanel قابلیت و امکان آپلود کردن فایل و اجرای دستورات روی سرور را بررسی کند.
تومان curl -F “files=@shell.php” http://example.com/jQuery-File-Upload-9.22.0/server/php/index.php
کد shell.php:
یک اتصال تستی از مرورگر به وب سرور با cmd=id باعث میشود که user id پروسه روی وب سرور به شخص نمایش داده شود.
احتمالا هر پلاگینی که از این پروژه استفاده میکند تحت تاثیر این باگ قرار دارد.
دلیل اصلی این مشکل این است که در نسخه ۲.۳.۹ Apache هاست لینوکس پشتیبانی از htaccess را برای بهبود عملکرد لغو شده است (سرور مجبور نخواهد بود که هر بار به یک دایرکتوری وارد میشود و این فایل را چک کند). دلیل این کار هم جلوگیری از دورزدن تنظیمات امنیتی سرور توسط کاربر بود.
برای جلوگیری از از این اتفاقات و رفع باگ امنیتی توضیح داده شده در CVE-2018-9206 توسعه دهنده این پلاگین یعنی Blueimp، فقط اجازه میدهد که فایلهای آپلودی از نوع image باشند.
این کارشناس امنیتی میگوید: «اینترنت هر روزه به کنترلگرهای مختلفی برای امن نگه داشتن اطلاعات، سیستمها و تراکنشهای ما وابسته است. اگر یکی از این کنترلگرها ناگهان از بین برود، میتواند کاربران و توسعه دهندگان زیادی را بدون اینکه اطلاع داشته باشند در معرض خطر قرار دهد.»
«برای توسعه دهندگان نرم افزار، بازبینی تغییرات در سیستمها و کتابخانههایی که به آنها تکیه میکنند میتواند ایده خوبی باشد. مثلا در همین مورد ذکر شده، حذف کنترلگر امنیتی در پلاگین آپلود Blueimp، نه تنها خود این پلاگین را، بلکه تمامی پروژهها و اپلیکیشنهایی که از این پلاگین استفاده کردهاند را هم تحت تاثیر قرار داد. از وب اپلیکیشنهای stand-alone گرفته، تا پلاگینهای هاست وردپرس و دیگر CMSها »
ترجمه: علی فروغی
منبع :
securityaffairs.co