Якщо Ви отримали від мене листа з посиланням на цю сторінку, то це тому, що Ваш сайт, схоже, працює на вразливій версії плагіна Realtyna Organic IDX plugin + WPL Real Estate (плагін WordPress real-estate-listing-realtyna-wpl від компанії Realtyna). Можливо, Ви знаєте його як WPL або як плагін Organic IDX. Ця сторінка пояснює, чому це важливо і як це виправити.

Це повідомлення стосується CVE-2026-13714завантаження довільного файлу без автентифікації, що призводить до віддаленого виконання коду. Простими словами: людина, яка не увійшла в систему і якій не потрібні ані обліковий запис, ані якесь особливе налаштування на Вашому сайті, може записати файл сценарію в каталог завантажень сайту, а потім запустити його. Це повний контроль над серверною частиною коду. Уражені випуски від 4.0.0 до 5.2.0, виправлення вийшло у версії 5.3.0 від 30 червня 2026 року. Випуски старіші за 4.0.0 цієї вади не містять. Якщо у Вас установлена уражена версія, оновіть плагін до 5.3.0 або новішої якнайшвидше, а потім прочитайте розділ Якщо Ви використовували уражену версію.

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

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

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

Усе, що я зробив, – переглянув загальнодоступні файли, які Ваш сайт віддає кожному відвідувачеві (такі самі публічні, як і головна сторінка), і записав номер версії, який плагін публікує у своєму загальнодоступному файлі readme.txt. Зокрема, я нічого не надсилав до ураженого інтерфейсу завантаження. Нічого не було завантажено, протестовано чи використано, і ця перевірка не торкається ані Ваших даних, ані панелі адміністратора, ані будь-якої закритої частини сайту.

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

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

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

Дві обставини не дають цьому лишитися теоретичною проблемою:

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

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

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

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

Варто знати ще одне, бо через це оновлення виглядає необов’язковим, хоч воно таким не є: у переліку змін виробника до 5.3.0 безпека не згадується. Там написано «Removed deprecated mobile_application». Саме цей запис і є виправленням: вразливу підсистему видалено повністю. Хто переглядає нотатки до випуску в пошуках попередження про безпеку, не знайде його.

Добра новина: оновлення до виправленої версії закриває пролом, і воно нескладне.

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

Вам не потрібно вірити мені на слово щодо того, яка версія у Вас установлена.

У панелі адміністратора WordPress (це визначальна перевірка):

  1. Увійдіть до консолі WordPress (зазвичай за адресою yourdomain.com/wp-admin).
  2. Перейдіть до Плагіни, а потім Встановлені плагіни.
  3. Знайдіть Realtyna Organic IDX plugin + WPL Real Estate і подивіться версію під його назвою.

За загальнодоступним маніфестом (без входу): відкрийте у браузері yourdomain.com/wp-content/plugins/real-estate-listing-realtyna-wpl/readme.txt. Рядок Stable tag: ближче до початку містить версію, про яку повідомляє Ваша установка. Цей файл постачається всередині теки плагіна, тож відображає те, що справді встановлено, і це той самий загальнодоступний файл, який прочитав я.

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

  • Від 4.0.0 до 5.2.0: уражено, оновлюйтеся зараз.
  • 5.3.0 або новіша: уже виправлено, щодо цієї проблеми робити нічого не треба.
  • Старіша за 4.0.0: ця проблема Вас не стосується. Коду з неперевіреним завантаженням у тих випусках просто немає. Публічні описи подають діапазон як «усі версії до 5.3.0»; це неправильно, і якщо у Вас випуск 3.x, немає підстав вважати це надзвичайною ситуацією. Це все ж дуже старий випуск, тож оновлення лишається розумним з інших причин.

Не визначайте версію за адресою статичного файлу. Якщо Ви подивитеся вихідний код сторінки й побачите щось на кшталт realtyna.min.js?ver=5.2.21, це число не є версією плагіна. Реєструючи свої стилі та сценарії, цей плагін не передає WordPress власну версію, тож WordPress підставляє замість неї версію ядра WordPress Вашого сайту. Ми бачили робочі сайти з плагіном 4.3.2, які віддавали ?ver= зі значенням 4.9.9, і сайти зі значенням 5.2.21 – це номер випуску ядра WordPress, який виглядає точнісінько як версія плагіна трохи нижче межі 5.3.0. Прочитавши його як версію плагіна, можна отримати пряму протилежність істині. Користуйтеся панеллю адміністратора або readme.txt.

Як це виправити

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

  1. Зробіть резервну копію сайту (файлів і бази даних), перш ніж щось змінювати. Більшість хостинг-провайдерів пропонують резервне копіювання в один клік, або скористайтеся плагіном резервного копіювання.
  2. У панелі адміністратора WordPress перейдіть до Консоль, а потім Оновлення, або до Плагіни і Встановлені плагіни. Якщо оновлення плагіна є в переліку, установіть його звідти.
  3. Якщо Ви віддаєте перевагу командному рядку, WP-CLI робить те саме: wp plugin update real-estate-listing-realtyna-wpl.
  4. Якщо оновлення не з’являється, останній випуск можна взяти прямо зі сторінки плагіна в каталозі WordPress.org, Realtyna Organic IDX plugin + WPL Real Estate, і оновитися через Плагіни, потім Додати новий плагін, потім Завантажити плагін.
  5. Після оновлення перевірте новий номер версії (5.3.0 або новіша) описаними вище кроками й переконайтеся, що сайт завантажується нормально.

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

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

Якщо Ви використовували уражену версію

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

  • Файли сценаріїв у каталозі завантажень, яким там не місце. Пошукайте в wp-content/uploads/ файли з розширенням .php (чи іншими виконуваними розширеннями) серед зображень і документів об’єктів нерухомості. Законні вкладення оголошення про нерухомість – це зображення, PDF і подібне; файл .php серед них ненормальний.
  • Файли зі свіжими або дивними датами. Відсортуйте за датою зміни й зверніть увагу на все, чому Ви не можете дати пояснення, зокрема у власних теках завантаження плагіна.
  • Облікові записи адміністраторів. У розділі Користувачі, потім Усі користувачі відфільтруйте за роллю Адміністратор і вилучіть будь-який обліковий запис, якого Ви не впізнаєте. Створення нового адміністратора – звичний спосіб зберегти доступ.
  • Нещодавно встановлені або змінені плагіни й теми. Шукайте все, чого Ви не встановлювали самі, і плагіни із загальними чи незнайомими назвами, бо підкинутий плагін або тема – звичний спосіб залишити потайний хід.
  • Інші ознаки. Несподіваний новий вміст або сторінки, зміни адреси адміністратора чи налаштувань URL сайту, незнайомі заплановані завдання або скарги на вихідний спам варті перевірки.

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

Хочу сказати прямо: я не перевіряв Ваш сайт за жодною з цих ознак і не знаю, чи був він уражений. Цей перелік тут для того, щоб Ви могли перевірити самостійно. Сайт в ураженому діапазоні версій може бути вже захищений іншими засобами (міжмережевим екраном рівня застосунків, виправленням, перенесеним хостингом, або вимкненим інтерфейсом введення-виведення); це повідомлення – спостереження на основі номера версії, а не твердження, що Ваш сайт був вразливий у момент перевірки.

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

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

У мене немає вебмайстра / я застряг

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

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

Контакти

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

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

Джерела

Офіційні бюлетені та облік

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