Уразливості програм - помилки допущені програмістами на етапі розробки програмного забезпечення. Це дозволяє зловмисникам отримати незаконний доступ до функцій програми або зберігаються в ній даних. Вони можуть з'явитися на будь-якому етапі написання софта, від проектування до випуску готового продукту. У ряді випадків програмісти можуть навмисне залишити певні лазівки для проведення налагодження і налаштування, які також можуть розглядатися в якості бекдоров або декларованих можливостей .
Виникнення вразливостей може обумовлюватися застосуванням засобів розробки різного походження, які збільшують ризик появи в програмному коді дефектів диверсійного типу.
Уразливості з'являються внаслідок використання в складі ПО сторонніх компонентів або вільно розповсюджуваного програмного коду (open source). Сторонній код часто використовується "як є" без ретельного аналізу і тестування на безпеку.
Не варто виключати наявність в команді програмістів інсайдерів, які навмисно вносять в написаний софт додаткові функції або елементи.
Класифікація вразливостей програм
Уразливості виникають в результаті помилок, що виникли на етапі проектування або написання програмного коду.
Залежно від стадії появи цей вид погроз ділиться на уразливості проектування, реалізації та конфігурації.
- Помилки, допущені при проектуванні, найскладніше виявити і усунути. Це неточності алгоритмів, закладки, неузгодженості в інтерфейсі між модулями і в протоколах взаємодії з апаратною частиною, впровадження неоптимальні технологій. Їх усунення є досить трудомістким процесом. Можуть проявитися при перевищенні передбаченого трафіку або підключенні великої кількості додаткового обладнання, що ускладнює забезпечення необхідного рівня безпеки і веде до виникнення шляхів обходу брандмауера.
- Уразливості другого типу складаються в появі помилок на етапі впровадження в ПО алгоритмів безпеки. Це некоректна організація обчислювального процесу, синтаксичні та логічні. При цьому є ризик, що це призведе до переповнення буфера або появи неполадок іншого роду. Їх виявлення займає багато часу. Виправляються шляхом виправлення певних ділянок машинного коду.
- помилки конфігурації апаратної частини та комплектуючі, ПЗ зустрічаються досить часто. Це відсутність тестів на випробування додаткових функцій софта або баги в них. До цієї категорії також належать занадто прості паролі і залишені облікові записи за замовчуванням.
Згідно статистики найчастіше уразливості знаходять в продуктах компанії Adobe Flash Player, Microsoft Internet Explorer, Google Chrome і Mozilla Firefox. Детально з переліком вразливих пріложенійви можете ознайомитись в матеріалі " Найбільш уразливі додатки і операційні системи 2015 року ".
Ризики використання вразливих програм
Програми в яких знаходять найбільше число вразливостей встановлені практично на всіх комп'ютерах (наприклад, Adobe Flash Player). З боку кіберзлочинців є пряма зацікавленість в пошуку подібних багів і написанні для їх експлуатації.
З огляду на, що з моменту виявлення уразливості і до моменту виходу патча, проходить досить багато часу, то можливостей заразити комп'ютерні системи більш ніж достатньо. При цьому користувачеві досить лише один раз відкрити, наприклад, шкідливий PDF-файл з експлойтів, після чого зловмисники отримають доступ до даних.
Зараження відбувається за наступним алгоритмом:
Дослідження проводяться різними компаніями (Лабораторія Касперського, Positive Technologies) показують, що уразливості є практично в будь-якому додатку, включаючи антивіруси. Тому ймовірність встановити містить баги софт досить висока.
Щоб мінімізувати кількість багів в ПО необхідно:
- Використовувати функції антивірусних продуктів дозволяють виконувати пошук багів і при необхідності оновлювати ПО.
- SDL (Security Development Lifecycle). Технологія SDL використовується для зниження числа багів в додатках на етапі розробки. Так при проектуванні ПО, фахівці ІБ і програмісти моделюють кіберзагрози з метою пошуках уразливих місць програмного забезпечення. У процесі програмування, в процес пошуку уязівімостей включаються автоматичні засоби, а при їх виявленні відразу ж повідомляють про це. Розробники прагнуть значно обмежити функції доступні неперевіреними користувачам, це сприяє зменшенню поверхні атаки.
Щоб мінімізувати вплив багів, необхідно виконувати деякі правила:
- Оперативно встановлювати випускаються розробниками заплатки для додатків або включити автоматичний режим оновлення.
- По можливості не встановлювати сумнівний софт, чиє якість і технічна підтримка викликає питання.
- Використовувати спеціальні сканери вразливостей.