Маленький експеримент
Ми ввели в Google запит «адвокат компанія Київ» і відкрили перші 10 сайтів з результатів пошуку. Не генератори, не агрегатори — реальні юридичні компанії з топ-30 видачі. Результат нас вразив: 4 з 10 сайтів використовували вразливу версію jQuery.
slinko.com.ua — jQuery 1.12.4. inseinin.com.ua — jQuery 1.10.2. riyako.com.ua — jQuery 2.1.3. advokat-lex.com.ua — jQuery 1.12.4. Всі ці сайти в топі Google. Всі — відомі юридичні компанії. І всі мають вразливість, про яку, скоріш за все, не підозрюють.
Що таке CVE-2019-11358 і чому це важливо
У березні 2019 року в jQuery була виявлена критична вразливість Prototype Pollution (CVE-2019-11358). Вона присутня у всіх версіях jQuery до 3.4. Вразливість дозволяє зловмиснику маніпулювати базовими об'єктами JavaScript через $.extend(), що може призвести до XSS-атаки або виконання довільного коду.
Простіше кажучи: якщо ваш сайт використовує jQuery до 3.4, і відвідувач передає на сторінку спеціально сформований параметр, зловмисник може виконати JavaScript-код від імені вашого сайту. Це може призвести до крадіжки сесій, підміни контенту або перенаправлення на фішингову сторінку.
Чому сайти роками залишаються вразливими
WordPress автоматично оновлює jQuery у своєму ядрі — тому більшість WordPress-сайтів захищені. Але є великий пласт сайтів на PHP-фреймворках: Yii, Laravel, Symfony, CodeIgniter. Ці фреймворки не управляють frontend-залежностями — розробник підключив jQuery одного разу і більше про нього не думав.
Інша проблема — застарілі туторіали і навіть відповіді ChatGPT. Статті 2016-2018 років, які навчають підключати jQuery через CDN, часто вказують конкретну стару версію. Розробник-початківець копіює код і не думає про оновлення.
Як перевірити свій сайт
Відкрийте DevTools у браузері (F12), перейдіть у вкладку Console і введіть: jQuery.fn.jquery. Якщо версія нижче 3.4.0 — у вас є вразливість. Або відкрийте вихідний код сторінки (Ctrl+U) і знайдіть рядок jquery.min.js — поряд зазвичай є номер версії.
Що робити
Оновіть jQuery до версії 3.7+ (актуальна на момент написання). Якщо ваш сайт на WordPress — оновіть саме WP, а не jQuery окремо. Якщо ваш сайт на custom PHP або фреймворку — зверніться до розробника, це 30-хвилинна задача.
Rank Sentinel автоматично перевіряє версії всіх JS-бібліотек щомісяця і сповіщає при виявленні вразливостей. Таким чином ви завжди будете знати про проблему раніше, ніж нею скористаються зловмисники.