Перейти до вмісту

Що таке XML-RPC у WordPress і чому його варто вимкнути?

XML-RPC є частиною WordPress уже багато років; спочатку його створили, щоб полегшити віддалену взаємодію з сайтом. Однак сьогодні він більше відомий як часта вразливість безпеки. У цій статті пояснюється, що таке XML-RPC, чому сайти WordPress його використовують і чому варто серйозно розглянути його вимкнення.

Розуміння XML-RPC

XML-RPC означає XML Remote Procedure Call. Це протокол, який дозволяє програмним застосункам взаємодіяти віддалено, надсилаючи запити у форматі XML через HTTP. WordPress включив XML-RPC, щоб забезпечити віддалену публікацію, керування сайтом та інтеграцію із зовнішніми застосунками.

Типові варіанти використання XML-RPC:

  • Віддалена публікація (додавання записів у блог із зовнішніх застосунків).
  • Pingback і trackback.
  • Підключення до Jetpack і мобільних застосунків для WordPress.

Чому XML-RPC став проблемою

Незважаючи на корисність, XML-RPC перетворився на популярну ціль для хакерів через уразливість до окремих типів атак:

1. Атаки перебором

Хакери часто використовують метод multicall у XML-RPC, щоб спробувати кілька входів в одному HTTP-запиті, суттєво прискорюючи атаки перебором. На відміну від стандартної сторінки входу, цей метод дозволяє перевірити тисячі комбінацій паролів за дуже короткий час, не запускаючи більшість базових захисних механізмів.

2. DDoS та атаки з підсиленням

Зловмисники можуть використовувати функціонал pingback у XML-RPC, перетворюючи невинні сайти на мимовільних учасників розподілених атак на відмову в обслуговуванні (DDoS). Один зловмисник може надсилати запити на сотні сайтів WordPress, і кожен із них заливає ціль трафіком. Цей ефект підсилення робить атаку значно складнішою для зупинки. За даними Wordfence, такі зловживання документуються щонайменше з 2014 року й досі активні.

3. Спам і зловживання pingback

Pingback і trackback, хоч і створені для сповіщення авторів про пов’язаний контент, стали каналом для спам-коментарів і небажаного трафіку. Автоматизовані боти регулярно сканують відкриті ендпойнти xmlrpc.php, щоб масштабно експлуатувати цю функцію.

Ознаки зловживання XML-RPC на вашому сайті

Якщо ви помічаєте будь-що з переліченого, ваш сайт уже може зазнавати атаки через цей ендпойнт:

  • Надмірна кількість спроб входу в логах безпеки.
  • Високе використання CPU і сплески трафіку.
  • Часті спам-коментарі через pingback.
  • Зниження швидкості реакції сайту.
  • Повторювані запити до xmlrpc.php у логах доступу сервера.

Ви можете переглянути логи сервера напряму або скористатися плагіном безпеки з вбудованим переглядачем логів, щоб швидко помітити ці шаблони. Чим раніше ви виявите зловживання, тим меншої шкоди воно завдасть продуктивності й репутації сайту.

Переваги вимкнення XML-RPC

Вимкнення XML-RPC підвищує безпеку сайту й дає негайні переваги:

  • Менша вразливість: усувається основний вектор атак перебором і DDoS.
  • Краща продуктивність: зменшується зайве використання ресурсів, що покращує швидкість і стабільність сайту.
  • Менше спаму: суттєво зменшується кількість небажаних спам-коментарів і сповіщень pingback.
  • Менша поверхня атаки: менше відкритих ендпойнтів означає менше можливостей для зловмисників закріпитися на сервері.

Дослідники безпеки WordPress із Patchstack послідовно рекомендують вимикати цю функцію на сайтах, які нею активно не користуються, у межах ширшої стратегії зміцнення захисту.

Як безпечно вимкнути XML-RPC у WordPress

Спосіб 1: за допомогою плагіна безпеки

Плагіни на кшталт BotBlocker мають вбудовані опції, щоб безпечно вимкнути XML-RPC одним кліком. Це рекомендований підхід для нетехнічних користувачів, оскільки не потребує редагування файлів ядра.

Спосіб 2: вимкнення через.htaccess

Додайте цей фрагмент коду у файл .htaccess у кореневій теці сайту:

# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
  order deny,allow
  deny from all
</Files>

Такий підхід працює на рівні сервера, блокуючи запити ще до того, як вони дійдуть до WordPress. Це один із найефективніших і найлегших способів захистити сайт.

Спосіб 3: через functions.php

Або вимкніть XML-RPC програмно, додавши до functions.php вашої теми:

add_filter('xmlrpc_enabled', '__return_false');

Майте на увазі, що цей метод фільтрує запити на рівні застосунку WordPress, тобто сервер усе одно отримує й обробляє кожен запит, перш ніж відхилити його. Для сайтів із високим трафіком метод через.htaccess зазвичай ефективніший.

Чи може вимкнення XML-RPC зламати мій сайт?

У більшості випадків вимкнення XML-RPC не впливає на функціональність сайту для звичайних користувачів. Однак якщо ви використовуєте Jetpack, мобільний застосунок WordPress чи сторонні інструменти для блогінгу, врахуйте:

  • Jetpack покладається на XML-RPC; повне вимкнення зламає його функціонал.
  • Якщо ви залежите від мобільних застосунків WordPress, залишайте XML-RPC вибірково ввімкненим через правила фаєрвола або спеціалізовані плагіни.

Рекомендований підхід: вибіркове вимкнення

Найкраща стратегія - часто саме вибіркове вимкнення:

  • Заблокувати XML-RPC для загального доступу.
  • Дозволити конкретні IP-адреси чи застосунки, яким ви довіряєте.

Так ви зберігаєте інтеграції, важливі для робочого процесу, і водночас закриваєте двері для ботів і невідомих джерел. Для більшості малих і середніх сайтів WordPress повне блокування цілком безпечне й дає очевидний виграш у безпеці без помітних недоліків. Для більших проєктів, які залежать від зовнішніх інструментів публікації, вибіркові правила дають правильний баланс між доступом і захистом.

Плагіни на кшталт BotBlocker Pro пропонують прості параметри налаштування для безпечного вибіркового керування доступом до XML-RPC.