Якщо ви отримали від мене лист із посиланням на цю сторінку, то це тому, що ваш сайт, вочевидь, використовує версію Forminator Forms (плагін WordPress від WPMU DEV, який лежить у ваших файлах за шляхом /wp-content/plugins/forminator/), яка потрапляє в діапазон, уражений відомою проблемою безпеки. Ця сторінка пояснює, у чому полягає проблема, як визначити, чи стосується вона взагалі вашого сайту, як прочитати свою версію, не давши себе ввести в оману, і як оновитися.

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

  • Проблема досяжна лише для форми Forminator, яка містить поле завантаження файлу. Якщо жодна з ваших форм не дозволяє відвідувачам завантажувати файли, це вас не стосується, навіть на ураженій версії.
  • Зауважте: має значення сама наявність поля завантаження, а не те, як воно налаштоване. Обмеження поля конкретними типами (наприклад, зображеннями чи PDF) не закриває цю проблему, бо вада долає таке обмеження. Поза діапазоном ризику ви опиняєтеся лише тоді, коли жодна форма взагалі не має поля завантаження файлу.

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

Проблема має ідентифікатор CVE-2026-15748: це вада завантаження файлів без автентифікації в обробці форм плагіна. Вона стосується версій із 1.18.1 по 1.56.1 і виправлена у 1.56.2, випущеній 30 липня 2026 року. Якщо у вас працює уражена версія, оновіть Forminator Forms до 1.56.2 або новішої версії (на момент написання цього тексту чинним є випуск лінійки 1.57.x).

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

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

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

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

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

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

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

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

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

Звідси випливають дві речі, і вони тягнуть у протилежних напрямках. Перша: це має значення лише там, де форма справді має поле завантаження файлу; сайт, форми якого не приймають завантажень, через цю проблему недосяжний. Друга: там, де таке поле існує, не потрібен ні обліковий запис, ні пароль, ні сприяння будь-кого: форма відкрита для публіки за задумом. І ось частина, яку найлегше зрозуміти неправильно: обмеження цього поля лише “зображеннями” чи лише “PDF” вас не рятує, бо вада долає саму перевірку типу поля. Питання просто в тому, чи є на будь-якій із ваших форм поле завантаження файлу.

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

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

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

Це вирішують два питання, у такому порядку.

Перше: чи має якась форма поле завантаження файлу?

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

  1. Увійдіть до консолі WordPress, відкрийте пункт Forminator на бічній панелі, а тоді Forms.
  2. Відкрийте кожну форму й перевірте, чи є в ній поле Upload (тип поля Forminator для завантаження файлів).
  3. Якщо жодна з ваших форм не має поля завантаження, ця проблема не досягає вашого сайту, навіть на ураженій версії, хоча оновитися все одно варто в межах звичайного обслуговування.
  4. Якщо будь-яка форма має поле завантаження, проблема стосується вас, і вам слід оновитися якнайшвидше. Обмеження поля до типів файлів, які вам справді потрібні, є доброю практикою, але це не виправлення цієї проблеми: виправленням є саме оновлення.

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

Друге: яка версія у вас працює?

Вам не обов’язково вірити мені на слово. Для цього плагіна є декілька способів перевірки, які можуть ввести вас в оману, тож цю частину варто прочитати уважно.

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

  1. У консолі WordPress перейдіть до Плагіни, потім Встановлені плагіни.
  2. Знайдіть Forminator Forms, запис, тека якого називається forminator, і подивіться версію, показану під назвою.

З вихідного коду сторінки (без входу): перегляньте вихідний код сторінки на своєму сайті, яка показує форму Forminator, і пошукайте один із клієнтських файлів плагіна за такими точними шляхами:

/wp-content/plugins/forminator/build/front/front.multi.min.js?ver=...
/wp-content/plugins/forminator/assets/forminator-ui/js/forminator-form.min.js?ver=...
/wp-content/plugins/forminator/assets/forminator-ui/css/forminator-icons.min.css?ver=...

Число ?ver=, додане до цих файлів у теці forminator, є власною версією плагіна. Для цього плагіна воно точно відповідає випуску, тому я вважаю цю перевірку надійною. Зауважте, що ці файли з’являються лише на сторінці, яка справді показує форму Forminator, тож перевіряйте сторінку, на якій вона є (гола головна сторінка без форми часто нічого не показує).

