SAST, DAST і IAST є трьома основними підходами до перевірки безпеки додатків, які легко можна переплутати.
Вони представляють цілий спектр методів тестування: від сканування лише запущеного додатка до виключно вихідного коду.
У цьому дописі розглянуто принцип роботи, плюси та мінуси, і різниця між цими термінами.
Динамічне тестування безпеки додатків (DAST)
Перевірка всього запущеного застосунку, API або вебсередовища та відстеження небезпечної поведінки стосується динамічного тестування безпеки додатків (DAST).
Цей підхід також називають black-box тестуванням, оскільки він не може «зазирнути» всередину застосунку.
DAST може проводитися вручну (тест на проникнення) або автоматично (сканування вразливостей).
Коли говорять про інструменти DAST, то зазвичай мають на увазі автоматизовані сканери на противагу тестуванню безпеки вручну, хоч вони часто є частиною інструментарію пентестерів.
Інструменти DAST
Вони працюють за принципом імітації дій користувачів, ботів і зовнішніх систем, що взаємодіють з вебсайтами та додатками. Сучасні сканери вразливостей мають вбудований веббраузер для завантаження сторінок, виконання тестів і відстеження реакцій, які вказують на вразливість.
Оскільки ці інструменти розроблені для автоматизованого та автономного тестування, вони мають справлятися з автентифікацією, CSRF-маркерами та іншими механізмами для одержання доступу та перевірки вебсторінок і кінцевих точок API.
З усіх підходів до тестування безпеки додатків найлегше почати саме з DAST. У простих випадках знадобиться лише ввести URL-адресу та натиснути кнопку для запуску сканування (однак правильні початкові налаштування та їх вдосконалення важливі для отримання більш точних результатів).
DAST також є найбільш універсальним підходом, адже якісне рішення здатне охоплювати як інформаційну безпеку (для сканування власної організації), так і безпеку застосунків (для перевірки будь-яких створених компанією вебдодатків).
Приклад: виявлення вразливості до SQL-ін’єкцій за допомогою DAST
Коли сканер повідомляє про вразливість до SQL-ін’єкцій, це означає, що він успішно змусив додаток виконати певні команди в базі даних.
У такому випадку інструмент зазвичай звітує про вразливу сторінку або кінцеву точку, а також про «атакований» параметр.
Сканери з автоматичними підтвердженнями, як-от Invicti Enterprise, можуть шукати та надавати докази вразливості: зазвичай це результат унікальної операції, виконаної базою даних.
Плюси DAST
- Виявлення вразливостей, що можна експлуатувати, а також неправильних конфігурацій і заголовків безпеки, та інших проблем, які можна помітити лише під час запуску.
- Сумісність із різними технологіями, що дозволяє тестувати застосунки та API незалежно від фреймворків і мов програмування.
- Не потребує вихідного коду для перевірки – може сканувати всі запущені компоненти незалежно від їх походження (включаючи динамічні залежності).
Мінуси DAST
- Необхідність запуску додатка для тестування (навіть якщо це лише мінімальний прототип).
- Охоплює тільки виконуваний під час перевірки код.
- Локалізація недоліків може бути менш точною, ніж в інших методів.
DAST в Invicti
Invicti – постачальник інструментів DAST, що надає AppSec-платформу на основі цього підходу.
Вона також включає виявлення активів із можливістю застосування IAST і динамічного SCA (аналізу програмних компонентів).
Invicti Enterprise має більш ніж десять років досвіду в усуненні багатьох типових недоліків DAST, зокрема за допомогою Proof-based сканування, що збільшує довіру до звітів про вразливості, забезпечуючи точну локалізацію проблем (часто аж до рядка коду, у поєднанні з Invicti IAST), і інтеграцію в робочі процеси розробки.
Статичне тестування безпеки додатків (SAST)
Статичне тестування безпеки додатків (SAST) полягає в аналізі вихідного коду застосунку для виявлення потенційно небезпечних конструкцій і потоків даних.
Цей підхід також називають white-box тестуванням, оскільки він має доступ до вмісту додатка.
SAST є найбільш поширеним методом перевірки безпеки під час розробки, і єдиним, який можна використовувати до запуску прототипу (тобто на ранніх етапах або під час роботи над ізольованими компонентами).
Інструменти SAST
Існує багато різних типів інструментів SAST, від простих плагінів для IDE (інтегроване середовище розробки) для попередження про незахищений синтаксис до автономних аналізаторів коду, що перевіряють репозиторії та імітують потоки даних.
Ці інструменти залежать від мови програмування, оскільки вони аналізують вихідний код. Тому для тестування багатомовної бази коду часто потрібно одразу декілька рішень.
Оскільки вони спрямовані виключно на код і не можуть враховувати наміри розробника, інструменти SAST, як правило, надають лише попередження та рекомендації, а не обов’язкові вказівки у звітах про вразливості.
Хоч це і загальноприйнятий недолік, він може призвести до ігнорування або вимкнення класів попереджень розробниками, адже більшість з них, зазвичай, є хибнопозитивними. Це створює ризики, оскільки таким чином можна пропустити справжню вразливість. Крім того, це робить результати SAST мало придатними для автоматизованої обробки.
Приклад: виявлення вразливості до SQL-ін’єкцій за допомогою SAST
Коли SAST повідомляє про таку вразливість, він попереджає про потенційно небезпечні вхідні дані під час створення запиту до бази даних.
Тобто інструмент знаходить код, який генерує SQL-запит, ідентифікує його вхідні дані та помічає, що вони не обробляються безпечно, приміром, за допомогою кодування, обходу ізолювання або просто запитів із вказаними параметрами.
Іншими словами, інструмент попереджає про потенційно небезпечний синтаксис, але не гарантує вразливість додатка.
Плюси SAST:
- Перевірка статичного коду без запуску програми.
- Просте підключення до IDE та інших інструментів у процесі розробки.
- Можливість перевірки всієї бази коду, навіть того, що на даний не використовується.
Мінуси SAST:
- Не виявляє динамічні вразливості, неправильні конфігурації або будь-які інші проблеми, що виникають під час роботи застосунку.
- Велика кількість помилкових спрацювань через відсутність перевірки можливості експлуатації вразливості.
- Тестування виключно власного коду.
- Потреба в окремих інструментах для різних мов програмування.
Аналіз програмних компонентів (SCA)
SCA – це ще один підхід до тестування безпеки, який працює на рівні коду. На відміну від SAST, він перевіряє не роботу коду, а його вміст.
Більшість інструментів SCA спрямовані на виявлення та звітування про open-source компоненти з відомими вразливостями. Деякі також перевіряють, чи використовуються менші фрагменти open-source коду в базі.
Інтерактивне тестування безпеки додатків (IAST)
Інструмент, що може «зазирнути» всередину запущеного застосунку відноситься до підходу інтерактивного тестування безпеки додатків (IAST).
Його також називають gray-box тестуванням (поєднання black-box і white-box, тобто DAST і SAST).
IAST зазвичай додає динамічну інформацію до аналізу коду або дані на рівні коду до динамічного тестування. В обох випадках він намагається усунути недоліки DAST і SAST.
Інструменти IAST
Вони дуже різноманітні: від плагінів та агентів сервера до автономних рішень для аналізу коду.
Деякі з них потребують інструментування коду, де вихідний код програми змінюється за допомогою команд відстеження, що надсилають інформацію про роботу застосунку до інструменту IAST.
Слово «інтерактивне» в терміні цього підходу може бути дещо оманливим, адже мало інструментів IAST дійсно взаємодіє із додатком.
Плюси та мінуси IAST
- На відміну від SAST, IAST може виявляти деякі динамічні проблеми безпеки та перевіряти можливість експлуатації вразливості.
- А порівняно з DAST, цей підхід може краще знаходити, а також демонструвати недоліки в коді додатка.
- Переваги та недоліки конкретного інструменту IAST подібні до DAST і SAST.
- Основним мінусом автономного IAST є обмежене охоплення коду.
Приклад: виявлення вразливості до SQL-ін’єкцій за допомогою IAST
IAST надає звіт про SQL-ін’єкцію, який містить інформацію зі сканера DAST і сервера. Отже, окрім конкретної сторінки, параметра та (у випадку з Invicti) даних підтвердження ризику експлуатації, він демонструє певний рядок коду, що потребує виправлення та додатковий доказ того, як тестове корисне навантаження (тобто введений запит) було прийнято та оброблено додатком.
IAST в Invicti
В Invicti компонент IAST був спеціально розроблений у якості доповнення та вдосконалення основного сканера DAST.
Він має справді інтерактивний підхід і встановлюється на вебсервері або сервері додатка, не потребуючи інструментування коду.
Агент працює в тандемі зі сканером вразливостей, надаючи йому дані про роботу застосунку та інформацію з сервера, як-от незв’язані файли, що не доступні кроулеру та динамічному SCA.
Наразі IAST підтримує такі серверні технології: PHP, Java, .NET, Node.js.
Самозахист програм під час виконання (RASP)
RASP – дещо розширена концепція IAST. Другий інструмент відстежує виконання застосунку та повідомляє про недоліки безпеки. А RASP робить майже те саме, за винятком того, що він весь час працює в продакшні, і замість перевірки результатів тестування він відстежує реальний трафік і операції для виявлення і спроб зупинки атак.
Який підхід обрати?
Кожен метод тестування має свої плюси та мінуси, що залежать від конкретного інструменту. Будь-яка комплексна програма безпеки додатків повинна включати декілька типів тестування для всебічного виявлення вразливостей якомога раніше в процесі розробки.
В ідеалі треба мати:
- DAST, найбільш універсальний підхід, для охоплення власного середовища додатків і включення перевірки в SDLC;
- SAST для виявлення проблем на рівні коду до їх потрапляння у збірки;
- SCA для гарантування сучасності та безпеки залежностей.
Для того, щоб іти в ногу зі швидкими процесами DevOps, потрібна інтеграція надійного та автоматизованого тестування безпеки в пайплайн CI/CD і наявні робочі процеси циклу розробки ПЗ. Invicti розширює основну функціональність DAST за допомогою IAST, що дозволяє досягати високого рівня точності, автоматизації та якості вказівок для виправлення недоліків.







