Якщо ви отримали від мене лист із посиланням на цю сторінку, то це тому, що ваш сайт, вочевидь, використовує версію Creative Mail by Constant Contact (плагін WordPress для електронного маркетингу, призначений для WooCommerce, який лежить у ваших файлах за шляхом /wp-content/plugins/creative-mail-by-constant-contact/), яка потрапляє в діапазон, уражений відомою проблемою безпеки. Ця сторінка пояснює, у чому полягає проблема, які версії уражені, чому немає оновлення для встановлення, і як безпечно видалити або замінити плагін.

Проблема має ідентифікатор CVE-2026-3985: це вада SQL-ін’єкції без автентифікації, досяжна через обробку покинутих кошиків WooCommerce у плагіні. Вона стосується версії 1.6.5 і кожного випуску після неї, аж до останнього, який опублікував розробник, 1.6.9.

Найважливіший практичний факт на цій сторінці: виправленої версії, на яку можна оновитися, не існує. Плагін видалили з каталогу WordPress.org 14 травня 2026 року, і виправлення так і не вийшло. Останній випуск, 1.6.9, досі містить цю проблему, і новішого не буде. Тож це не звичайне повідомлення на кшталт «натисніть оновити». Засіб виправлення: вимкнути й видалити плагін, а якщо ви ним користуєтеся, замінити його підтримуваною альтернативою. Решта цієї сторінки пояснює, як перевірити свою версію і зробити це безпечно.

Є один момент, який справді заспокоює. На відміну від деяких проблем, про які я пишу, ця вада має справжню нижню межу: вона з’явилася у версії 1.6.5. Версії 1.6.4 і старіші нею не уражені: вразливого коду там просто немає. Якщо ваша інсталяція має версію 1.6.4 або старішу, ця конкретна проблема вас не стосується. (Утім, плагін більше ніхто не підтримує, і це вже самостійна причина рано чи пізно спланувати перехід на щось інше.)

Це вада плагіна, а не ядра WordPress. Повністю оновлений WordPress не захистить вас, якщо сам плагін Creative Mail має уражену версію.

Чи справжнє це повідомлення?

Так. Це добросовісне повідомлення в межах відповідального розкриття від незалежного дослідника безпеки. Я не прошу у вас грошей, паролів чи доступу до сайту і не намагався до нього проникнути, щось йому надіслати чи щось експлуатувати.

Я лише переглянув загальнодоступні файли, які ваш сайт віддає кожному відвідувачеві (так само, як публічною є ваша головна сторінка), і занотував номер версії, який публікує плагін. Я свідомо не надсилав нічого в обробник оформлення замовлення чи згоди плагіна ні на вашому сайті, ні на будь-якому іншому, і ця перевірка жодним чином не торкається ваших даних, вашої панелі адміністрування чи будь-якої закритої частини сайту (докладніше нижче, у розділі Що я робив і чого не робив).

Якщо ви хочете перевірити, хто я, контактні дані наведено внизу цієї сторінки та на сторінці Про мене.

Чому це важливо

Creative Mail з’єднує магазин на WooCommerce із Constant Contact для електронного маркетингу, і частина його роботи полягає в тому, щоб запам’ятовувати кошики, які покупці почали заповнювати, але не завершили, щоб магазин міг звернутися до них згодом. Саме в цій обробці покинутих кошиків і криється проблема.

В уражених версіях, коли плагін фіксує оформлення замовлення, один із запитів до бази даних формує свій текст, вставляючи в нього значення, яке походить від відвідувача, без використання підготовленого запиту. Це значення не екранується для використання в SQL. Наслідок такий, що відвідувач, який не увійшов у систему, може змінити цей запит і прочитати дані з бази даних вашого сайту.

Варто бути точним щодо того, чим ця проблема є, а чим ні. Вона дає змогу зловмиснику прочитати дані з бази даних. Це серйозно вже само по собі, бо база даних WordPress зберігає такі речі, як адреси електронної пошти користувачів і хеші паролів, а в магазині вона може містити записи клієнтів. Але сама по собі ця проблема не є ні віддаленим виконанням коду, ні захопленням сайту, ні способом, яким зловмисник міг би видати собі обліковий запис адміністратора. Вона вужча за проблеми повної компрометації, про які я пишу в інших випадках, і я волію чесно окреслити масштаб, а не залишити у вас враження страшніше, ніж підтверджують факти.

