کمیته رکن چهارم – یک آسیبپذیری منع سرویس ساده در سطح برنامه در بستر سامانهی مدیریت محتوا (CMS) کشف شده است که به هر کسی این امکان را میدهد که حتی با یک دستگاه، و بدون نیاز به پهنای باند زیادی که حملات منع سرویس توزیعشدهی سطح شبکه به آن نیاز دارند، وبگاههای وردپرس را از کار بیندازد.
از آنجا که این شرکت از وصله کردن این آسیبپذیری خودداری کرده است، این آسیبپذیری (CVE-۲۰۱۸-۶۳۸۹) وصله نشده است و تقریباً تمام نسخههای وردپرس که در ۹ سال گذشته منتشر شدهاند، از جمله آخرین نسخهی پایدار وردپرس (نسخهی ۴٫۹٫۲) را تحت تاثیر قرار میدهد.
پژوهشگر امنیتی رژیم صهیونیستی، باراک تاویلی کشف کرد که این آسیبپذیری به روش «load-scripts.php» که یک اسکریپت داخلی در CMS وردپرس است، درخواستهای کاربر را پردازش میکند.
در واقع پروندهی load-scripts.php تنها برای کاربران مدیر طراحی شده است تا به عملکرد وبگاه کمک کند و با ادغام چند پروندهی جاوااسکریپت در یک درخواست، صفحه را سریعتر بارگذاری کند.
با این حال، برای اینکه پروندهی load-scripts.php قبل از ورود در صفحهی ورود مدیر (wp-login.php) کار کند، نویسندگان وردپرس هیچ احراز هویتی را به کار نگرفتهاند، و در نهایت این ویژگی برای هر کسی قابل دسترسی است.
بسته به افزونهها و مؤلفههایی که نصب کردهاید، پروندهی load-scripts.php به صورت انتخابی پروندههای جاوا اسکریپت مورد نیاز را با ارسال نام آنها به پارامتر «load» فراخوانی میکند.
هنگامی که وبگاه بارگذاری میشود، پروندهی load-scripts.php تلاش میکند تا هر پروندهی جاوااسکریپتی را که نام آن در آدرس اینترنتی وجود دارد، پیدا کند، محتوای آنها را به یک پروندهی واحد اضافه کند و سپس آن را به مرورگر وب کاربر ارسال کند.
حملات منع سرویس وردپرس چگونه انجام میشود؟
بنا به گفتهی این پژوهشگر، هر فردی به راحتی میتواند پروندهی load-scripts.php را مجبور کند تا همهی پروندههای جاوااسکریپت را با یک بار ارسال نام آنها در آدرس اینترنتی، فراخوانی کند، و با مصرف بالای پردازنده و حافظهی کارگزار سرعت وبگاه مورد هدف را به طور مخفیانه کاهش دهد.
تاویلی میگوید: «یک فهرست مشخصی ($wp_scripts) وجود دارد که کاربران میتوانند آن را به عنوان بخشی از پارامتر «load» درخواست کنند. اگر مقدار درخواست شده وجود داشته باشد، کارگزار یک عمل خواندن I/O را برای یک مسیر مشخصی که مربوط به مقدار دریافتشده از کاربر است، انجام میدهد.»
اگرچه یک درخواست به تنهایی برای از کار انداختن تمام وبگاه کافی نیست، تاویلی از یک اسکریپت پایتون اثبات مفهومی به نام doser.py استفاده میکند که تعداد زیادی درخواست را همزمان به همان آدرس اینترنتی ارسال میکند و تلاش میکند تا حد ممکن از منابع پردازندهی کارگزار مورد هدف استفاده کند و آن را از کار بیندازد.
تاویلی میگوید: «لازم است که بار دیگر یادآوری کنیم که پروندهی load-scripts.php به هیچ گونه احراز هویتی نیاز ندارد، یک کاربر ناشناس هم میتواند این کار را انجام دهد. پس از دریافت ۵۰۰ درخواست، کارگزار هیچ پاسخی نمیدهد، و یا خطاهای کد وضعیت ۵۰۲، ۵۰۳، ۵۰۴ را باز میگرداند.»
با این حال، حملهای که تنها با اتصال ۴۰ مگابیت بر ثانیه از یک دستگاه انجام میشد، برای از کار انداختن وبگاه نسخهی نمایشی دیگری که در یک کارگزار اختصاصی با قدرت پردازشی و حافظهی بالا اجرا میشود، کافی نبود.
اما این بدان معنا نیست که این آسیبپذیری در برابر وبگاههای وردپرسی که در حال اجرا در یک کارگزار قدرتمند هستند، موثر نیست، زیرا حملات سطح برنامه به طور کلی به بستهها و پهنای باند کمتری نیاز دارند تا به همان هدف، یعنی از کار انداختن یک وبگاه برسند.
بنابراین مهاجمان با پهنای باند بیشتر یا چند ربات میتوانند از این آسیبپذیری بهرهبرداری کنند تا وبگاههای وردپرس بزرگ و محبوب را هدف قرار دهند.
وصلهای برای این آسیبپذیری موجود نیست، اما راهنمای مقابله با آن وجود دارد
با اینکه تاویلی میدانست آسیبپذیریهای منع سرویس خارج از محدودهی برنامهی پاداش در ازای اشکال وردپرس هستند، اما این آسیبپذیری منع سرویس را از طریق بستر HackerOne به گروه وردپرس گزارش داد.
با این حال، این شرکت از تایید این مسأله خودداری کرد و گفت که باید به جای سطح برنامه در سطح کارگزار یا سطح شبکه با این نوع اشکال مقابله کرد، که این خارج از کنترل وردپرس است.
به نظر میرسد این آسیبپذیری جدی باشد زیرا وردپرس نزدیک به ۲۹ درصد وب را تشکیل میدهد، و میلیونها وبگاه را در برابر نفوذگران آسیبپذیر میکند و آنها را از دسترس کاربران قانونی خارج میکند.
این پژوهشگر برای وبگاههایی که نمیتوانند از خدمات حفاظت منع سرویس توزیعشده در برابر حملات لایهی برنامه، استفاده کنند، نسخهای از وردپرس را ارائه داده است که شامل راهحلهای مقابله با این آسیبپذیری است.
با این حال، تاویلی به کاربران توصیه نمیکند که CMS اصلاحشده را نصب کنند، حتی اگر از یک منبع قابل اعتمادی غیر از نویسنده اصلی آن باشد.
علاوه بر این، این پژوهشگر یک اسکریپت bash ساده نیز منتشر کرده است که این مسأله را برطرف میکند، حتی در صورتی که قبلاً وردپرس را نصب کرده باشید.
منبع : news.asis.io