Безпека прикладних програм

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Безпека застосунків, або безпека прикладних програм (англ. Application Security) — це комплекс заходів, які спрямовані на аналіз, виявлення та усунення уразливостей у застосунках та забезпеченні їхньої безпеки. Забезпечення безпеки охоплює заходи підвищення безпеки програми, зазвичай шляхом пошуку, виправлення та запобігання уразливостям системи безпеки. Для цього використовуються методи виявлення таких уразливостей на різних етапах життєвого циклу додатків, таких як проектування, розробка, розгортання, модернізація, технічне обслуговування. На кожному з цих етапів користувач може зіштовхнутися з певними проблемами, що здебільшого виникають у результаті реалізації програм, які у свою чергу служать для забезпечення певних потреб користувача.

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

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

Терміни[ред. | ред. код]

  • Актив – це ресурс такого значення як дані у сховищі зберігання даних, гроші на рахунку в аккаунті, файли у файловій системі або системний ресурс.
  • Уразливість – це певне «слабке місце» у програмі, яке може бути використане різного виду загрозами для отримання несанкціонованого доступу до активу.
  • Атака (напад або використання) – дія, яка спрямована на завдання шкоди активу.
  • Загроза – це все, що може використовувати уразливості та отримати, нанести шкоду або знищити актив.

Методи[ред. | ред. код]

Методи знаходять різні підмножини (осередки) уразливостей безпеки, що заховані у програмі і є найбільш ефективними у окремі періоди її життєвого циклу. Кожен з них представляє певні цикли часу, зусилля, витрати щодо знаходження цих уразливостей.

1. Огляд "білої скриньки" або огляд коду.

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

2. Огляд «чорної скриньки».

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

3. Інструментарій.

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

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

Загрози застосункам (атаки)[ред. | ред. код]

Загрози або атаки є головним чинником впливу на роботу прикладних програм. Спільнота OWASP винайшла список 10 уразливостей для веб-програм та описує практики безпеки для організацій, прагнучи створити відкриті стандарти для цієї галузі[1]. З 2017 року організація перераховує основні загрози безпеки застосунків, такі як:[2]

Тип загрози Опис
Вхід (валідація) Переповнення буфферу; крос-сайт сценаріїв; мова структурованих запитів (англ. SQL - Structured query language).
Вторгнення програми Такий софт модифікує існуючу поведінку запуску програми з метою несанкціонованих дій. З’являється у наслідку оновлення, заміни коду або ж розширення коду.
Аутентифікація Мережеве прослуховування. Атаки грубої сили. Атаки перебору. Атаки відтворення файлів cookie. Крадіжка облікових даних.
Авторизація Підвищення привілеїв. Розголошення конфіденційної інформації. Вторгнення шкідливих даних.
Управління конфігурацією Неавторизовний доступ до інтерфейсів. Неавторизований доступ до налаштувань конфігурації. Отримання чистого тексту даних. Відсутність власної відповідальності. Супер-користувальницькі процеси та сервіси.
Чутлива інформація Доступ до чутливого коду або даних у сховищі. Прослуховування мережі. Вторгнення небажаного коду або даних.
Управління сеансом Викрадення сеансів. Відтворення сеансу роботи. « Людина по середині».
Криптографія Помилка генерації ключів або погане управління ключами. Слабке або індивідуальне криптування.
Маніпуляція параметрами Маніпуляції полем запиту. З полем форми. Маніпуляції з файлами cookie. Різного роду маніпуляції з гіпертекстом (HTTP - Hyper Text Transfer Protocol).
Управління винятками Розсекречення інформації. Відмова в обслуговуванні (Deny of Service – DoS).
Аудит і вхід у систему Користувач блокує виконання операції. Використовує додаток без слідів його застосування та дій.

Захист мобільних застосунків[ред. | ред. код]

Очікується, що частка мобільних пристроїв, які надають функціональні можливості відкритої платформи, будуть збільшуватись надалі. Відкритість цих платформ дає значні можливості для усіх частин мобільних середовищ забезпечуючи простір дій для гнучких програм і сервісів: опції можуть бути встановлені, видалені або оновлені безліч разів згідно із  потребами та вимогами користувача. Проте, із відкритості систем приходить і необмежений доступ до мобільних ресурсів і прикладних програмних інтерфейсів (API’sApplication Programming Interface’s), невідомими і недовіреними оригіналами, які можуть нанести значну шкоду користувачу, пристрою, мережі або усім складовим відразу, якщо вони не будуть управлятися відповідними захисними структурами і мережевими запобіжними засобами. Захист мобільних застосунків у деякому розумінні забезпечується на більшості відкритих операційних систем мобільних пристроїв ( Symbian OS,[3] Microsoft, інші ). Промислові групи також створили певні рекомендації включаючи організацію GSM та Mobile Terminal Plaform, OMTP.[4]

