← БлогБезпека

jQuery застарілих версій: чому 60% сайтів мають вразливість, про яку не знають

jQuery — найпопулярніша JavaScript-бібліотека у світі. І водночас — одна з найчастіших причин вразливості веб-сайтів. Ми перевірили 10 сайтів із топ-30 Google і знайшли 4 вразливі.

15 жовтня 2024 р.· 7 хв читання

Маленький експеримент

Ми ввели в 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-бібліотек щомісяця і сповіщає при виявленні вразливостей. Таким чином ви завжди будете знати про проблему раніше, ніж нею скористаються зловмисники.