مقدمه: دری که همیشه باز بوده و نمیدانستید
در هر نصب پیشفرض وردپرس، یک فایل به نام xmlrpc.php وجود دارد که میتواند به یک دروازه ورود برای هکرها تبدیل شود. بسیاری از صاحبان سایت حتی نمیدانند این فایل وجود دارد — اما هکرها کاملاً از آن آگاه هستند.
XML-RPC یک پروتکل ارتباطی است که به برنامههای خارجی اجازه میدهد از راه دور با وردپرس شما تعامل کنند. سالها پیش این قابلیت مفید بود، اما امروز به یکی از بزرگترین تهدیدات امنیتی وردپرس تبدیل شده است.
XML-RPC چیست و چرا در وردپرس وجود دارد؟
XML-RPC (XML Remote Procedure Call) یک پروتکل استاندارد است که امکان فراخوانی توابع روی یک سرور از راه دور را فراهم میکند. وردپرس این پروتکل را برای اهداف مشخصی اضافه کرده است:
- ارسال نوشته از طریق اپلیکیشنهای موبایل وردپرس
- ارتباط با سرویسهایی مثل Jetpack
- مدیریت سایت از طریق کلاینتهای خارجی
- پینگبک و بازتاب (Trackback/Pingback)
در نسخههای قدیمی وردپرس، XML-RPC تنها روش ارتباط از راه دور بود. اما امروز REST API جایگزین بهتری ارائه میدهد و XML-RPC برای اکثر سایتها دیگر ضروری نیست.
تهدیدات امنیتی XML-RPC
۱. حملات Brute Force چندگانه
مشکل اصلی XML-RPC این است که یک فراخوانی واحد میتواند هزاران ترکیب نام کاربری و رمز عبور را امتحان کند. متد system.multicall به هکر اجازه میدهد در یک درخواست HTTP، صدها احراز هویت مختلف را امتحان کند. این یعنی محدودیت “سه بار تلاش ناموفق” که روی wp-login.php تنظیم کردهاید، روی XML-RPC اصلاً اعمال نمیشود!
۲. حملات DDoS از طریق Pingback
قابلیت Pingback در XML-RPC به وردپرس اجازه میدهد به سایتهای دیگر اطلاع دهد که به آنها لینک دادهاید. هکرها از این قابلیت سوءاستفاده میکنند: هزاران سایت وردپرسی آلوده را مجبور میکنند که همزمان درخواست Pingback به یک هدف خاص بفرستند — نتیجه یک حمله DDoS مؤثر است.
۳. اجرای کد از راه دور (Remote Code Execution)
اگر XML-RPC با آسیبپذیری در پلاگینها ترکیب شود، در برخی موارد میتواند به اجرای کد مخرب از راه دور منجر شود.
۴. مصرف منابع سرور
حتی اگر حملات موفق نشوند، درخواستهای انبوه به xmlrpc.php میتوانند منابع CPU و RAM سرور را به شدت مصرف کنند و سایت را کند یا غیرقابل دسترس کنند.
آیا باید XML-RPC را غیرفعال کنید؟
پاسخ برای اکثر سایتها بله است — اگر از موارد زیر استفاده نمیکنید:
- اپلیکیشن موبایل رسمی وردپرس برای مدیریت سایت
- افزونه Jetpack (که به XML-RPC نیاز دارد)
- سرویسهای شخص ثالث که صریحاً XML-RPC میخواهند
اگر از هیچکدام از اینها استفاده نمیکنید، XML-RPC را غیرفعال کنید.
روشهای غیرفعال کردن XML-RPC
روش ۱: از طریق افزونه
سادهترین روش، نصب افزونه “Disable XML-RPC” است. این افزونه با یک کلیک XML-RPC را غیرفعال میکند.
روش ۲: از طریق htaccess
میتوانید دسترسی به فایل xmlrpc.php را در فایل .htaccess مسدود کنید تا قبل از لود شدن PHP، درخواستها رد شوند — این روش از نظر مصرف منابع کارآمدتر است.
روش ۳: مسدودسازی در سطح سرور (بهترین روش)
بهترین روش این است که هاست شما دسترسی به xmlrpc.php را در سطح سرور وب (Apache/Nginx/LiteSpeed) مسدود کند. این یعنی درخواستهای مخرب هرگز به PHP و وردپرس نمیرسند و منابع سرور مصرف نمیشود.
نقش هاست در مدیریت XML-RPC
یک هاست حرفهای وردپرس میتواند:
- دسترسی به xmlrpc.php را به صورت پیشفرض محدود کند
- با Imunify360 حملات از طریق XML-RPC را شناسایی و مسدود کند
- Rate Limiting برای xmlrpc.php اعمال کند
- Pingback های مخرب را در سطح فایروال فیلتر کند
جمعبندی
XML-RPC در وردپرس یک تهدید پنهان واقعی است که اکثر صاحبان سایت از آن بیخبرند. برای اکثر سایتها غیرفعال کردن آن توصیه میشود — و بهترین راه این است که این کار در سطح سرور انجام شود، نه فقط با افزونه.
در هاست وردپرس میهن هاستینگ، سرورهای ما با Imunify360 و WAF پیشرفته مجهز هستند که حملات از طریق XML-RPC را شناسایی و مسدود میکنند. امنیت سایت شما از پایه تضمین شده است.