Існує декілька стратегій підвищення безпеки мобільних програм:

  • «Білий список» (white listing).
  • Забезпечення безпеки транспортного рівня.
  • Надійна аутентифікація та авторизація.
  • Криптування даних перед записом пам’яті
  • Sandboxing застосунків.
  • Збільшення рівнів доступу застосунків за один API рівень.[що це?]
  • Процеси прив’язані до ідентифікатора (ID) користувача.
  • Попередньо визначена взаємодія між мобільним застосунком та операційною системою.
  • Вимагати[як?] від користувача привілейованого або підвищеного рівня доступу.
  • Правильна обробка сеансу.

Одним із способів захисту програм є їх оновлення. Оновлення коду запобігає існуванню уже існуючих проблем та уразливостей у попередній версії програми за рахунок виправлень проблемних зон коду. Регулярне оновлення може зменшити ризик виникнення таких незручностей.

Захист веб-застосунків[ред. | ред. код]

Веб-застосунок (англ. Web Application) - це застосунок, у якому клієнтом виступає браузер, а сервером - веб-сервер. Вони являють собою об’єкти потенційного впливу так як:

  • Весь час перебувають під впливом Інтернету та використовують незахищені інструменти.
  • Через необхідніть їх використання та швидшої реалізації, безпека може бути недокінця продуманою, що може викликати помилки.
  • Зібрані, здебільшого, із  гібридного відкритого коду, сторонніх бібліотек, які можуть містити у собі уразливості.

Discovery: За даними SANS, багато організацій навіть не знають, скільки програм вони мають у своїх доменах. Cлужба Discovery вирішує цю різницю видимості, створивши загальну інвентаризацію всіх веб-застосунків, таких як корпоративні сайти, тимчасові маркетингові сайти, пов'язані сайти (.mail, .info тощо), міжнародні домени та сайти, отримані через M & A. Крім того, Discovery масово використовує паралельну інфраструктуру автоматичного масштабування, щоб перевірити тисячі програм на день.

DynamicMP (Massively Parallel): знижує рівень ризику шляхом швидкого виявлення уразливостей, які віднайдені організацією OWASP та CWE / SANS . Протестувати тисячі веб-застосунків одночасно можна динамічним скануванням. Зменшити ризик можливо закривши тимчасові сайти та передаючи інформацію про захист та розповсюдження до мережевих брандмауерів (WAF).

DynamicDS (Глибоке сканування). Використовує глибоке різностороннє сканування, яке визначає вразливості веб-застосунків, використовуючи як аутентифіковані, так і неаутентифіковані сканування, включаючи пошук векторів атак, таких як міжсистемні скрипти (XSS), SQL injection, недостатньо захищені облікові дані та витоки інформації. Також інтегрує інформацію про розвідувальний захист з WAF, щоб забезпечити віртуальне оновлення.

Virtual Scan Appliance (VSA): виконує глибоку перевірку програм, що знаходяться під захистом брандмауера, як правило, в QA або в середовищі сканування, щоб знайти вразливості перед застосуванням. VSA також допомагає захищати внутрішні веб-програми від інсайдерських атак або атак зловмисними сторонніми особами, які хочуть отримати доступ до активу особи.

Всі результати об'єднуються з іншою інформацією про загрозу через центральну платформу на основі хмар.[5]

Організація захисту веб-застосунків[ред. | ред. код]

Застосування різного роду фаєрволів, систем запобіганню вторгнень(IDS - Intrusion Detection System) допомагають фільтрувати мережевий трафік, відслідковувати пакети і порівнювати їх із сигнатурами атак. Ці системи можуть блокувати усі відхилення від протоколів прикладного рівня. Одним із рішень є застосування системи WAF, яка аналізує протоколи HTTP/HTTPS, виявляє атаки із використанням автоматичних засобів. Важливим зі сторони подібного роду захисних систем виступає логічне осмислення та зрозумілість роботи програми у поєднанні із інтелектуальним дослідженням спроб проникнення. Перед командою із захисту веб-застосунків поставлені задачі високого рівня складності та способів їх реалізації.[6]

Рішення щодо реалізації захисту веб-застосунків:

  • Значний рівень захисту утворюється за допомогою злагодженої роботи інструментів та їх сумісності із поставленими завданнями.
  • Автоматизовані системи зменшують шанс потрапляння загрози.
  • Системи безпечні, масштабовані, зрозумілі, прості у розгортанні та керуванні.

Тестування безпеки програм[ред. | ред. код]

