Разработчики Pods выпустили экстренные обновления для шести главных версий плагина

Разработчики Pods, бесплатного контентного WordPress-фреймворка с более чем 100 000 активных установок, выпустили экстренные исправления для шести главных версий после того, как Wordfence обнаружила критическую уязвимость, приводящую к повышению привилегий без аутентификации.

Уязвимость, получившая рейтинг CVSS 9.8, позволяет неавторизованным злоумышленникам повысить свои привилегии до уровня администратора, включая перезапись паролей любых пользователей, что приводит к полному захвату сайта.

Компания Wordfence опубликовала свое предупреждение 21 августа, указав на исследователя Нхиена Фама, который сообщил об уязвимости через программу баг-баунти 10 августа и получил вознаграждение в размере 3 900 долларов.

Уязвимость связана с тем, как Pods обрабатывал метабоксы, когда в WordPress появился блочный редактор. Разработчики Pods добавили путь совместимости, чтобы их функция обработки ошибок не прерывала выполнение страниц во время запросов к метабоксам блочного редактора (в противном случае ломался весь процесс редактирования). Вместо этого функция просто регистрировала ошибку, а выполнение продолжалось.

Однако, как поясняется в уведомлении Wordfence, этот путь совместимости может быть активирован любым запросом, а не только загрузкой легитимных метабоксов. Злоумышленник может использовать этот путь для обхода всех проверок безопасности в обработчике плагина — включая верификацию при входе, проверку учетных данных и ограничения доступа — и получить доступ к функциям административного уровня, в том числе к функции, которая может перезаписать пароль любого пользователя без аутентификации.

Ведущий разработчик Pods Скотт Кингсли Кларк, старший инженер-разработчик программного обеспечения в GoDaddy, рассказал, что само исправление было простым, однако масштаб работ по устранению проблемы оказался гораздо шире.

«Наше исправление было довольно простым — нужно было просто всегда возвращать результат, — сказал Кингсли Кларк. — Но путь к тому, чтобы это исправление дошло до пользователей, в итоге оказался на порядок длиннее».

В настоящее время Кингсли Кларк является единственным основным разработчиком Pods. Плагин доступен бесплатно на WordPress.org, и за работу над ним он не получает денег — он улучшает плагин в свободное время, а доходы имеет только от платных дополнений.

Поэтому, когда 12 августа специалисты Wordfence связались с ним и прислали свой отчет, он сразу же написал своему руководителю, что ему необходимо взять отпуск до конца недели.

«Когда я получил отчет, я очень сильно забеспокоился, — сказал Кингсли Кларк. — Причиной моего беспокойства была не столько сама уязвимость, ибо я точно знал, что нужно делать. Меня больше волновало, какие еще проблемы могут скрываться в кодовой базе».

Он поручил ИИ-агенту просканировать код на наличие других уязвимостей, одновременно проверяя код своими силами. Агент обнаружил дополнительные проблемы, и Кингсли Кларк также их исправил. Затем началось обратное портирование исправлений: необходимо было обновить шесть версий Pods, каждую из которых требовалось протестировать с различными сочетаниями версий PHP и WordPress.

«Мне нужно было убедиться, что исправление не приведет к проблемам с совместимостью PHP или фатальным ошибкам, чтобы после автоматического обновления пользователи не столкнулись с неработающими сайтами, — сказал он. — На тщательное тестирование всего, что требовалось проверить для каждого отдельного релиза, ушло огромное количество времени».

В обновлении безопасности Pods указано 16 исправлений уязвимостей для основного релиза 3.3.9.1, а также по 13 исправлений в каждой из пяти бэкпорт-версий вплоть до Pods 2.8.

Из-за серьезности уязвимостей Кингсли Кларк понимал, что ему необходимо как можно скорее выпустить обновление для затронутых сайтов. Однако он столкнулся с требованиями инициативы WordPress.org под названием Protect the Shire — обязательной задержкой публикации обновлений плагинов и тем. Эта инициатива уже вызвала недовольство разработчиков и исследователей безопасности, поскольку обновления с исправлениями уязвимостей удерживаются столько же времени, сколько и обычные апдейты.

По его словам, он пытался понять, как обойти действующую на тот момент обязательную шестичасовую задержку, предусмотренную этой инициативой, когда заметил в личном кабинете уведомление от Wordfence с предложением связаться с командой WordPress Plugins Team.

Он связался с командой Plugins Team 13 августа, но признался, что недостаточно внимательно прочитал их первоначальный ответ. Ему сообщили, что нужно согласовать выпуск обновления, однако 14 августа, примерно за час до того, как он собирался выпустить исправления, он снова написал команде, указав на серьезность уязвимостей. Но в те выходные проходил WordCamp US, и многие участники Plugins Team были в дороге. В результате некоторые релизы Pods с исправлениями все же задержались из-за обязательной блокировки.

«В конечном счете все релизы вышли, и после этого я просто вырубил компьютер на ночь, — сказал он. — Я просто отключился. Я был совершенно без сил».

По его словам, этот опыт многому его научил.

«Я понял, что для серьезного выгорания мне достаточно было бы всего нескольких таких критических [уязвимостей], — сказал он. — Я понял, что нехватка ресурсов у Pods — ничто по сравнению с нехваткой ресурсов у большинства разработчиков плагинов».

Пользователям Pods рекомендуется обновиться до последней версии, если их сайт еще не обновился автоматически.

Дмитрий/ автор статьи
CCO, Senior SEM/PPC Specialist, WordPress-энтузиаст, переводчик с английского и немецкого. Серый кардинал русскоязычного WP-комьюнити.
Блог про WordPress
Добавить комментарий

Получать новые комментарии по электронной почте.