photo
Магистр ДонНТУ Ильенко Федор Вячеславович
 

Ільєнко Федір Вячеславович


Факультет: комп'ютерних наук і технологій


Кафедра: комп'ютерної інженерії


Спеціальність: "Системне програмування"


Тема магістерської роботи:: "Безпека веб додатків"


Науковий керівник: к.т.н., доцент Приходько Тетяна Олександрівна



logo



Портал магистров ДонНТУ
Сайт ДонНТУ

Реферат за темою випускної роботи

Зміст

Вступ

Рисунок

Розробка нових ВЕБ-додатків часто фокусується на досвіді замовника і найбільш часто вона зводиться до забезпечення необхідної функціональності і якісного інтерфейсу для користувачів. Досить часто увага приділяється і системі серверної інтеграції додатків. Питаннями забезпечення безпеки в той же час часто нехтують або відкладають їх рішення на останню стадію - стадію тестування програми.

Багаторічний досвід різних компаній показує, що забезпечення безпеки ВЕБ-додатків має починатися ще на ранніх стадіях процесу проектування і розробки додатків [1]

Метою вирішення проблем безпеки ВЕБ-додатків, є: забезпечення високої доступності додатків, якість серверних рішень і захист конфіденційних даних, забезпечення розробки надійних і безпечних програмних рішень.

Необхідно відзначити, що вартість і час, витрачений на реалізацію заходів безпеки на стадії розробки додатків набагато менше, ніж вдосконалення  їх на етапі запуску в експлуатацію або виправлення вже "готових" додатків.

При розробці ВЕБ-додатків необхідно виконати наступні задачи:

  • Уникнути уразливості в додатках ще на ранніх стадіях розробки;
  • Зробити так, щоб розробники додатків створювали якісні та безпечні конструкції;
  • Якщо є додатки, розроблені не всередині компанії, необхідно вимагати від постачальників додатків експертне   укладення з метою забезпечення безпеки.

1. Актуальність

Web-додатки є одними з найбільш небезпечних системна сьогоднішній день. Чим більше критично важливих і конфіденційних даних зберігає програмне забезпечення, тим важливіше стає проведення аудиту його безпеки.

Тестування безпеки - це тип тестування, основне призначення якого- переконатися, що конфіденційні дані залишаться конфіденційними,а користувач системи зможе зробити тільки те, що йому належить заправ доступу. Оцінка захищеності Web-додатків може виконуватися як з використанням методики "чорного ящика", так і шляхом аналізу вихідних кодів.  Другий спосіб більш ефективний, але й більш трудомісткий. Метод "чорного ящика"  полягає у проведенні робіт з оцінки захищеності інформаційної  системи без попереднього отримання будь-якої інформації про неї з боку  власника. Метод "білого ящика" полягає в тому, що  для оцінки захищеності інформаційної системи використовуються всі необхідні дані про неї, включаючи вихідний код додатків.

2. Постановка завдання

Основними завданнями даної роботи є вивчення засобів безпеки  веб-додатків, а так само більш докладний розгляд такий тип вразливості  як XSS уразливості і постаратися знайти способи визначення даного виду атак. Що стосується класичних видів вразливостей так це:

  1. SQL injection
  2. PHP include
  3. XSS

Більш докладно вони розглянуті в розділі 3.

У рамках магістерської роботи планується отримання актуальних наукових результатів за наступними напрямками:

  1. Покращення алгоритмів тестування web-додатків.
  2. Написання власного xss сканера.
  3. Тестування сайту першокурсників факультету КНТ за допомогою xss сканера на предмет наявності вразливостей.

3. Огляд досліджень і розробок

Серед тестованих ресурсів зустрічаються веб-додатки,написані на різних мовах програмування; при цьому для кожної мови характерний свій набір найбільш значущих вразливостей (за даними дослідження групи Positive Technologies [2] .  Більшість розробників воліють PHP: на ньому написано 63% всіх протестованих сайтів.  Значні частки ASP.NET (19%) і Java (14%). Решта мов програмування  зустрічаються набагато рідше. Розподіл сайтів - учасників тестування по лежачому  в їх основі мови програмування візуально представлено на рис. 1

Статистика використання мов програмування

Рис. 1. Статистика використання мов програмування при створенні динамічних Web-сторінок)

Особисто у мене робота з сайтами почалася ще на третьому курсі. Разом з науковим керівником ми розробляли портал для першокурсників   факультету КНТ. У планах це була свого роду бібліотека методичних  забезпечень по всі спеціальностями та напрямками факультету. На момент написання  магістерської роботи цей ресурс ще не закінчений. Його планується запустити і  розмістити на хостингу офіційного сайту факультету. Оскільки даний проект  вважається досить перспективним і корисним для студентів, очікується величезне  кількість відвідувань і у зв'язку з цим ймовірність нападу ймовірність  втрати інформації збільшується. Тому перш ніж викладати  його на загальний доступ доцільно потурбується про безпеку самого ресурсу  і перевірити його на наявність вразливостей. Для цього постало завдання вивчититипи вразливостей і написати власний сканер для тестування сайту.

