+38/050/370-3627
+38/093/220-0872
+38/044/257-2444
Новини

Використання плагіна jQuery-File-Upload робить сайти вразливими

Використання плагіна jQuery-File-Upload робить сайти вразливими

У плагіні jQuery-File-Upload виявлено повчальну вразливість CVE-2018-9206, що показала безтурботність web-розробників та web-адміністраторів. jQuery-плагін jQuery-File-Upload надає функціональний web-віджет для організації завантаження файлів на сайти, що підтримує групове завантаження, індикатор прогресу та відновлення перерваних завантажень. Основна функціональність jQuery-File-Upload реалізована на JavaScript і виконується на стороні браузера, при цьому до складу також входить набір прикладів серверних обробників для збереження файлів, що відправляються.

Сутність уразливості в тому, що в запропонованих серверних обробниках повністю були відсутні фільтри для блокування завантаження потенційно небезпечних типів контенту і файли, що завантажуються, зберігалися на сервері під вихідними. іменами, що їх визначав користувач на сайті. Дані завантажувалися в каталог "./files", що знаходиться у робочій ієрархії каталогів web-сервера. Таким чином, при використанні пропонованих серверних обробників, користувач міг зберегти будь-які типи файлів, наприклад, "test.php", які зберігалися в публічно доступній директорії та ставали видимими для зовнішніх запитів (наприклад, завантажений "test.php" можна було отримати запитавши " http://example.com/files/test.php").

У ситуації, якщо на сайті використовується PHP і включено виконання php-файлів у всій ієрархії каталогів, подібний запит без належного обмеження доступу до каталогу "./files" призведе до виконання коду скрипту, збереженого у файлі test.php, на стороні сервера, що дозволить повністю одержати контроль за сайтом. Основною помилкою розробника jQuery-File-Upload стало те, що він не став обмежувати допустимі для збереження типів файлів, а спробував включити в поставку ".htaccess", що відключає виконання PHP-файлів через повернення обробника за замовчуванням ("SetHandler default-handler", "ForceType application/octet-stream").

Розробник jQuery-File-Upload вважав, що на всіх web-серверах завжди включено обробку ".htaccess" і активний модуль mod_headers. В обговоренні розробник доповнення спробував виправдатися, що на момент написання плагіна за умовчанням в Apache httpd для всіх каталогів виставлялася опція "AllowOverride All", але починаючи з випуску 2.3.9 вона була непомітно замінена на "AllowOverride None".

Але це пояснення не витримує критики, тому що гілка 2.3.x була тестовою і сама по собі не використовувалася на практиці, а виступала основою для формування наступної значної гілки Apache httpd 2.4, в якій зазначена поведінка було документовано і подано як одну зі змін для підвищення безпеки та продуктивності. Крім того, рішення про включення або відключення за умовчанням ".htaccess" завжди лежало на операторах хостингу та мейнтейнерах пактів у дистрибутивах, тому і в часи до появи Apache httpd 2.4 не можна було впевнено стверджувати, що .htaccess скрізь працюватиме.

>

За час свого існування плагін jQuery-File-Upload увійшов до складу сотень web-додатків та доповнень до систем управління web-контентом, і лише одиниці здогадалися обмежити список допустимих для завантаження файлів. В даний час на GitHub репозиторій jQuery-File-Upload налічує 7843 форків, перевірка 1000 з яких показала, що лише 36 містять належні виправлення, що блокують уразливість.

Судячи з усього, проблема вже давно відома в колах атакуючих, так як у мережі знайдено кілька посібників, перше з яких датується 2015 роком, з демонстрацією зламів тих чи інших систем через завантаження php-файлу у формі на сайті та подальшого запиту цього файлу з каталогу "./files". Всім web-майстрам сайтів з формами завантаження на базі jQuery-File-Upload рекомендується перевірити наявність блокування доступу до каталогу "./files" для зовнішніх запитів і при необхідності внести зміни, що відключають виконання PHP-скриптів у даній директорії, на рівні налаштувань web- сервера.

Інші новини

Найкраща ціна