Повідомлення про безпеку Premium Packages (WordPress Download Manager)
Якщо ви отримали від мене листа з посиланням на цю сторінку, то тому, що ваш сайт,
судячи з усього, використовує вразливу версію Premium Packages (плагін WordPress
wpdm-premium-packages, доповнення до WordPress Download Manager від Shahjada /
wpdownloadmanager.com). На цій сторінці пояснюється, чому це важливо і як це виправити.
Це повідомлення стосується вразливості CVE-2026-15348, обходу автентифікації без попередньої автентифікації у механізмі обробки завантажень плагіна, яка могла б дозволити несанкціонованому відвідувачу увійти як клієнт чи інший обліковий запис без прав адміністратора у вашому магазині. Вона зачіпає версії з 4.7.0 по 7.0.4 і усунена у версії 7.0.5. Якщо ви використовуєте уражену версію, оновіть Premium Packages до 7.0.5 або новішої.
Кілька слів про терміновість, оскільки вона перебуває між іншими моїми повідомленнями: ця проблема взагалі не потребує входу в систему (вона повністю без попередньої автентифікації), тому оперативне оновлення є доцільним. Водночас це вразливість доступу до облікового запису, яка зачіпає власників замовлень без прав адміністратора, а не захоплення сервера чи отримання повних прав адміністратора, і немає жодних ознак того, що її експлуатують (її немає в каталозі відомих експлуатованих вразливостей CISA, і мені не відомо про жодні повідомлення про експлуатацію). Ця сторінка є запобіжним попередженням, а не звітом про інцидент. Оновлення закриває проблему, і жодних екстрених заходів не передбачається.
Це вразливість плагіна, а не ядра WordPress. Повністю актуальний WordPress не захищає вас, якщо сам плагін Premium Packages перебуває на ураженій версії.
Чи є це повідомлення справжнім?
Так. Це добросовісне повідомлення в рамках відповідального розкриття інформації від незалежного дослідника безпеки. Я не прошу у вас грошей, паролів чи доступу до вашого сайту і не намагався проникнути до нього, щось завантажити чи щось експлуатувати.
Усе, що я зробив: переглянув публічно доступні файли, які ваш сайт надає кожному
відвідувачу (так само, як публічна ваша головна сторінка), і зазначив інформацію про
версію, яку плагін Premium Packages публікує у своєму публічному файлі readme.txt.
Уразливої кінцевої точки я спеціально не торкався, і ніщо в цій перевірці не зачіпає
ваші дані, вашу адміністративну панель чи будь-яку приватну частину вашого сайту
(докладніше в розділі Що я робив і чого не робив нижче).
Якщо ви хочете переконатися в тому, хто я, ознайомтеся з контактними даними внизу цієї сторінки та на сторінці Про мене.
Чому це важливо
Premium Packages є доповненням до WordPress Download Manager (близько 2 000 активних
установок), яке дозволяє сайту продавати цифрові продукти та завантаження. В уражених
версіях обробник download() плагіна виконується за неавтентифікованим запитом. Він
декодує підконтрольний зловмиснику параметр URL (wpdmppdl), який лише закодований у
base64, без підпису та без nonce, щоб довести, що запит справжній, а потім видає файли
cookie для входу в WordPress після перевірки “домену”, обидві сторони якої надає
зловмисник (тому перевірка задовольняється тривіально). Цей клас помилок є обходом
автентифікації: побічний шлях видає сеанс із входом у систему, взагалі не перевіряючи,
хто робить запит.
Практичний наслідок полягає в тому, що неавтентифікований відвідувач міг би увійти як будь-який користувач без прав адміністратора, який володіє замовленням у магазині: обліковий запис клієнта, передплатника, автора, редактора чи менеджера магазину. Щоб бути чіткими щодо межі цього: це не надає доступ адміністратора і саме по собі не передає зловмиснику ваш сервер. Це захоплення облікових записів власників замовлень без прав адміністратора.
Проблемі не було присвоєно оцінку CVSS призначальним органом, тому я не буду прикріплювати до неї число; якісно вона серйозна, тому що не потребує входу в систему, але обмежена, тому що доступ, який вона дає, не має прав адміністратора. Якщо в моєму листі згадувалася ця проблема, це означає, що версія, про яку повідомляє ваш сайт, потрапляє в уражений діапазон. Я не перевіряв, чи вразливий саме ваш сайт, лише те, що він повідомляє про уражену версію.
Хороша новина: оновлення до виправленої версії закриває проблему, а саме оновлення нескладне.
Чи зачіпає це мене? Як перевірити свою версію
Це та частина цього повідомлення, яка відрізняється від інших, які я надсилаю, тому що публічні поля версії цього плагіна ненадійні, тож варто прочитати уважно.
Авторитетна перевірка є в адміністративній панелі WordPress. Вона показує справжню встановлену версію:
- Увійдіть до панелі керування WordPress (зазвичай за адресою
yourdomain.com/wp-admin). - Перейдіть до Plugins потім Installed Plugins.
- Знайдіть Premium Packages і запишіть версію, показану під його назвою.
Потім застосуйте це правило і зверніть увагу, що версії порівнюються чисельно, а не за алфавітом:
- Будь-яка версія нижча за 7.0.5: уражена, оновіться зараз.
- 7.0.5 або новіша: уже виправлена.
Чому б просто не прочитати публічні файли? Тому що для цього плагіна вони можуть ввести вас в оману:
- Рядок “Stable tag:” у публічному
readme.txtплагіна відстає від його власного коду. Сайт, що використовує останній вразливий випуск (7.0.4), публікує, наприклад,Stable tag: 7.0.3. Тому публічний readme є надійним сигналом про “виправлено” лише тоді, коли в ньому вказано 7.0.5 або вище. Нижчий номер не надійно повідомляє вам вашу точну версію; ставтеся до всього нижчого за 7.0.5 як до “перевір wp-admin і оновися”. - Не судіть про свою версію за номером
?ver=в URL скриптів або стилів плагіна. Плагін зафіксував свою внутрішню константу версії на7.0.4у випуску безпеки 7.0.5, тому виправлений сайт на 7.0.5 усе одно надає ресурси з позначкою?ver=7.0.4; а?ver=файлу CSS насправді є версією ядра WordPress, а не плагіна. Ні те, ні інше не відображає справжню версію плагіна. Скористайтеся wp-admin.
Як оновитися
Найбезпечніший шлях: оновлення через сам WordPress, попередньо створивши резервну копію:
- Створіть резервну копію вашого сайту (файли та база даних) перед внесенням змін. Більшість хостинг-провайдерів пропонують резервне копіювання в один клік, або скористайтеся плагіном резервного копіювання WordPress.
- В адмініструванні WordPress перейдіть до Dashboard потім Updates або Plugins потім Installed Plugins. Якщо оновлення Premium Packages вказано у списку, встановіть його звідси.
- Якщо ви віддаєте перевагу командному рядку, WP-CLI робить те саме:
wp plugin update wpdm-premium-packages. - Якщо там не з’являється оновлення, ви можете отримати останній випуск безпосередньо зі сторінки плагіна в каталозі WordPress.org, Premium Packages, і оновити через Plugins потім Add New Plugin потім Upload Plugin.
- Після оновлення підтвердьте новий номер версії (7.0.5 або новіша) у Plugins потім Installed Plugins, дотримуючись наведених вище кроків, і перевірте, що ваші завантаження та функції магазину працюють нормально.
Раз уже ви цим зайнялися, варто переконатися, що ядро WordPress, WordPress Download Manager та ваші інші плагіни актуальні, оскільки той самий принцип застосовується до всіх із них.
Після оновлення
Оновлення до 7.0.5 або новішої закриває проблему, і для більшості сайтів на цьому завдання завершено. Немає жодних ознак того, що цю вразливість експлуатували, тому жодних екстрених заходів не передбачається: вам не потрібно вважати свій сайт скомпрометованим, вимикати його чи примусово скидати паролі.
Оскільки вразливість могла б дозволити несанкціонованому відвідувачу діяти з обліковим записом клієнта чи іншим обліковим записом без прав адміністратора, один рутинний подальший крок є доцільним: перегляньте нещодавню активність облікових записів клієнтів і замовлень на предмет чогось незнайомого, наприклад замовлень або змін в облікових записах, яких клієнт не робив, або входів, які не відповідають звичайній активності. Ставтеся до цього як до звичайного порядкування, яке магазин робить періодично, а не як до реагування на інцидент. Якщо щось усе ж виглядає підозріло, застосовуються звичайні кроки (скиньте пароль цього облікового запису та перегляньте активність разом із клієнтом), і ви можете звернутися до мене із запитаннями.
Що я робив і чого не робив
Щоб бути повністю прозорим щодо перевірки, яка стояла за моїм листом: я лише читав публічні
файли, які ваш сайт уже надає кожному відвідувачу, а саме публічний файл readme.txt
плагіна та вашу головну сторінку. Я не отримував доступу до вашої адміністративної
панелі WordPress, вашої бази даних чи будь-якої приватної частини сайту. Зокрема, уразливої
кінцевої точки я не торкався і нічого не тестував та не експлуатував.
Це спостереження на основі версії: ваш сайт повідомляє про версію в ураженому діапазоні. Сайт у цьому діапазоні може вже бути захищений іншими засобами (наприклад, фаєрволом вебзастосунків або бекпортованим виправленням), тому це повідомлення не є твердженням, що ваш сайт був вразливим на момент моєї перевірки.
У мене немає вебмайстра / я застряг
Якщо ви не та людина, яка обслуговує сайт, будь ласка, перешліть цю сторінку тому, хто це робить (вашому веброзробнику, агенції чи хостинг-провайдеру). Вони швидко впізнають наведені вище кроки.
Якщо ви обслуговуєте сайт самостійно і застрягли, я з радістю безкоштовно допоможу вам знайти правильний напрямок. Зв’яжіться зі мною, використовуючи контактні дані нижче.
Контакти
Evan Harris, дослідник безпеки
- Електронна пошта: security@mail.mcpsec.dev
- X: @Evan__Harris
- GitHub: eharris128
- LinkedIn: Evan Harris
Я звертаюся з подібних питань виключно для того, щоб допомогти операторам захистити їхні сайти. Якщо ви віддаєте перевагу тому, щоб з вами більше не зв’язувалися, просто повідомте мені про це, і я поважатиму це.
Джерела
Офіційні повідомлення та відстеження
Виробник / плагін