WordPress XML-RPC issues

XML-RPC e протокол ползван от WordPress за комуникация със други компоненти. Освен XML-RPC може да се срещне и като XMLRPC въпреки, че със тирето е правилния начин за изписването му.  XML-RPC протокола позволяващ на WP да си комуникира със други инструменти, сайтове и потребители и се използва за pingback, trackback, достъп от мобилни или десктоп устройства и много други. Повече за WordPress XML-RPC API можете да намерите във WordPress Codex.

Disabling WordPress XML-RPC to be used DDOS attacks
Пример за използването на WordPress XML-RPC върху съществуващ реален сайт от ботове

Какъв е проблема във XML-RPC?

До версия 3.5 протокола е изключен и трябваше да се активира изрично за да се достъпва от външни услуги. От версия 3.5 този програмен интерфейс е активиран и няма възможност за изключването му във базовата версия без използване на плъгин. Както и се очакваше беше въпрос на време да се случи нещо непредвидено и непланирано. На 10 Март Securi обявиха на техния сайт че са забелязали атака на над 162 хиляди WordPress инсталации свързани във botnet мрежа. За съжаление атакуващия е останал във сянка и е използвал метод за усилване на атаката като са използвани напълно реални WordPress сайтове към сайта-жертва. Всичко става със използването на XML-RPC интерфейса като се симулира pingback.ping към жертвата. За да се избегне влиянието на кеширащите плъгини се прибавят случайни параметри към линка, това извиква страницата на жертвата и генерира трафик.

Какво мога да направя за да защитя XML-RPC?

За да се защити сайта участие във подобни атаки може да се използват няколко подхода:

  • изтриване на xmlrpc.php
  • защитаване на xmlrpc.php със парола
  • забрана на pingback метода

Разбира се всички методи си имат плюсове и минуси. Уви изтриването или защитаването на XML-RPC има неблагоприятен ефект – мобилните приложения няма да могат повече да функционират, JetPack също и много други плъгини. Друг недостатък е че при последвщите обновления горния файл пак ще се появи, което прави “защитата” леко безмислена. Затова възможно най-доброто решение е да се забрани pingback метода. За тази цел може да се използват тези плъгини Remove XMLRPC Pingback PingDisable Pingbacks или дори Disable XML-RPC като крайна мярка.

Важно допълнение относно WordPress и останалите

Ако си мислите, че “тази глупост няма как да ми повлияе” уви сте във грешка. ВСЕКИ WordPress може да се използва за нуждите на тази атака. По никакъв начин не може да се установи участието на блога освен ако не се преглеждат ръчно файловете access.log на web server-a. От личен опит – малцина правят тази операция защото е трудоемка и времеемка, отделно изисква доста добри познания по web, WordPress и дори и unix. За сметка на това всички пасиви са за сметка на участника – трупа се паразитен трафикк, генерира процесорно време и се правят обръщения към базата. Проблема е дори малко по-голям, защото XML-RPC не може да се кешира и обясненията “ама аз имам кеширащ плъгин” и този път не минават. Интересно ми е какво ли ще направят този път хостинг доставчиците. Когато беше wp-login атаката голяма част от тях направо сложиха http password на файловете, а някой дори преименуваха файловете при което поддръжката им беше на тръни няколко дена от недоволни клиенти. Този път обаче подобни действия няма да може да се изпълнят защото проблема е вътре във самия WordPress и не може да се реши без плъгин.

1 comments
cloxy
cloxy

Решението е да не използваме WordPress изобщо. Просто не си струва времето постоянно да му се запушват дупките. Да не говорим и колко е бавен.