На WordPress есть старая и очень противная схема — вам подсовывают «обновление» плагина или темы, а вместе с ним в сайт залетает малварь, бэкдор или просто мусорный код. И самое неприятное тут в том, что все выглядит почти нормально. Кнопка скачать есть. Версия вроде свежая. Название знакомое. Ну обновление же, чо такого?
А потом сайт начинает редиректить людей на казино, хостинг шлет жалобу, в админке появляются левые юзеры, а в поиске страницы улетают вниз. Знакомо? У малого бизнеса это случается чаще, чем кажется. Особенно у тех, кто держит интернет-магазин на WooCommerce и обновляет все «по-быстрому между делом».
Давайте на пальцах разберем, как это работает, где чаще всего ловят такую подставу и что делать, чтобы не влететь на чистку сайта и простой продаж.
Как вообще выглядит фейковое обновление
Не всегда это прям очевидный вирусный файл с названием virus.php. Наоборот — обычно все маскируют аккуратно.
Самые частые варианты такие:
- вам присылают письмо «ваш плагин устарел, срочно обновите» и дают ссылку на ZIP-файл;
- на сайте разработчика-клона лежит «nulled» или «premium free download» версия темы;
- фрилансер ставит «активированную» платную тему без лицензии и уверяет, что «все ок, так все делают»;
- в админке появляется навязчивый баннер от левого плагина с предложением обновиться не через WordPress, а вручную;
- вам в Telegram или WhatsApp кидают архив «новая версия, исправлены баги».
Вот в этот момент и начинается самое интересное. Вместо обновления вы ставите код, который открывает доступ злоумышленнику. Иногда сразу. Иногда через неделю. Иногда только по ночам или только для гостей с Google, чтобы вы подольше ничего не замечали.
Кстати, если вам кажется, что маленький сайт никому не нужен — нет, это не так. Точнее, нужен не лично ваш бизнес, а любой живой WordPress с дырой. Об этом хорошо написано здесь: как хакеры вообще находят ваш сайт.
Почему на это вообще ведутся
Потому что схема бьет в больные места владельца сайта.
Во-первых, все боятся устаревших плагинов. И правильно боятся. Во-вторых, многие хотят сэкономить на лицензиях. Тема за 59 долларов кажется дорогой, а «та же самая бесплатно» — очень соблазнительно. В-третьих, не все отличают официальный источник от левого зеркала. Особенно если сайт выглядит прилично.
И да — тут нет ничего стыдного. Если вы не сидите каждый день внутри WordPress, легко пропустить подвох. Видел такие случаи даже у нормальных интернет-магазинов с оборотом, а не только у визиток на 5 страниц.
Где риск самый высокий
Честно говоря, больше всего проблем я вижу в четырех местах.
- Пиратские premium-темы и плагины. Это просто лотерея. Иногда архив чистый, иногда внутри тихий бэкдор.
- Ручные обновления «от знакомого разработчика». Особенно когда никто не помнит, откуда вообще взялся файл.
- Сайты без регулярного обслуживания. Когда 11 месяцев никто туда не заглядывал, а потом решили «все сразу апдейтнуть».
- Магазины с кучей дополнений. У WooCommerce часто стоит 20-40 плагинов, и за каждым надо следить.
Отдельная боль — заброшенные плагины. Они не обязательно фейковые, но именно через них часто и пролезает атака, а потом уже владелец ставит «исправленную» версию из сомнительного источника. Если тема знакомая, почитайте потом и это: заброшенные плагины — тихая дыра в безопасности.
Как отличить нормальное обновление от подделки
Тут нет магической кнопки, но есть очень земные правила. И они реально работают.
Обновляйте только из понятного источника. Для бесплатных плагинов — репозиторий WordPress. Для платных — официальный сайт разработчика или ваш аккаунт у него. Не форум, не складчина, не «архив от прошлого подрядчика».
Смотрите на домен. Не codecanyon-update.example-download.net, а реальный сайт автора. Одна лишняя буква — и все.
Не ставьте ZIP из писем. Вообще. Даже если письмо выглядит прилично. Даже если там логотип. Даже если «срочно». Нормальные обновления не требуют такой суеты.
Проверяйте changelog и дату релиза. Если вам говорят, что вышла версия 6.8.2, а на сайте разработчика последняя 6.7.9 — ну все, до свидания.
Смотрите, не просит ли плагин странних прав. Например, легкий слайдер вдруг хочет FTP-доступ, правку wp-config.php или создание админа. Это уже очень мутно.
Делайте бэкап до апдейта. Не после. До. И лучше с проверкой восстановления, а не «ну там вроде копии где-то лежат».
Что поставить на сайт, чтобы такие штуки ловить раньше
Вот тут как раз не надо городить космический SOC за сотни евро в месяц. Для маленького бизнеса это перебор. Но базовая защита должна быть.
Минимум, который я бы советовал:
- сканер известных уязвимостей плагинов и тем;
- мониторинг изменений файлов;
- защита входа в админку;
- двухфакторка для админов;
- нормальный файрвол;
- регулярные бэкапы.
Например, полезно заранее проверять, нет ли у установленного плагина публичной дыры. Для этого есть проверка уязвимостей — платная фишка, но для магазина или сайта с заявками она обычно стоит сильно дешевле, чем один нормальный инцидент. По времени настройка — минут 10-15.
И еще вещь, которую многие откладывают «на потом» — двухфакторная аутентификация. Она бесплатная, а включается быстро. Буквально за 5 минут. Если пароль утек, 2FA часто спасает сайт от полного захвата.
А если вы уже поставили подозрительное обновление?
Тогда не надо делать вид что «наверное, обойдется». Иногда обойдется. Но чаще нет.
Что делать сразу:
- сделайте копию сайта как есть — файлы и базу, чтобы было что анализировать;
- переведите сайт в техрежим, если это магазин и есть явные странности;
- смените пароли админки, хостинга, FTP, базы данных;
- проверьте список пользователей — нет ли новых админов;
- сравните файлы темы и плагинов с официальными версиями;
- просканируйте сайт на подозрительный код и скрытые файлы;
- посмотрите логи — когда именно начались изменения.
Если на сайте уже редиректы, спамные страницы, странные cron-задачи или восстановление «чистой» версии не помогает — скорее всего, внутри сидит не только зараженный плагин, а еще и закрепление. То есть бэкдор в другом месте. В functions.php, в uploads, в mu-plugins, в базе. Где угодно, короче.
В такой ситуации лучше не ковырять сайт вслепую. Можно потратить весь день и все равно пропустить одну маленькую закладку, из-за которой взлом вернется через неделю.
Сколько это стоит по времени и деньгам
Если делать все по уму заранее, расходы довольно вменяемые.
Проверить источник обновления — 2 минуты. Включить 2FA — 5 минут. Настроить базовый мониторинг и сканирование — ну час, если не спешить. Регулярное обслуживание сайта обычно дешевле, чем один день простоя магазина с рекламой и заказами в сезон.
А вот после заражения математика уже грустная. Чистка может занять от пары часов до целого дня, иногда больше. Плюс проверка SEO-спама, восстановление репутации домена, замена паролей, перепроверка всех плагинов. И это я еще не считаю потерянные заявки. Вот это уже обидно, да.
Простое правило, которое реально спасает
Никогда не ставьте на сайт то, происхождение чего вы не можете нормально объяснить.
Если файл пришел «откуда-то», если лицензия «как бы есть», если разработчик «пропал, но вот его сборка», если надо срочно обновиться по ссылке из письма — тормозите. Прямо останавливайтесь. Лучше потратить 10 минут на проверку, чем потом разгребать малварь и писать клиентам, почему сайт лежал полдня.
WordPress сам по себе не дырявый ужас, как иногда говорят. Но он очень доверчив к тому, что вы в него загружаете. А значит, главный фильтр — это вы.
И да, если коротко. Обновления ставить надо. Но только настоящие. Все остальное — не экономия, а билет в проблемы.