Я описую це на тому рівні, який потрібен власникові сайту, щоб діяти, і не далі. Я не публікую подробиць, які дозволили б комусь відтворити проблему, і прошу вас не пробувати це ні на власному сайті, ні на чужому. Перевірка версії вашого плагіна, як описано нижче, дає все, що потрібно, щоб вирішити, що робити.

Якщо в моєму листі йшлося про цю проблему, це означає, що версія, про яку повідомляє ваш сайт, є 1.6.5 або новішою. Я не перевіряв, чи можна експлуатувати саме ваш сайт; усе, що я спостерігав, це версія.

Чи стосується це мене?

Усе зводиться до одного питання: яку версію Creative Mail ви використовуєте?

У панелі адміністрування WordPress (головне джерело):

  1. Увійдіть до консолі WordPress (зазвичай вашдомен.ua/wp-admin).
  2. Перейдіть до Плагіни, потім Встановлені плагіни.
  3. Знайдіть Creative Mail by Constant Contact, запис, тека якого називається creative-mail-by-constant-contact, і подивіться версію, показану під назвою.

З публічного маніфесту (без входу): відкрийте у браузері вашдомен.ua/wp-content/plugins/creative-mail-by-constant-contact/readme.txt. Рядок Stable tag: ближче до початку файлу і є версією, про яку повідомляє ваша інсталяція; саме цей публічний файл я й читав. Для цього плагіна я перевірив, що він точно відповідає фактично випущеному коду, тож це надійна перевірка.

Одна перевірка для цього плагіна не працює, тож, будь ласка, не покладайтеся на неї. Якщо ви звикли читати версію плагіна з числа ?ver=, доданого до скрипту чи таблиці стилів у вихідному коді сторінки, тут це введе вас в оману. У цього плагіна такі числа є позначками часу файлів (довгі значення на кшталт ?ver=1723603844), а не версією плагіна, і порівнювати їх із 1.6.5 не має сенсу. Користуйтеся екраном адміністрування або файлом readme.txt.

Далі застосуйте це правило:

  • 1.6.5 або новіша (аж до 1.6.9, останнього випуску): уражена. Оскільки виправлення немає, потрібно видалити або замінити плагін (див. нижче).
  • 1.6.4 або старіша: ця проблема вас не стосується. Вада з’явилася у версії 1.6.5, тож старіші інсталяції її не містять. (Плагін у будь-якому разі більше не підтримується, тож варто спланувати перехід на щось інше.)

Що робити: видалити або замінити

Оскільки плагін відкликали без виправлення, оновлення для встановлення немає: ваша консоль WordPress його не запропонує, а версія, яку ви маєте, є останньою, яка коли-небудь існуватиме. Спосіб закрити цю проблему: припинити використовувати плагін. Спершу зробіть резервну копію, а тоді видаліть його:

  1. Зробіть резервну копію сайту (файлів і бази даних), перш ніж щось змінювати. Більшість хостинг-провайдерів пропонують резервне копіювання в один клік, або скористайтеся плагіном резервного копіювання для WordPress.
  2. У панелі адміністрування WordPress перейдіть до Плагіни, потім Встановлені плагіни, знайдіть Creative Mail by Constant Contact і натисніть Деактивувати. Деактивація зупиняє виконання вразливого коду.
  3. Після деактивації натисніть Видалити, щоб прибрати файли плагіна. Якщо вам зручніше в командному рядку, WP-CLI робить те саме: wp plugin deactivate creative-mail-by-constant-contact, а тоді wp plugin delete creative-mail-by-constant-contact.
  4. Переконайтеся, що плагіна більше немає: запис не повинен з’являтися на екрані «Плагіни», а вашдомен.ua/wp-content/plugins/creative-mail-by-constant-contact/readme.txt більше не повинен завантажуватися.

