Уязвимость в плагине для WordPress, предназначенном для работы с членством, раскрывает конфиденциальные данные Stripe.

Недавно была обнаружена проблема с безопасностью в плагине StellarWP Membership Plugin для WordPress. Эта проблема позволяет злоумышленникам получать доступ к конфиденциальной информации об оплатах Stripe без необходимости входа в систему. Это считается серьезной уязвимостью с оценкой серьезности 8.2 из 10.

Купил акции на все деньги, а они упали? А Илон Маск снова написал твит? Знакомо. У нас тут клуб тех, кто пытается понять этот цирк и не сойти с ума.

Купить на падении (нет)

Плагин Подписки от StellarWP

Уязвим для неаутентифицированных злоумышленников

Согласно Wordfence, злоумышленникам не нужен логин или какой-либо аккаунт WordPress, чтобы воспользоваться этой уязвимостью. Не имеет значения, какой уровень доступа имеет пользователь – любой может спровоцировать проблему, что делает её особенно рискованной и простой в активации.

В чём заключается уязвимость

Проблема вызвана недостатком мер безопасности при обработке платежей Stripe. Плагин не обеспечил должной защиты конфиденциальной информации Stripe SetupIntent.

Во время оформления заказа Stripe SetupIntent безопасно собирает и сохраняет платежную информацию клиента для последующих покупок. Он включает в себя уникальный ‘client_secret’, который передается в рамках процесса оформления заказа или создания учетной записи.

В плагине WordPress Membership Plugin – Restrict Content (версии 3.2.16 и более ранние) существует уязвимость в системе безопасности, которая может привести к несанкционированному доступу. В частности, функция ‘rcp_stripe_create_setup_intent_for_saved_card’ не должным образом проверяет разрешения пользователя, что потенциально позволяет кому-либо выполнять действия, которые ему не разрешены.

Плагин также не проверяет учетные данные безопасности, предоставленные пользователем, что позволяет злоумышленникам потенциально украсть конфиденциальные данные Stripe, связанные с членством, даже без входа в систему.

API Setup Intents от Stripe позволяет собирать платёжную информацию клиента для последующего использования, не совершая оплату немедленно. Каждый SetupIntent генерирует уникальный ‘client_secret’, который, согласно Stripe, следует хранить в секрете и делиться им только с клиентом – избегайте его хранения или логирования.

Это как документация Stripe объясняет назначение API Setup Intents:

API Setup Intents позволяет собирать платёжную информацию клиента сейчас для использования в будущих транзакциях. Это похоже на инициирование платежа, но не обрабатывает какие-либо сборы немедленно.

Наша цель — безопасно сохранить и подготовить платёжную информацию для бесперебойных будущих транзакций, гарантируя её корректную работу во всех ситуациях. Например, когда клиент добавляет кредитную карту, нам может потребоваться проверить его личность или подтвердить данные карты с его банком. Stripe отслеживает этот процесс и обновляет объект SetupIntent с последним статусом.

Согласно документации Stripe, значения client_secret используются в браузере пользователя для завершения платежей. Эти значения должны отправляться безопасно с вашего сервера в браузер и никогда не храниться, регистрироваться или передаваться кому-либо, кроме покупателя, совершающего покупку.

Секретный ключ клиента – это ключ, используемый для безопасного подключения конкретного клиента к вашему приложению. Он используется на стороне пользователя для установления безопасного соединения.

Ваш секретный ключ клиента позволяет клиентам получать доступ к своей информации через ваш веб-сайт или приложение. Защищайте его тщательно – никогда не сохраняйте, не записывайте в журналы и не делитесь им ни с кем, кроме клиента, которому он принадлежит. Всегда используйте безопасное (HTTPS) соединение на любой странице, где используется секретный ключ клиента.

Уязвимость в плагине позволяла раскрыть конфиденциальные данные Stripe, в частности значения client_secret для SetupIntents.

Это означало, что конфиденциальная платёжная информация Stripe для участников могла быть видна людям, которым не следовало бы иметь к ней доступ.

Затронутые версии

Эта уязвимость затрагивает все версии плагина до 3.2.16. Wordfence оценил серьезность на 8.2 из 10, поскольку она раскрывает конфиденциальные данные и не требует входа в систему для эксплуатации.

Этот балл означает, что у плагина есть серьёзный недостаток в системе безопасности, которым хакеры могут легко воспользоваться через интернет, без необходимости использования имени пользователя или пароля. Крайне важно быстро обновить плагин, особенно если ваш веб-сайт использует его для управления членством или защиты эксклюзивного контента.

Доступность патча

Доступно новое обновление для плагина. Версия 3.2.17 устраняет проблему безопасности, связанную с платежами Stripe. Это обновление добавляет важные проверки безопасности для предотвращения несанкционированного доступа к конфиденциальной платежной информации. В частности, оно защищает значения client_secret, используемые для SetupIntents, и использует временный токен безопасности (называемый nonce) для обеспечения того, чтобы все действия были легитимно запрошены пользователем.

Внесены обновления для повышения безопасности. В частности, добавлены проверки для предотвращения несанкционированных действий при добавлении платёжных методов Stripe, а также улучшена безопасность обработки данных некоторыми шорткодами ([restrict] и [register_form]) за счёт более качественной фильтрации и очистки вводимых данных.

Что должны сделать владельцы сайтов

Сайты, использующие плагин Membership Plugin – Restrict Content, должны обновиться до версии 3.2.17 или новее.

Если вы не обновите плагин, злоумышленники могут получить доступ к конфиденциальным данным Stripe без необходимости входа в систему.

Смотрите также

2026-01-16 13:40