На зорі розвитку Інтернету практично кожен додаток містив велику кількість таких вразливостей. Але з кожним днем ставало все складніше зустріти уразливості такого типу.І зломщики ставали все більш витонченими, що призводилодо розробок нових типів і векторів атаки - один з цих типів атакибув виділений в окремий клас і отримав назву CSRF.

CSRF (англ. Сross Site Request Forgery - "Підробка міжсайтових запитів",  також відомий як XSRF) - вид атак на відвідувачів веб-сайтів, що використовує  недоліки протоколу HTTP. Якщо жертва заходить на сайт, створений зловмисником,   від її обличчя таємно відправляється запит на інший сервер (наприклад, на сервер платіжної системи),  здійснює якусь шкідливу операцію (наприклад, переказ грошей на рахунок зловмисника).  Для здійснення даної атаки, жертва повинна бути авторизуємо на тому сервері, куди  відправляється запит, і цей запит не повинен вимагати якого-небудь підтвердження з  боку користувача, який не може  бути проігнорований або підроблений атакуючим скриптом.

Це атака, при якій зловмисник намагається змусити браузер жертвистворити запит до цільового сервера, таємно від самої жертви.   Схематично це представлено на рисунку 2 [3]

Схема отримання інформації від користувача

Рис. 2 Схема отримання інформації від користувача
(анімація: 45 кадрів, 5 циклів повторень, 96 кілобайти)

Дана атака в чомусь схожа на класичну XSS, в якій  зловмисникові необхідно було змусити жертву перейти по  деякої посиланням на вразливу сторінку. Тут же необхідно  змусити користувача перейти на спеціально підготовлену  зловмисником сторінку, на яку був доданий деякий код.  При виконанні даного коду браузер жертви здійснює якийсь запит  до іншого сервера (припустимо під виглядом завантаження зображення),  і тим самим виконує деякі, потрібні зловмисникові дії.

4. Запобігання Cross-Site сценаріїв атак

На щастя, провести XSS-атаку можна так само легко як і захиститися від неї.Перш за все, потрібно думати про те, що ви пишете. Перше правило, яке потрібнознати в будь-який веб-середовищі (будь то розробка, постановка завдань, або виробництво)  ніколи не довіряти даними, що надходять від користувача або від будь-яких інших  сторонніх джерел. Кожен біт даних повинні бути перевірений на вході.  Це золоте правило попередження XSS [9]

З метою реалізації радикальних заходів безпеки,  які запобігають XSS-атаки, ми повинні пам'ятати проперевірці даних, санітарної обробки даних, і екранування.

4.1 Перевірка достовірності даних

Перевірка даних це процес забезпечення того, щоб ваш додатокпрацює з правильними даними. Якщо ваш PHP скрипт очікує ціле число,  для введення даних користувачем, то будь-який інший тип даних будуть відхилений  і користувач отримає повідомлення про це Кожна частина даних користувача повинна бути перевірена при отриманні.

