Уведомление о безопасности Wallet System for WooCommerce
Если Вы получили от меня письмо со ссылкой на эту страницу, то потому, что Ваш сайт,
по всей видимости, использует уязвимую версию Wallet System for WooCommerce (плагин
WordPress wallet-system-for-woocommerce от WP Swings). На этой странице объясняется,
почему это важно и как это исправить.
Данное уведомление касается уязвимости CVE-2026-42654, уязвимости высокой степени серьёзности (CVSS 7.1) в механизме учётных записей и восстановления пароля плагина, которая может позволить неавторизованному запросу получить доступ к учётной записи клиента. Она затрагивает все выпуски до 2.7.6 и устранена в версии 2.7.6. Если Вы используете затронутую версию, обновите Wallet System for WooCommerce до 2.7.6 или новее (рекомендуется последний выпуск, 2.7.8).
Несколько слов о срочности, поскольку здесь она отличается от других уведомлений, которые я отправлял: это уязвимость доступа к учётным записям, а не захват сервера или полных прав администратора, и нет никаких признаков того, что она эксплуатируется. Эта страница является предупредительным уведомлением, а не отчётом об инциденте. Обновление закрывает проблему, и никакие экстренные меры не подразумеваются.
Это уязвимость плагина, а не ядра WordPress или WooCommerce. Полностью актуальные WordPress и WooCommerce не защищают Вас, если сам плагин Wallet System for WooCommerce находится на затронутой версии.
Является ли это сообщение подлинным?
Да. Это добросовестное уведомление в рамках ответственного раскрытия информации от независимого исследователя безопасности. Я не прошу у Вас денег, паролей или доступа к Вашему сайту и не пытался проникнуть в него, что-либо загрузить или что-либо эксплуатировать.
Всё, что я сделал, это просмотрел публично доступные файлы, которые Ваш сайт предоставляет
каждому посетителю (точно так же, как публична Ваша главная страница), и отметил номер
версии, который плагин Wallet System for WooCommerce публикует в своём публичном файле
README.txt. Уязвимой конечной точки я специально не касался, и ничто в этой проверке
не затрагивает Ваши данные, Вашу административную панель или какую-либо частную часть
Вашего сайта (подробнее в разделе Что я делал и чего не
делал ниже).
Если Вы хотите убедиться в том, кто я, ознакомьтесь с контактными данными внизу этой страницы и на странице Обо мне.
Почему это важно
Wallet System for WooCommerce представляет собой дополнение для WooCommerce (около 2 000 активных установок), которое позволяет магазину предложить своим клиентам цифровой кошелёк: клиенты хранят баланс, пополняют его и оплачивают им покупки при оформлении заказа. В затронутых версиях привилегированные действия с кошельком в механизме учётных записей и восстановления пароля плагина были защищены общим токеном безопасности, который плагин выдавал каждому посетителю, вместо настоящей проверки прав, привязанной к тому, кто выполняет запрос. Этот класс ошибок называется обходом аутентификации через альтернативный путь или канал (CWE-288): обычный путь входа в систему проверяет личность корректно, но побочный путь принимает общий токен, как будто тот подтверждает авторизацию.
Практический эффект в том, что запрос, поступающий по этому побочному пути, который доступен любому зарегистрированному клиенту (а магазин с клиентским кошельком почти всегда допускает открытую регистрацию), мог бы действовать как авторизованный пользователь и получить доступ к учётной записи клиента.
Уязвимость получила оценку 7,1 из 10 (высокая степень серьёзности). Чтобы правильно оценить эту цифру: это проблема доступа к учётным записям, она сама по себе не передаёт злоумышленнику Ваш сервер или учётную запись администратора, и нет никаких признаков активной эксплуатации (её нет в каталоге известных эксплуатируемых уязвимостей CISA (Known Exploited Vulnerabilities), и мне не известно ни об одном отчёте об эксплуатации). Если в моём письме упоминалась эта проблема, это означает, что версия, о которой сообщает Ваш сайт, попадает в затронутый диапазон. Я не проверял, уязвим ли Ваш конкретный сайт, лишь то, что он сообщает о затронутой версии.
Хорошая новость: обновление до исправленной версии закрывает брешь, а само обновление несложное.
Как проверить свою версию
Вам не обязательно верить мне на слово относительно того, какую версию Вы используете.
Из публичного манифеста (вход в систему не требуется): откройте в браузере
yourdomain.com/wp-content/plugins/wallet-system-for-woocommerce/README.txt. Обратите
внимание, что этот плагин поставляет свой файл readme как README.txt (в верхнем
регистре), в отличие от многих плагинов, использующих readme.txt в нижнем регистре.
Строка Stable tag: вверху содержит версию, о которой сообщает Ваша установка, и это
тот же публичный файл, который прочитал я.
Из административной панели WordPress (если у Вас есть доступ):
- Войдите в панель управления WordPress (обычно по адресу
yourdomain.com/wp-admin). - Перейдите в Plugins затем Installed Plugins.
- Найдите Wallet System for WooCommerce и запишите версию, указанную под его названием.
Затем примените следующее правило и учтите, что версии сравниваются численно, а не по алфавиту:
- Любая версия ниже 2.7.6: затронута, обновитесь сейчас. Каждый более ранний выпуск содержит эту уязвимость; безопасной более старой версии не существует.
- 2.7.6 или новее, включая 2.7.7 и 2.7.8: уже исправлены.
- Не дайте себя ввести в заблуждение текстовым порядком:
2.5.11является более поздним выпуском, чем2.5.9, поскольку 11 больше, чем 9. Сравнивайте каждое число по очереди, вместо того чтобы читать версию как текст (оба этих примера ниже 2.7.6 и потому затронуты; суть в том, как читать номера версий в целом).
Как обновиться
Самый безопасный путь: обновление через сам WordPress, предварительно создав резервную копию:
- Создайте резервную копию Вашего сайта (файлы и база данных) перед внесением изменений. Большинство хостинг-провайдеров предлагают резервное копирование в один клик, или используйте плагин резервного копирования WordPress.
- В административной панели WordPress перейдите в Dashboard затем Updates, или Plugins затем Installed Plugins. Если обновление Wallet System for WooCommerce указано в списке, установите его отсюда.
- Если Вы предпочитаете командную строку, WP-CLI делает то же самое:
wp plugin update wallet-system-for-woocommerce. - Если обновление не появляется, Вы можете получить последний выпуск напрямую со страницы плагина в каталоге WordPress.org, Wallet System for WooCommerce, и обновить его через Plugins затем Add New Plugin затем Upload Plugin.
- После обновления подтвердите новый номер версии (2.7.6 или новее; рекомендуется последний выпуск 2.7.8), следуя приведённым выше шагам, и проверьте, что Ваш магазин и его функции кошелька работают нормально.
Раз уж Вы этим занялись, стоит убедиться, что ядро WordPress, WooCommerce и Ваши прочие плагины актуальны, поскольку тот же принцип применим ко всем из них.
После обновления
Обновление до 2.7.6 или новее закрывает проблему, и для большинства магазинов на этом задача завершена. Нет никаких признаков того, что эта уязвимость эксплуатировалась, поэтому никакие экстренные меры не подразумеваются: Вам не нужно считать свой сайт скомпрометированным, отключать его или принудительно сбрасывать пароли.
Поскольку уязвимость могла позволить неавторизованному запросу действовать с учётной записью клиента, разумна одна рутинная последующая проверка: просмотрите недавнюю активность учётных записей и кошельков на предмет чего-либо незнакомого, например корректировок баланса кошелька, которые Вы не делали, запросов на вывод или пополнение средств, которые Вы не узнаёте, или изменений в учётных записях клиентов, которые Ваши клиенты не запрашивали. Отнеситесь к этому как к обычной регулярной проверке, которую магазин проводит периодически, а не как к реагированию на инцидент. Если что-то всё же выглядит неправильно, применяются обычные шаги (сбросьте пароль этого клиента и разберите активность вместе с ним), и Вы можете обратиться ко мне с вопросами.
Что я делал и чего не делал
Чтобы быть полностью прозрачным относительно проверки, стоящей за моим письмом: я лишь
читал публичные файлы, которые Ваш сайт уже предоставляет каждому посетителю, а именно
публичный файл плагина README.txt и Вашу главную страницу. Я не получал доступ к
Вашей административной панели WordPress, Вашей базе данных или какой-либо частной части
сайта. В частности, я не касался уязвимой конечной точки и ничего не тестировал и не
эксплуатировал.
Это наблюдение на основе версии: Ваш сайт сообщает о версии в затронутом диапазоне. Сайт в этом диапазоне может уже быть защищён иными средствами (например, межсетевым экраном веб-приложений или бэкпортированным исправлением), поэтому данное уведомление не является утверждением, что Ваш сайт был уязвим в момент моей проверки.
У меня нет веб-мастера / я застрял
Если Вы не тот человек, который обслуживает сайт, пожалуйста, перешлите эту страницу тому, кто это делает (Вашему веб-разработчику, агентству или хостинг-провайдеру). Они быстро узнают приведённые выше шаги.
Если Вы обслуживаете сайт самостоятельно и застряли, я с радостью бесплатно помогу Вам найти верное направление. Свяжитесь со мной, используя контактные данные ниже.
Контакты
Evan Harris, исследователь безопасности
- Электронная почта: security@mail.mcpsec.dev
- X: @Evan__Harris
- GitHub: eharris128
- LinkedIn: Evan Harris
Я обращаюсь по подобным вопросам исключительно для того, чтобы помочь операторам защитить их сайты. Если Вы предпочитаете, чтобы с Вами больше не связывались, просто сообщите мне об этом, и я это уважу.
Источники
Официальные уведомления и отслеживание
Производитель / плагин