Якщо ви використовували Creative Mail для електронного маркетингу свого магазину, вам знадобиться заміна, щоб не втратити цю можливість. В офіційному каталозі є декілька підтримуваних плагінів для електронної пошти й розсилок WooCommerce; оберіть той, який наразі підтримується й отримує оновлення. Сама послуга Constant Contact цією проблемою не зачеплена: проблема в плагіні WordPress, який відкликали, а не в поштовому сервісі, тож якщо ви користуєтеся Constant Contact напряму, метою є актуальна, підтримувана інтеграція.

Поки ви там, варто пересвідчитися, що ядро WordPress та інші ваші плагіни оновлені, а також видалити будь-які інші плагіни, якими ви більше не користуєтеся.

Після видалення

Видалення плагіна надалі зупиняє будь-яке читання з вашої бази даних через цю проблему. Воно не може «скасувати прочитання» того, що вже могло бути прочитане, поки плагін працював на ураженій версії. Я не маю жодної інформації про те, чи сталося це на вашому сайті, і не дивився; більшість сайтів в ураженому діапазоні, ймовірно, ніколи не чіпали. Але оскільки я не можу сказати це напевно, невелика обережність є доречною, пропорційно до того, що зберігає ваша база даних:

  • У магазині розумними кроками будуть зміна паролів адміністраторами, а також усвідомлення того, що контактні дані клієнтів у вашій базі даних могли бути розкриті. WordPress і WooCommerce зберігають паролі у вигляді хешів, а не відкритим текстом, але хеші слабких паролів можна зламати офлайн, тож нові паролі знімають цю тривогу.
  • Якщо якісь плагіни на вашому сайті зберігають власні облікові дані чи API-ключі, їх також варто вважати вартими заміни.
  • Перегенерування секретних ключів і «солей» WordPress у wp-config.php (нові значення в один клік доступні в офіційному генераторі секретних ключів) одноразово завершує сеанси всіх користувачів і робить недійсними будь-які викрадені токени сеансу.

Щоб пояснити рамки прямо: це запобіжний захід, а не твердження про те, що ваші дані викрали. Це повідомлення ґрунтується на номері версії, а не на якихось доказах атаки.

Що я робив і чого не робив

Щоб бути цілком прозорим щодо перевірки, на якій ґрунтується мій лист: я читав лише публічні файли, які ваш сайт і так віддає кожному відвідувачеві, а саме публічний файл readme.txt плагіна та вашу головну сторінку. Я не звертався ні до панелі адміністрування WordPress, ні до бази даних, ні до будь-якої закритої частини сайту.

Зокрема, я ніколи не надсилав нічого в обробник оформлення замовлення чи згоди плагіна, ні на вашому сайті, ні деінде. Нічого не було надіслано, збережено, протестовано чи проексплуатовано. Тут це важить більше, ніж на більшості таких сторінок, бо саме ця обробка є тим, чого стосується проблема, тож «я цього не торкався» і є всією різницею між розкриттям і вторгненням.

Я також свідомо не публікую подробиць, які допомогли б комусь скористатися цією проблемою. Опис вище зупиняється на рівні, потрібному власникові сайту, і я не даю посилань на код підтвердження концепції.

Це спостереження за версією: ваш сайт повідомляє версію 1.6.5 або новішу. Сайт у цьому діапазоні вже може бути захищений іншими засобами, наприклад брандмауером вебзастосунків. Це повідомлення не є твердженням про те, що ваш сайт можна було експлуатувати на момент моєї перевірки.

У мене немає вебмайстра / я не даю ради

Якщо сайтом опікуєтеся не ви, перешліть, будь ласка, цю сторінку тому, хто ним опікується (вашому розробнику, агенції або хостинг-провайдеру). Кроки вище він упізнає одразу.

Якщо ви ведете сайт самі й застрягли, я радо підкажу напрямок безкоштовно. Напишіть за контактами нижче.

Контакти

Evan Harris, дослідник безпеки

Я звертаюся з такими питаннями винятково для того, щоб допомогти операторам захистити свої сайти. Якщо ви волієте більше не отримувати від мене листів, просто скажіть, і я це врахую.

Джерела

Офіційні бюлетені та відстеження

Розробник / плагін