Было опубликовано сообщение об уязвимости, обнаруженной в плагине членства от StellarWP, которая раскрывает конфиденциальные данные о настройке платежей Stripe на сайтах WordPress с помощью плагина. Уязвимость позволяет неаутентифицированным злоумышленникам совершать атаки и имеет рейтинг 8,2 (высокий).
Содержание
Плагин членства от StellarWP
Плагин членства — ограничение контента от StellarWP используется сайтами WordPress для управления платным и частным контентом. Он позволяет владельцам сайтов ограничивать доступ к страницам, сообщениям или другим ресурсам, чтобы их могли просматривать только вошедшие в систему пользователи или платящие участники, а также управлять тем, что могут видеть неплатящие посетители сайта. Плагин обычно развертывается на сайтах, основанных на членстве и подписке.
Уязвим для неаутентифицированных злоумышленников
В сообщении Wordfence говорится, что уязвимость может быть использована злоумышленниками, не прошедшими проверку подлинности, а это означает, что для запуска атаки не требуется вход в систему или учетная запись пользователя WordPress. Роли разрешений пользователей не влияют на то, может ли проблема возникнуть, и именно это делает данную конкретную уязвимость более опасной, поскольку ее легче вызвать.
Что такое уязвимость
Проблема связана с отсутствием проверок безопасности, связанных с обработкой платежей Stripe. В частности, плагину не удалось должным образом защитить данные Stripe SetupIntent.
Stripe SetupIntent используется во время оформления заказа для сбора и сохранения способа оплаты клиента для использования в будущем. Каждый SetupIntent включает значение client_secret, которое предназначено для совместного использования во время процесса оформления заказа или настройки учетной записи.
Официальный Рекомендации по Wordfence объясняет:
«Плагин членства — плагин ограничения контента для WordPress уязвим к отсутствию аутентификации во всех версиях до 3.2.16 включительно через функцию «rcp_stripe_create_setup_intent_for_saved_card» из-за отсутствия проверки возможностей.
Кроме того, плагин не проверяет ключ, контролируемый пользователем, что позволяет неаутентифицированным злоумышленникам раскрыть значения Stripe SetupIntent client_secret для любого членства».
Согласно официальной документации Stripe, API Setup Intents используется для настройки способа оплаты будущих платежей без создания немедленного платежа. SetupIntent включает client_secret. В документации Stripe указано, что значения client_secret не должны храниться, регистрироваться или предоставляться кому-либо, кроме предполагаемого клиента.
Вот как это делает Stripe документация объясняет, какова цель API установки намерений:
«Используйте API настройки намерений, чтобы настроить способ оплаты для будущих платежей. Это похоже на платеж, но комиссия не взимается.
Цель состоит в том, чтобы сохранить платежные данные и оптимизировать их для будущих платежей, то есть метод оплаты будет правильно настроен для любого сценария. Например, при настройке карты может потребоваться аутентификация клиента или проверка действительности карты в банке клиента. Stripe обновляет объект SetupIntent на протяжении всего этого процесса».
В документации Stripe также объясняется, что значения client_secret используются на стороне клиента для выполнения действий, связанных с платежами, и предназначены для безопасной передачи с сервера в браузер. Stripe заявляет, что эти значения не должны храниться, регистрироваться или предоставляться кому-либо, кроме соответствующего клиента.
Вот как это делает Stripe документация объясняет значение client_secret:
«client_secret
Секрет клиента этого сеанса клиента. Используется на клиенте для настройки безопасного доступа к данному клиенту.Секрет клиента можно использовать для предоставления доступа к клиенту из вашего интерфейса. Его не следует хранить, регистрировать или предоставлять кому-либо, кроме соответствующего клиента. Убедитесь, что у вас включен TLS на любой странице, содержащей секрет клиента».
Поскольку плагин не обеспечил соответствующие меры защиты, значения Stripe SetupIntent client_secret могут быть раскрыты.
В реальной жизни это означает, что данные настройки платежей Stripe, связанные с членством, были доступны за пределами предполагаемого объема.
Затронутые версии
Уязвимость затрагивает все версии плагина до версии 3.2.16 включительно. Wordfence присвоил проблеме оценку CVSS 8,2, что отражает конфиденциальность открытых данных и тот факт, что для возникновения проблемы не требуется аутентификация.
Оценка в этом диапазоне указывает на уязвимость высокой степени серьезности, которую можно использовать удаленно без специального доступа, что повышает важность своевременных обновлений для сайтов, использующих плагин для управления платным членством или ограниченным контентом.
Доступность патчей
Плагин был обновлен патчем и теперь доступен. Проблема исправлена в версии плагина 3.2.17. Обновление добавляет отсутствующие проверки nonce и разрешений, связанные с обработкой платежей Stripe, устраняя условия, которые позволяли раскрывать значения SetupIntent client_secret. Nonce — это временный токен безопасности, который гарантирует, что определенное действие на веб-сайте WordPress было намеренно запрошено пользователем, а не злоумышленником.
Официальный плагин членства журнал изменений ответственно раскрывает обновления:
«3.2.17
Безопасность: добавлены проверки nonce и разрешений для добавления способов оплаты Stripe.
3.2.16
Безопасность: улучшены возможности побега и дезинфекции [restrict] и [register_form] Атрибуты короткого кода».
Что следует делать владельцам сайтов
Сайты, использующие плагин членства – ограничение контента, должны обновиться до версии 3.2.17 или новее.
Если вы не обновите плагин, данные Stripe SetupIntent client_secret останутся открытыми для неаутентифицированных злоумышленников.
Рекомендованное изображение: Shutterstock/file404

