کشف آسیب‌پذیری DoS در وردپرس!

یک آسیب‌پذیری ساده اما در عین حال جدی در پلتفرم CMS وردپرس کشف شده است، این آسیب‌پذیری DoS در لایه‌ی کاربرد است که اجازه می‌دهد هر کسی بدون نیاز به پهنای باند زیاد (خلاف آنچه در لایه شبکه برای انجام حمله‌ی DDoS مورد نیاز است) و تنها با یک ماشین ساده وب‌سایت های وردپرسی را از پای درآورد.


از آنجایی که شرکت Wordpress از انتشار پچ برای این آسیب‌پذیری خودداری نموده است، آسیب‌پذیری (CVE-2018-6389) همچنان بدون پچ ادامه پیدا کرده و تقریباً تمامی نسخه‌های وردپرس منتشر شده در ۹ سال‌ اخیر، از جمله آخرین نسخه‌ی پایدار آن (نسخه ۴.۹.۲)، را تحت تأثیر قرار داده است.
این آسیب‌پذیری که توسط محقق امنیتی اسرائیل به نام Barak Tawily شناسایی شد، یک اسکریپت داخلی در CMS وردپرس است که در "load-scripts.php" قرار گرفته و برای پردازش درخواست‌های کاربر مورد استفاده قرار می‌گیرد.
اگر در مورد این فایل اطلاعی ندارید، باید بگوییم که فایل load-scripts.php تنها برای مدیران وب‌سایت طراحی شده تا با ترکیب فایل‌های جاواسکریپت و تبدیل آن‌ها به یک درخواست واحد، به بهبود عملکرد وب‌سایت و لود شدن سریعتر صفحات کمک کند.

برای اینکه فایل  "load-scripts.php" قبل از ورود، در صفحه لاگین ادمین (wp-login.php) کار کند، طراحان وردپرس هیچ‌گونه احراز هویتی در این قسمت قرار نداده‌اند، و این یعنی اینکه برای هر کسی قابل دسترسی است.

بسته به پلاگین‌ها و ماژول‌هایی که نصب کرده‌اید فایل load-scripts.php فایل‌های جاوااسکریپت مورد نیاز را به صورت انتخابی، با فرستادن نام آن‌ها (که با کاما از هم جدا شده‌اند) به پارامتر "load" فراخوانی می‌کند، مانند URL زیر:

https://your-wordpress-site.com/wp-admin/load-scripts.php?c=1&load=editor,common,user-profile,media-widgets,media-gallery

مادامی که سایت در حال لود شدن است، 'load-scripts.php' (که در سرصفحه آمده است) سعی می‌کند نام فایل‌های جاوااسکریپتی را که در URL آمده‌ است پیدا کند، پس از یافتن آن‌ها، محتوایشان را در یک فایل واحد قرار داده و سپس آن‌ را به مرورگر کاربر بازمی‌گرداند.

 

حمله‌ی DoS وردپرس چگونه عمل می‌کند؟

به گفته‌ی این محقق، به راحتی می‌توان load-scripts.php را مجبور کرد که تمامی فایل‌های جاوااسکریپت احتمالی را (یعنی ۱۸۱ اسکریپت) با فرستادن نام آن‌ها به  URL فوق فراخوانی کند، و با مصرف بیش از حد CPU و حافظه سرور، وب‌سایت‌های هدف را به صورت مخفیانه کُند کند.

Tawilyمی‌گوید: "یک لیست خوش‌تعریف وجود دارد (wp_scripts$) که می‌تواند به عنوان بخشی از پارامتر []load توسط کاربران درخواست شود. اگر مقدار درخواست شده وجود داشته باشد، سرور یک عمل خواندن I/O را برای مسیر مربوط به مقدار درخواست شده توسط کاربر انجام خواهد داد."

