Специалисты в лице разработчика Дэвида Лоу (David Law) и сотрудников компаний White Fir Design и Wordfence рассказали о результатах расследования, которое недавно проводилось в отношении популярного плагина Display Widgets. На момент удаления из репозитория WordPress Plugins этот плагин был установлен более 200 000 раз. В плагине был обнаружен бэкдор, причем ранее Display Widgets уже попадал в поле зрения специалистов и его банили трижды.
Оригинальный плагин Display Widgets, как нетрудно понять из названия, позволял администраторам WordPress-сайтов управлять размещением виджетов на своих ресурсах. Создала плагин Стефани Уеллс (Stephanie Wells), сотрудница Strategy11, но вскоре ее внимание сместилось в сторону premium-версии, а обычная версия стала опенсорсной и была продана новому владельцу, которой обещал развивать Display Widgets и дальше, а также учитывать мнение немалого комьюнити, сложившегося вокруг проекта.
Первое удаление
Новый владелец Display Widgets выпустил первое обновление в июне 2017 года, и это была версия 2.6.0. Прямо в день релиза Дэвид Лоу, SEO-консультант и разработчик конкурирующего решения Display Widgets SEO Plus, отправил команде WordPress.org письмо, в котором предупредил, что Display Widgets 2.6.0 нарушает правила WordPress и загружает со стороннего сервера более 38 Мб кода. По словам Лоу, этот код содержал трекинговые функции, которые «протоколировали» трафик на сайтах, где был установлен плагин. Display Widgets начал собирать данные об IP-адресах пользователей, user-agent, домене и страницах, которые просматривали посетители. Все эти данные передавались на сторонний сервер.
В результате поданной Лоу жалобы Display Widgets был удален из репозитория WordPress Plugins уже на следующий день.
Второе удаление
Однако новый владелец плагина и не думал останавливаться. Спустя неделю после описанных событий, 1 июля 2017 года, он выпустил новую версию Display Widgets (2.6.1) с интегрированным файлом geolocation.php на 38 Мб. В файле, разумеется, содержались все вышеописанные шпионские функции, так что более никаких нарушений правил не происходило, ведь скачивание не производилось с удаленного, стороннего сервера.
Лоу, который продолжал присматривать за поведением разработчика Display Widgets, вновь обратился в поддержку WordPress.org. Теперь он сообщил, что плагин содержит вредоносный бэкдор, который позволяет его разработчику получать удаленный доступ к сайтам, где установлен Display Widgets, создавать там новые страницы и посты. К тому же плагин продолжал шпионить за действиями пользователей.
День спустя Display Widgets был удален из репозитория второй раз за неделю.
Третье удаление
Тем не менее, покупателя Display Widgets не остановило даже это. Так, согласно журналу изменений, уже 6 июля 2017 года в официальный репозиторий была добавлена очередная новая версия, 2.6.2.
В течение нескольких дней казалось, что плагин прекратил всякую вредоносную акивность. Однако 23 июля, по видимому решив, что выждал уже достаточно, разработчик Display Widgets приступил к действиям. На этот раз странное поведение программы заметил обычный пользователь, который подал сразу две жалобы в поддержку WordPress (1 и 2). Согласно сообщениям, «плагин создавал необнаружимые страницы со спамерским ссылками», а также никуда не исчез файл geolocation.php, то есть слежка за пользователями продолжилась.
Проведенное расследование показало, что Display Widgets действительно создавал на зараженных сайтах новые страницы, где размещались ссылки на другие ресурсы. Эти страницы и сообщения были невидимы со стороны бэкэнда, из панели администратора. Более того, плагин скрывал эти страницы от всех авторизованных пользователей (в основном от операторов сайта), показывая их только простым посетителям.
Для создания таких рекламных страниц Display Widgets обращался к удаленному домену, откуда получал контент, который нужно было разместить в очередном посте. Специалисты Wordfence пишут, что им удалось отследить некоторые домены, с которыми связывался плагин, и все они располагались на одном сервере, по адресу 52.173.202.113.
- stopspam.io зарегистрирован 2 июля 2017;
- w-p.io зарегистрирован 11 июля 2017;
- geoip.io зарегистрирован 24 июля 2017;
- maxmind.io зарегистрирован 24 июля 2017.
Через день после подачи жалоб, команда безопасности WordPress удалила странный плагин с WordPress.org в третий раз.
Четвертое удаление
Оператор Display Widgets попытался снова 2 сентября 2017 года, загрузив в репозиторий версию 2.6.3. Разумеется, эта версия так же оказалась вредоносной, и уже 7 сентября 2017 года очередной пользователь пожаловался на поведение плагина и сообщил, что на его сайте появились непонятные страницы с множеством ссылок.
Но на этот раз операторы плагина попытались сгладить инцидент и начали отвечать на жалобы пользователя (1 и 2). С официальной учетной записи Display Widgets отвечали два человека, которые попытались заявить, что происходящее – не их вина, и все дело в файле geolocation.php, работа которого плохо сочетается с некоторыми другими плагинами, что открывает сайты пользователей для хакерских атак. Представители Display Widgets заверили, что последнее обновление устранило проблему, якобы нужно лишь очистить кэш и произвести пару простых операций.
Как бы то ни было, Display Widgets был удален с WordPress.org в четвертый и, наверное, последний раз 8 сентября 2017 года. На этот раз, похоже, что бан будет перманентным. Судя по всему, версия 2.7.0 была выпущена самими разработчиками WordPress, так как ее код идентичен старой версии 2.0.5 – последней чистой версии перед продажей.
Специалисты Wordfence сообщают, что им удалось отследить покупателей Display Widgets, ответственных за атаки. По словам исследователей, это были представители сервиса WP Devs. Согласно официальному сайту компании, она скупает старые и заброшенные разработчиками плагины, в настоящее время владея сразу 34.
Впрочем, исследователи пишут, что представители WP Devs отрицают свою причастность к атакам. В компании заверили, что плагин был выкуплен ими у Стефани Уеллс за $15 000, а позже перепродан некой калифорнийской компании за $20 000. Более того, во время сделки было подписано соглашение о неразглашении, из-за чего сообщить больше информации в WP Devs не смогли.
После этих заявлений аналитики Wordfence продолжили расследование и вышли на некоего Мейсона Сойза (Mason Soiza), который, по их мнению, и занимался внедрением в Display Widgets вредоносного кода, а также ответственен за взлом другого популярного плагина, 404 to 301. Исследователи отмечают, что злоумышленник не просто случайно скопировал откуда-то вредоносный код, не понимая, что делает. Вредоносные версии плагина содержали даже багфикс, то есть разработчик отлично знал, чем занимается.
Так как в связи со случившимся безопасность WordPress.org уже подверглась критике, глава Wordfence Марк Маундер (Mark Maunder) попросил сообщество отнестись к происшедшему с пониманием:
«Пожалуйста, помните, что большинство модераторов форумов и репозитория плагинов – это добровольцы, — пишет Маундер. — Прошу, не судите их строго. В целом они делают чертовски хорошую работу и поддерживают стабильность огромного репозитория и форумов поддержки одной из самых популярных CMS в мире».