Уразливості залишають програми відкритими до будь-якого використання. Методи тестування безпеки усувають уразливості у безпеці програм[джерело?]. Вважається, що тестування безпеки реалізується протягом усього життєвого циклу програми, щоб уразливості були знешкоджені правильно та у встановлений час. Є випадки, у яких тестування часто виконується як наслідок, у кінці життєвого циклу.

Сканери уразливостей та зокрема сканер веб-застосунків, інакше відомих як інструменти тестування, історично використовувались організаціями та консультантами з безпеки для автоматичного тестування безпеки HTTP запитів-відповідей. Але це не замінює потребу в фактичному огляді вихідного коду. Початковий код програм може бути перевірений вручну або автоматично. Враховуючи індивідуальний звичайний розмір програм людський мозок не в змозі провести аналіз потоку даних з необхідним аналізом для повного контролю програми, щоб знайти програмні вразливості. Людський мозок спрямований на фільтрацію, переривання[Що?] та звіт про вихід[Що?] автоматизованих інструментів аналізу вихідного коду, доступних у комерційному відношенні, а також про можливі шляхи через скомпільовану кодову базу для виявлення уразливостей на рівні виникнення головної причини.

Існує багато видів автоматизованих інструментів для ідентифікації програмних уразливостей. Деякі з них вимагають великого досвіду проведення експертизи безпеки, а інші використовуються для повного автоматичного застосування. Результати залежать від типу інформаційних елементів ( вихідної, бінарної, HTTP – трафіку, конфігурації, бібліотек, з’єднань), що надають інструменту якість аналізу і виправлення уразливостей. Звичайні технології для ідентифікації програмної вразливості включать:

  • Статичне тестування безпеки (SAST, англ. Static Application Security Testing) – це технологія, яка здебільшого використовує інструмент аналізу початкового коду (англ. Source Code Analysis Tool). Метод аналізує безпеку коду програми перед її запуском і використовується для посилення коду. Цей метод дає меншу кількість неточностей, але вимагає доступу до початкового коду програми.[7]
  • Динамічне тестування безпеки (DAST, англ. Dynamic Application Security Testing) – це технологія, яка може знайти видиму вразливість пропускаючи URL ресурсу через автоматичний сканер. Цей метод дуже масштабний, добре інтегрований та швидкий.[джерело?] Недоліки DAST полягають у складності конфігурації і високої імовірності помилкового спрацювання.[8]
  • Інтерактивне тестування безпеки додатка (IAST, англ. Interactive Application Security Testing) – це таке тестування, яке оцінює додатки з використанням ПЗ. Ця методика дозволяє IAST комбінувати сили обох методів SAST і DAST, та забезпечувати доступ до коду, HTTP – трафіку, бібліотек, зворотніх зв’язків та інформації про конфігурацію.[9] Деякі продукти IAST вимагають реалізації атаки, у той час як інші можуть використовуватися під час нормального тестування.[10][11]

Організація безпеки додатків[ред. | ред. код]

Прогрес у професійному шкідливому програмному забезпеченні, орієнтованому на клієнтів онлайн організацій змінив вимоги до веб-додатків з 2007 року. Як правило, передбачається, що значна частина Інтернет-користувачів буде скомпроментована через шкідливе ПЗ, та що будь-які дані, отримані від інфікованого хоста, можуть бути шкідливими. Тому, захист додатків почав зароджувати унікальні розвинені системи для боротьби з шахрайством та евристичними системами виявлення у back-office, а не в межах коду клієнта або коду веб-сервера.[12] З 2016 року розроблені додатки самозахисту (RASP) під час виконання програми.[8][13] RASP – це технологія, яка використовується разом із середовищем або у середовищі виконання додатка, яка налаштовує додаток, проводить виявлення атак та їх запобіганню.[14][15]

Cisco FirePower як система оптимальної організації та захисту додатків[ред. | ред. код]

Cisco FirePower - це міжмережевий екран, який має набір функцій, які допомагають організувати безпеку додатків, застосувань, веб-застосувань та іншого софту. Cisco FirePower включає у себе такі сервіси:[16]

  • моніторинг та контроль за додатками;
  • превентивний захист від Інтернет-загроз;
  • аналітика та автоматизація;
  • VPN та політика аутентифікації;
  • захист від шкідливого ПЗ;
  • профілювання мережі