اگرچه یک درخواست برای داون کردن کامل وب‌سایت کافی نیست، اما  Tawily از یک اسکریپت پایتون proof-of-concept ‪(PoC)‬ با عنوان doser.py استفاده نمود، که موجب می‌شود با یک حرکت، تعداد زیادی درخواست همزمان به یک URL یکسان فرستاده شود و تا حد ممکن از منابع CPUی سرورهای هدف استفاده کند تا جایی که منجر به داون شدن وب‌سایت گردد.

هکرنیوز اکسپلویت DoS را تأیید نموده و اذعان داشته که این اکسپلویت با موفقیت توانسته یکی از وب‌سایت‌های دموی وردپرس را در یک سرور VPS (با قدرت پردازش متوسط) از کار بیندازد.

Tawily می‌گوید: "لازم است یادآوری کنم که load-scripts.php به هیچ‌گونه احراز هویتی نیاز نداشته و یک کاربر ناشناس می‌تواند به راحتی به آن دسترسی داشته باشد. تقریباً پس از ۵۰۰ درخواست، سرور دیگر پاسخی به درخواست‌ها نداده و یا اینکه کدهای خطای ۵۰۲/۵۰۳/۵۰۴ را بازمی‌گرداند."

با این وجود، حمله از یک دستگاه تنها با اتصال ۴۰ مگابیت بر ثانیه، برای داون کردن یک سایت دموی دیگر که بر روی سروری با قدرت پردازش بالا و حافظه بالا قرار داشت، کافی نبود.

اما این بدان معنا نیست، که وب‌سایت‌های وردپرسی‌ای که در سرورهای با قدرت پردازش بالا اجرا می‌شوند از این آسیب‌پذیری در امان هستند، چرا که حمله در لایه کاربرد به پهنای باند کمتر و تعداد پکت‌های کمتری برای دستیابی به هدف (داون کردن سایت) نیاز دارد. بنابراین مهاجمان با پهنای باند بیشتر یا تعداد کمی بات نیز می‌توانند از این آسیب‌پذیری برای هدف قرار دادن سایت‌های وردپرسی بزرگ و محبوب استفاده کنند.

بدون پچ چگونه می‌توان خطر این حمله را کاهش داد؟

به منظور افشای کامل این قضیه، Tawily یک ویدئو ارائه نموده که نشان‌دهنده حمله‌ی انکار سرویس (DoS) وردپرس می‌باشد. در اینجا می‌توانید ویدئو را مشاهده نمایید.

با علم بر اینکه آسیب‌پذیری‌های DoS از حوزه برنامه باگ‌یابی وردپرس خارج هستند، Tawily به شکل مسئولانه‌ای این آسیب‌پذیری را از طریق یک پلتفرم HackerOne به تیم وردپرس گزارش داد.

با این وجود، شرکت از پذیرش این موضوع اجتناب کرده و می‌گوید "این نوع باگ باید به جای لایه کاربرد در سطح سرور یا سطح شبکه برطرف گردد، که این خارج از کنترل وردپرس است."

این آسیب‌پذیری بسیار جدی به نظر می‌رسد، چرا که نزدیک به ۲۹ درصد سایت‌ها را در برگرفته است، و بنابراین میلیون‌ها وب‌سایت را برای هکرها آسیب‌پذیر نموده و آن‌ها را از دسترس کاربران مجازشان خارج می‌کند.

محققان برای وب‌سایت‌هایی که از عهده‌ی حملات DDoS در لایه کاربرد برنمی‌آیند، نسخه‌ای از وردپرس را ارائه نموده‌اند که شامل راهکارهایی در مقابل این آسیب‌پذیریست.

Tawily می‌گوید: "من شخصاً به کاربران توصیه نمی‌کنم که CMS اصلاح شده را نصب کنند، حتی اگر از یک منبع قابل اعتماد دیگر غیر از منبع اصلی باشد."

این محقق همچنین یک bash script  ساده برای رفع  این مشکل منتشر نموده است، اما این زمانی جوابگو است که شما قبلاً وردپرس را نصب کرده باشید.

 

منبع: https://thehackernews.com/2018/02/wordpress-dos-exploit.html