Дві пастки, яких тут варто уникати. Обидві змушують наївне прочитання показати версію, яка не має нічого спільного з Forminator:

  • Вбудована бібліотека для номерів телефону. Forminator постачає копію сторонньої бібліотеки під назвою intlTelInput, яка має власний номер версії, 4.0.3. Залежно від вашої версії плагіна ця бібліотека завантажується файлом assets/css/intlTelInput.min.css або assets/js/library/intlTelInput.min.js; обидва файли розташовані всередині теки Forminator. Якщо ви прочитаєте ?ver=4.0.3 з одного з цих файлів, це версія бібліотеки, а не Forminator. У Forminator ніколи не було випуску лінійки 4.x. Читайте лише файли, перелічені вище, і будь-яку версію, яка не починається з 1., вважайте “не версією Forminator”.
  • Стиль для кожної форми в теці завантажень. Forminator записує невеликий файл стилів для кожної опублікованої форми за шляхом на кшталт /wp-content/uploads/forminator/<щось>/style-<число>.css?ver=<довге 10-значне число>. Це довге число є позначкою часу, а не версією. Воно міститься в wp-content/uploads/, а не в теці плагіна, тож повністю ігноруйте його.

Ще одне зауваження саме для цього плагіна: рядок Stable tag: у вбудованому файлі readme.txt тут не є надійним джерелом, оскільки він може відставати від фактичного випуску (і збірка 1.56.1, і збірка 1.56.2 повідомляють 1.56.0), тож, на відміну від деяких інших плагінів, цей файл не підкаже, яку саме з цих двох версій ви маєте. Довіряти варто екрану адміністрування та значенню ?ver= у файлах активів, описаних вище.

Далі застосуйте це правило, зважаючи на те, що версії порівнюються числово, а не за алфавітом:

  • Від 1.18.1 до 1.56.1: потенційно уражена, залежно від відповіді на питання про поле завантаження вище. Оновіться зараз.
  • 1.56.2 або новіша: уже виправлена щодо цієї проблеми. Найкращим кроком буде взяти найновішу доступну версію (на момент написання цього тексту це лінійка 1.57.x).
  • Старіша за 1.18.1: не уражена цією проблемою. Описана вище вада з’явилася саме у версії 1.18.1. Утім, такий старий випуск сильно відстає в усьому іншому, і оновитися варто вже з загальних міркувань.

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

Як оновитися

Плагін безкоштовний, досі публікується й активно підтримується, тож виправлення полягає у звичайному оновленні. Найбезпечніший шлях: оновлюватися засобами самого WordPress, попередньо зробивши резервну копію:

  1. Зробіть резервну копію сайту (файлів і бази даних), перш ніж щось змінювати. Більшість хостинг-провайдерів пропонують резервне копіювання в один клік, або скористайтеся плагіном резервного копіювання для WordPress.
  2. У панелі адміністрування WordPress перейдіть до Консоль, потім Оновлення, або до Плагіни, потім Встановлені плагіни. Якщо оновлення Forminator є в переліку, встановіть його звідси.
  3. Якщо вам зручніше в командному рядку, WP-CLI робить те саме: wp plugin update forminator (команда використовує назву теки).
  4. Якщо оновлення не з’являється, ви можете взяти останній випуск безпосередньо зі сторінки плагіна в каталозі WordPress.org, Forminator Forms, і оновитися через Плагіни, потім Додати плагін, потім Завантажити плагін.
  5. Після оновлення підтвердіть новий номер версії (1.56.2 або новіша) за кроками вище й перевірте, що ваші форми та будь-які завантаження файлів у них досі працюють нормально.

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

Після оновлення

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

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

  • Перегляньте теку завантажень (зазвичай wp-content/uploads/, зокрема піддерево wp-content/uploads/forminator/) на предмет файлів, яких ви не впізнаєте, особливо таких, що не є документами чи зображеннями того типу, який мають отримувати ваші форми.
  • Перевірте облікові записи адміністраторів, останні входи та будь-які активні сеанси на предмет чогось, що ви не можете пояснити.
  • Скиньте паролі облікових записів адміністраторів. Розумним додатковим кроком буде також перегенерувати секретні ключі та “солі” WordPress у wp-config.php (нові значення доступні в один клік в офіційному генераторі секретних ключів, і їх заміна одноразово завершує сеанси всіх користувачів).

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

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

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

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

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

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

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

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

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

Контакти

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

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

Джерела

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

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