Атака через пошкодження таблиць в MySQL

22:41 19.04.2012

Розповім вам про атаку через пошкодження таблиць в базах даних в СУБД MySQL. Яку я представив в травні 2009 в записі Атака на Abuse of Functionality в WordPress. Тоді я детально описав цю атаку на прикладі WordPress, а потім ще на прикладі Invision Power Board (про можливість такої атаки на IPB я знаю ще з 2007 року), але вирішив зробити про це детальну статтю.

Пошкодження таблиць в MySQL.

MySQL підтримує різні типи таблиць, які ще називають движками (storage engines). І різна кількість движків таблиць підтримується в різних версіях СУБД, зокрема MySQL 5.0 підтримує 10 движків. В MySQL існує такий тип таблиць як MyISAM. Вони є більш швидкими в роботі ніж інши типи таблиць і на протязі багатьох версій MySQL по замовчуванню використовує саме MyISAM движок при створенні нових таблиць (до версії MySQL 5.5.5). І в цього движка є важлива проблема - таблиці можуть псуватися (за звичай це індекси таблиць, тобто самі таблиці з даними залишаються цілими). Це стосується MyISAM та ISAM движків.

І відповідно їх потрібно рементовувати, для чого існує функція REPAIR для MyISAM таблиць. Функціонал ремонту може бути доданий у веб додаток - наприклад, IPB 2 і вище мають таку функцію в адмінці, а також такий функціонал додали в WordPress 2.9, але, як я писав, в ньому є DoS уразливість. Якщо такого функціоналу немає, що типово для більшості веб додатків, то потрібно використовувати будь-яки додатки для роботи з MySQL, в тому числі веб додатки, такі як MySQL Perl/CGI Client та phpMyAdmin.

Приклади вразливих додатків.

В 2009 році я розповів про можливість проведення даної атаки на WordPress (для DoS та повного захоплення сайта), а в 2011 році я розповів про атаки на IPB 1, IPB 2 та IPB 3 (для DoS). Інші веб додатки, що використовують MySQL і MyISAM таблиці, також вразливі до даної атаки.

Враховуючи, що пошкодженні таблиці є недоступними для веб додатку, то він перестає нормально проацювати. Проблема може торкнутися як якогось одного функціоналу сайту, так і усього сайту - коли веб додаток повністю перестане працювати і буде лише виводити повідомлення про помилку. Доки пошкодженні таблиці не відремонтують. Наприклад, коли пошкодити важливу таблицю в WordPress, то сайт перестає працювати і на всіх сторінках сайта виводиться повідомлення - в старих версіях движка виводиться “It doesn’t look like you’ve installed WP yet”, а в нових версіях виводиться “Error establishing a database connection”.

А враховуючи, що у веб додатках не використовуються автоматичний ремонт таблиць - я не знаю жодного такого веб додатку - то проблеми на сайті будуть доти, доки адмін сам не відремонтує таблиці (використовуючи будь-які програми для роботи з MySQL, щоб виконати REPAIR для цих таблиціь). Як я вже писав про WordPress, де в WP 2.9 розробники як би зробили автоматичне виправлення (після мого оприлюднення вищезгаданої атаки на WP), але, як я виявив, насправді вони збрехали і в движку не було зроблено автоматичного виправлення таблиць, і потрібно вручну запускати скрипт для ремонту таблиць.

Напрямки атаки.

Основними напрямками атаки через пошкодження таблиць в MySQL є наступні:

1. Проведення DoS атак. Створивши умови для пошкодження таблиць БД (через навантаження сайта), можна провести DoS атаку на сайт. Прикладами веб додатків уразливих до таких атак є WordPress та IPB.

2. Повне захоплення сайту. При наявності на сайті інсталятора та провевши DoS атаку (описану в п.1) на таблиці до яких чутливий інсталятор, можна змусити його вирішити, що движок не інстальований на сайті й провести переінсталяцію движка. Прикладами веб додатків уразливих до таких атак є WordPress.

Проведення атаки.

Для атаки потрібно знайти таблицю до якої чутливий веб додаток. Раніше я вже розповів до яких таблиць чутливі WordPress та Invision Power Board. WP чутливий до тиблиць wp_options та wp_users, а IPB чутливий до таблиць ibf_topics та ibf_session.

Після цього потрібно знайти функціонал, який використовує знайдену чутливу таблицю. Та навантажити цей функціонал таким чином, щоб вібдулося пошкодження таблиці в БД. І таким чином буде проведена атака на веб сайт.

Висновки.

З вищенаведено випливає, що до даної атаки вразливі всі веб додатки, що використовують MySQL і MyISAM таблиці. А таких веб додатків дуже багато - це можуть бути тисячі, якщо не мільйони веб додатків. І навіть при тому, що пошкодити таблицю дуже непросто (для проведення даної атаки), але така вірогідність існує, тому всім веб розробникам та адміністраторам сайтів варто врахувати цю інформацію.


Одна відповідь на “Атака через пошкодження таблиць в MySQL”

  1. MustLive каже:

    You can read this article on English: Attack via tables corruption in MySQL.

Leave a Reply

You must be logged in to post a comment.