Ключ подключения может работать годами, хотя вы уже забыли, в каком кабинете его создавали. 17-18 октября взломали TeamUpdraft - компанию, которая выпускает UpdraftPlus. Украденные ключи UpdraftCentral использовали для отправки команд на подключенные сайты. В том числе - для создания администраторов и установки вредоносных плагинов. А скоро изменения в WooCommerce подтолкнут владельцев магазинов заводить пароли приложений WordPress для AI-инструментов. Я бы проверил оба вида доступа прямо сейчас. Минут десять на это найдется.
Что умеет пароль приложения
Пароли приложений есть в WordPress с версии 5.6. Через них приложение, скрипт или интеграция подключается к REST API или XML-RPC. В обычную форму wp-login.php такой пароль не введешь. И запрос 2FA, который просят при обычном входе, тут не поможет - интеграция вообще не проходит через эту форму.
Каждый пароль привязан к конкретному пользователю WordPress и получает его права. Отдельной настройки «только чтение» для самого пароля нет. Если пароль приложения создан для администратора, он дает доступ в рамках прав администратора. WordPress хранит эти пароли в виде хешей, а сам пароль показывает лишь один раз - при создании. Потом посмотреть или отредактировать его нельзя. Можно только отозвать и выпустить новый.
Неудобный момент: общего списка по всему сайту нет. Придется открывать профили пользователей по одному. Доступ выдали на время проекта, проект закрыли, а подключение осталось. Такое сплошь и рядом, особенно если никто не отвечает за уборку старых доступов. Раз об интеграции давно не говорят, это еще не значит, что ее отключили.
Проверка за 10 минут
- Просмотрите пользователей. Откройте
Users > All Users. Ищите бывших сотрудников, агентства и фрилансеров. Удалите учетные записи, которым доступ больше не нужен. Если человеку все еще нужно что-то делать на сайте, понизьте роль. Начните с администраторов, потом проверьте остальных - инструменты могли подключать и они. - Откройте нужные профили. Для своего аккаунта зайдите в
Users > Profile. Для чужого - вUsers > All Usersи нажмите Edit. Прокрутите до Application Passwords. У каждой записи есть Name, Created, Last Used и Last IP. Там же кнопка Revoke и возможность отозвать сразу все пароли приложений. Last Used обновляется не чаще раза в 24 часа. Это ориентир по дню, а не точное время входа. - Отзовите непонятные пароли. Сверьте название с приложениями, которыми еще пользуетесь. Если не уверены, спросите у человека который настраивал интеграцию: удалите пароль наугад - и обмен заказами может встать. Точно знаете, что подключение больше не нужно? Отзывайте. Смена обычного пароля пользователя не удаляет его пароли приложений, так что сброс пароля эту проверку не заменит.
- Если аккаунтов много, возьмите WP-CLI. Команда
wp user application-password list <user>покажет записи пользователя. Командаwp user application-password delete <user> --allудалит их все. Вторую не запускайте ради экономии пары минут, если не готовы к тому, что интеграции этого пользователя перестанут работать. - Проверьте ключи UpdraftCentral. Откройте
Settings > UpdraftPlus Backups > Advanced Tools > UpdraftCentralи удалите подключения, которыми не пользуетесь. UpdraftPlus 1.26.13 (бесплатная версия) и 2.26.13 (Premium) отзывают старые ключи, затронутые взломом. Подробности есть в нашем разборе истории с ключами UpdraftCentral. - Посмотрите другие панели удаленного управления. Проверьте плагин Worker от ManageWP, Child от MainWP, Jetpack и любые подключения для бэкапов или управления сайтом. Больше не пользуетесь внешней панелью? Сначала отключите или удалите сайт там, затем деактивируйте и удалите плагин на своем сайте. Не узнаете панель или аккаунт - убирайте подключение.
- Разберите ключи магазина. В
WooCommerce > Settings > Advanced > REST APIпосмотрите описание, пользователя, права и Last access каждого ключа. Отзовите ключи, назначение которых не можете объяснить, и те, что давно не использовались. Ключ работает с правами пользователя WordPress, для которого его создали. Удалите этого пользователя - ключ тоже перестанет работать. - Проверьте доступы вне WordPress. Логин старого подрядчика мог исчезнуть из
Users, а доступ к хостингу, SFTP или другой панели - остаться. Проверьте их отдельно, заодно с паролями приложений и ключами WooCommerce этого человека. Перед следующим проектом пригодится инструкция о том, как дать разработчику доступ и сохранить контроль. - Разберитесь с подключениями, которые оставляете. Для каждого инструмента заведите отдельный пароль приложения. Если возможно - и отдельного пользователя с минимальной подходящей ролью. Поставьте напоминание раз в квартал пересматривать список. Когда сотрудник уходит или инструмент больше не нужен, отзывайте пароль и если нужно, создавайте новый. Иначе полезное подключение так и будет висеть, пока все не забудут, кто его настроил.
AI-подключению тоже нужны ограниченные права
21 октября команда WooCommerce объявила: в будущей версии 11.3 уберут эндпоинт /wp-json/woocommerce/mcp и вход MCP-клиентов по ключу REST API. Вместо этого MCP-клиентам понадобятся плагин WordPress MCP Adapter и пароль приложения WordPress. На момент написания текста версия 11.3 еще не вышла. Из-за одного анонса переделывать рабочее подключение сегодня не нужно.
Когда дойдет до настройки, не давайте AI-инструменту свой основной аккаунт администратора просто по привычке. Попробуйте отдельную учетную запись Editor или Shop manager и проверьте, каких прав ему хватает. В названии пароля укажите инструмент и месяц создания - потом сами себе спасибо скажете. Один инструмент - один пароль. Тогда можно отключить одно подключение, не задевая остальные. У самого пароля ограничений по правам нет: границу задает роль пользователя.
Если пароли приложений вам не нужны
Функцию можно выключить через add_filter( 'wp_is_application_passwords_available', '__return_false' ); в небольшом плагине или mu-плагине. В functions.php темы я бы этот код не клал: смените тему - и настройка пропадет. Для точечной настройки по пользователям есть фильтр wp_is_application_passwords_available_for_user.
После отключения раздел исчезнет из профилей, а существующие пароли приложений перестанут проходить авторизацию. Сначала проверьте Last Used и выясните, какие сервисы от них зависят. В бесплатных настройках усиления защиты Bearmor Security есть переключатель Disable Application Passwords в разделе Hardening > Access hardening. Он только выключает функцию. Аудит за вас переключатель не проведет - записи все равно надо просмотреть вручную.
Если ключ кажется чужим
Незнакомый ключ, который недавно использовали, - повод разобраться сразу. Не успокаивайте себя тем, что обычный пароль аккаунта уже сменили: на пароли приложений это не влияет. Я бы действовал так:
- Отозвать пароль приложения или ключ подключения, происхождение которого непонятно.
- Проверить в
Usersнезнакомых администраторов, а вPlugins- плагины, которые вы не устанавливали. - Если есть подозрение, что на сайт вошли посторонние, обратиться за очисткой взломанного WordPress-сайта, а не просто удалить странную запись и забыть.
Сегодня начните со своего профиля: прокрутите до Application Passwords, прочитайте названия и даты Last Used. Не можете сказать, к чему подключен один из паролей? Вот это и выясните первым делом.