Якщо ви хочете перевірити номер телефону, наприклад, відкиньте будь-якірядки, які містять літери, тому що номер телефону повинен складатисятільки з цифр. Ви повинні також брати до уваги довжину рядка.Якщо ви хочете бути більш ліберальним, ви можете дозволити обмежений набір спеціальних символів, таких як плюс,  дужки і тире, які часто використовуються при форматуванні телефонів

 ( ?php
// проверка номера телефона Украины
if (preg_match('/^((1-)?\d{3}-)\d{3}-\d{4}$/', $phone)) 
{
    echo $phone . " это правильный формат.";
}

 

При розробки сайту першокурсника ці моменти були враховані.Для захисту сайту від зловмисників виникає необхідність перевіряти введення даних відвідувачів. На екрані роботи з формою,  при введенні інформації, виконується безліч перевірок. Перевірки поділяються на

  • Заборони (помилки);
  • Програма видає видається повідомлення про необхідність обов'язкового внесення виправлення до даних;
  • Програма не дозволяє зберегти зміни до усунення причини виникнення проблеми;
  • Попередження;
  • Програма видає повідомлення про можливе невідповідність (і, якщо це можливо,  підсвічує поля даних, які потрапили під перевірку);
  • Програма дозволяє користувачеві продовжити роботу в програмі;

4.2 Санітарна обробка даних (нормалізація)

Санітарна обробка даних зосереджена на маніпулюванні даними,щоб переконатися, що вони безпечні. Відбувається видалення небажаних бітів даних та їх приведення до правильній формі. Наприклад, якщо на вході ви очікуєте простийй текстовийй рядок, ви можете видалити будь-яку HTML розмітку з нього.

( ?php
// удаление HTML из комментариев
$comment = strip_tags($_POST["comment"]);
 

Іноді, перевірки даних і санітарна обробка / нормалізація можуть йти рука об руку.

( ?php
// нормализация и проверка телефона США
$phone = preg_replace('/[^\d]/', "", $phone);
$len = strlen($phone);
if ($len == 7 || $len == 10 || $len == 11) {
    echo $phone . " это правильный формат.";
}

4.3 Екранування даних

Для того, щоб захистити цілісність відображення вихідних даних,ви повинні екранувати їх. Це запобіжить спробу браузера ненавмисно спотворити зміст спеціальних послідовностей символів, які можуть бути знайдені ім

( ?php
echo "Вы искали: " . htmlspecialchars($_GET["query"]);

Ця функція корисна при відображенні даних, введених користувачем, які можуть містити  небажані HTML теги, наприклад на форумі або гостьовій книзі.

4.4 Використання функції secureInnerData

Використання стандартної функції secureInnerData,дозволяє захистити від атак типу SQL injection і XSS. Найчастіше їх проводять використовуючи GET або POST запити  які не фільтруються на стороні сервера. Використовуючи дану функцію в якості фільтра входять даних, ви зможете частково убезпечити себе. [8]

Исходный код функции secureInnerData

Алгоритм гранично простий:

  1. видаляємо прогалини з кінця рядка
  2. видаляємо прогалини з початку рядка
  3. перетворює спеціальні символи в HTML сутності
  4. повертаємо очищені дані
код программи

Припустимо нам треба відфільтрувати параметр data який передаєтьсяна сервер за допомогою GET запиту. Виглядати фільтрація буде так:

$data=secureInnerData($_GET['data']);

О реалізації

rtrim(), ltrim() видаляють з кінця і початку рядка відповідно:

" " (ASCII 32 (0x20)), символ пробілу.

"\t" (ASCII 9 (0x09)), символ табуляції

"\n" (ASCII 10 (0x0A)), символ перекладу рядка

"\r" (ASCII 13 (0x0D)), символ повернення каретки.

"\0" (ASCII 0 (0x00)), NUL-байт.

"\x0B" (ASCII 11 (0x0B)), вертикальна табуляція

htmlspecialchars() перетворює спеціальні символи в HTML сутності:

'&' (амперсанд) перетвориться в '&'

'"' (двойная кавычка) перетвориться в '"' when ENT_NOQUOTES is not set.

''' (одиночная кавычка) перетвориться в ''' тільки в режимі ENT_QUOTES.

'<' (знак "меньше чем") перетвориться в '<'

'>' (знак "больше чем") перетвориться в '>'

Таким чином, можна убезпечити себе і свої дані від даного типу атак.

Висновки

У роботі була проведена класифікація найпоширеніших WEB-вразливостей. Результати показали, що серед виявлених вразливостей на найбільшому   кількості сайтів лідером є - Cross-Site RequestForgery (CSRF).

У роботі був проведений аналіз засобів безпеки web-додатків.   В якості методу для подальшого розвитку досліджень в  магістерській роботі вирішено працювати з методами, які аналізують вихідні   коди web-додатки і конфігураційні налаштування.

Для того щоб знати, як убезпечити власний ресурс необхідно мислити як би з боку атакуючого і при цьому знати основні вимоги для успішного проведення атаки:

  1. Можливість змусити жертву перейти на сторінку з додатковим кодом. Або можливість модифікації зловмисником часто відвідуваних жертвою сторінок (як кажуть, якщо гора не йде до Магомета, то ...).
  2. Відсутність захисту від CSRF на цільовому сайті.
  3. Користувач в момент атаки повинен бути авторизований для дії, яке ми хочемо виконати від його імені.

І на основі цих вимог необхідно спробувати побудувати захист.

При написанні даного реферату магістерська робота ще не завершена. Остаточне завершення: грудень 2013 року. Повний текст роботи та матеріали по темі можуть бути отримані у автора або його керівника після зазначеної дати.

Перелік посилань

  1. Безопасность web-приложений http://www.fortconsult.net/ru/ваши-трудности/безопасность-веб-приложений
  2. Positive Technologies – безопасность,консалтинг http://www.ptsecurity.ru
  3. Уязвимость CSRF. Введение http://intsystem.org/768/learn-about-csrf-intro/
  4. Издательство БХВ-Петербург, Тактика защиты и нападения на Web-приложения – 2005. – 432с
  5. Уязвимости | информационный портал о безопасностиhttp://www.securitylab.ru/vulnerability
  6. Козлов Д. Д., Петухов А. А. "Методы обнаружения уязвимостей в web- приложениях" / Программные системы и инструменты: тематический сборник ф-та ВМиК МГУ им. Ломоносова N 7. П/р Л.Н. Королева. М: Издательский отдел ВМиК МГУ. Изд-во МАКС Пресс, 2006 г.
  7. Межсайтовый_скриптинг http://ru.wikipedia.org/wiki/Межсайтовый_скриптинг
  8. Защита от SQL injection и XSS (функция secureInnerData ) http://n3info.blogspot.com/2013/05/sql-injection-xss-secureinnerdata.html
  9. XSS атака сайта и способы защиты. Как сделать и проверить XSS уязвимость http://consei.ru/xss-ataka-sajta-i-sposoby-zashhity/
photo