Cisco FirePower слідкує за мережевим середовищем, додатками, застосунками, трафіком і має багатий функціонал по обмеженню доступу до різного роду додатків, наприклад, Tor, Skype, Oracle та інші. Система не просто фільтрує трафік на мережевому рівні, але вона має можливість відстежувати поведінку недозволених додатків, а також забороняти використовувати функції, сервіси або додатки. Як приклад буде слугувати додаток Skype через який проводиться  спілкування, відеозв’язок, обмін повідомленнями. Cisco FirePower може обмежити повний список функцій або дозволити виконувати лише одну з них. Така реалізація є досить суттєвою, коли головною метою, щодо захисту інформації є обмеження права на одну або декілька функцій, в залежності від потреб безпеки. Також програма дозволяє проаналізувати та подивитися список усіх користувачів додатків у одній мережі. Контроль здійснюється за різного роду додатками: веб-додатки, клієнтські додатки, серверні додатки.[17] Окрім цих функцій, Cisco FirePower дозволяє бачити та контролювати користувачів відомих програм Proxy, Onion,  інші. Це може значно покращити рівень обслуговування додатків та запобігти неправомірним діям зі сторони користувача.

Проблеми забезпечення безпеки додатків[ред. | ред. код]

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

Відкритість коду: доступ до такого коду у додатку є у кожного, тобто туди можна вносити зміни і створювати свої додатки, змінювати функціонал, створювати уразливості та на базі них віруси.

Практики безпеки додатків[ред. | ред. код]

У таблиці наведені основні практики безпеки додатків та їх опис.[18]

Практика Опис
Оцінка ризиків Розуміння цінності того, що захищається, допоможе виправдати витрати на безпеку.
Створення політики безпеки Створення політики, яка чітко окреслює корпоративні правила, обов'язки та очікування.
Заходи фізичної безпеки Обмеження доступу до комунікаційних шаф, серверних кімнат, а також до систем пожежогасіння.
Ретельна перевірка персоналу У співробітників повинні бути належним чином вивчені анкетні дані та перевірені зв'язки.
Виконання і перевірка резервних копій Регулярне виконання резервного копіювання та перевірка можливості відновлення даних з них.
Підтримка виправлень і оновлень системи безпеки Регулярне оновлення операційних систем і програмного забезпечення серверів, клієнтів і мережевих пристроїв.
Використання засобів контролю доступу Налаштування ролі і рівні привілеїв користувачів, а також надійна аутентифікація.
Регулярна перевірка реагування на інциденти Сформована команда реагування на інциденти і перевірка сценаріїв аварійного реагування.
Впровадження інструменту моніторингу, аналізу та керування мережею Рішення для моніторингу безпеки, яке інтегрується з іншими технологіями.
Впровадження мережних пристроїв безпеки Використання нового покоління маршрутизаторів, фаєрволів та інших пристроїв безпеки.
Впровадження комплексного рішення безпеки кінцевої точки Використання на рівні підприємства антивірусних програм від усіх видів шкідливого ПЗ.
Навчання користувачів Ерудиція користувачів та співробітників у процедурах безпеки.
Шифрування даних Шифрування усіх конфіденційних даних компанії, включаючи електронну пошту.

Протоколи та стандарти захисту додатків[ред. | ред. код]

Див. також[ред. | ред. код]

Посилання[ред. | ред. код]

  1. What is OWASP, and Why it Matters for AppSec. Contrast Security. 23 February 2017. Процитовано 10 April 2018. 
  2. OWASP Top 10 - 2017. OWASP. 2017. Процитовано 10 April 2018. 
  3. "Platform Security Concepts", Simon Higginson.
  4. Application Security Framework. Архів оригіналу за March 29, 2009. 
  5. Securing Web Applications. Veracode. 
  6. Захист веб-застосунківків. Itbiz.ua. 25 October 2016. 
  7. Williams, Jeff (22 September 2015). Why It's Insane to Trust Static Analysis. DARKReading. Процитовано 10 April 2018. 
  8. а б Interactive Application Security Testing : Things to Know. TATA Cyber Security Community. June 9, 2016. 
  9. Williams, Jeff (2 July 2015). I Understand SAST and DAST But What is an IAST and Why Does it Matter?. Contrast Security. Процитовано 10 April 2018. 
  10. Abezgauz, Irene (February 17, 2014). Introduction to Interactive Application Security Testing. Quotium. 
  11. Rohr, Matthias (November 26, 2015). IAST: A New Approach For Agile Security Testing. Secodis. 
  12. Continuing Business with Malware Infected Customers. Gunter Ollmann. October 2008. 
  13. What is IAST? Interactive Application Security Testing. Veracode. 
  14. IT Glossary: Runtime Application Self-Protection. Gartner. 
  15. Feiman, Joseph (June 2012). Security Think Tank: RASP - A Must-Have Security Technology. Computer Weekly. 
  16. Cisco FirePOWER система сетевой безопасности(російською). Vtkt.ru. 
  17. Cisco Firepower NGFW Data Sheet. Cisco. 
  18. "Краткий справочник по кибербезопасности Cisco за 2016г.(російською)", Cisco.