Рух до DevSecOps вимагає ефективного та інтегрованого автоматизованого тестування безпеки. Вбудовування тестування безпеки в Agile процеси розробки представляє багато викликів, але також обіцяє значні переваги. Ця стаття описує як виклики, так і переваги, а також пропонує кращі практики, які допоможуть досягти DevSecOps швидше.
Основні тези:
- Основна мета автоматизації тестування безпеки – зробити виправлення дефектів безпеки рутинною частиною розробки програмного забезпечення.
- Ручне тестування безпеки не встигає за релізами в Agile-розробці.
- Впровадження автоматизованих інструментів тестування безпеки в наявні конвеєри розробки є найкращою практикою для того, щоб зробити безпеку частиною якості програмного забезпечення.
За останні роки розробка програмного забезпечення змінилася, щоб забезпечити безперервне надання нових функцій та вдосконалень у веб- та хмарних середовищах, які постійно змінюються. Але якщо команди розробників постійно випускають у виробництво новий код – часто з бібліотеками та фреймворками, які вони не створювали та не контролюють, – то вразливі місця в системі безпеки можуть легко стати доступними для використання. Оскільки зловмисники невпинно досліджують ці середовища, систематична інтеграція перевірок і практик безпеки в процеси DevOps протягом усього життєвого циклу додатків набуває першочергового значення.
У таких середовищах мануальне тестування безпеки є повільним і трудомістким процесом. Це створює перепони, збільшує “заборгованість з безпеки” з часом і підштовхує команди до запуску проблемного коду у виробництво. Оптимальним рішенням є повна автоматизація тестування безпеки, щоб проблеми з безпекою виявлялися раніше і розглядалися як будь-яка інша проблема в коді.
Що таке автоматизація тестування безпеки?
Автоматизація тестування безпеки передбачає впровадження інструментів та процесів для автоматичної перевірки програмного коду та те як він працює, щоб виявити потенційні проблеми, пов’язані з безпекою, якомога швидше після написання, інтеграції або запуску коду в тестовому середовищі. Як і у випадку з усіма автоматизованими інструментами, основна мета полягає в тому, щоб усунути людські помилки та зробити весь процес більш ефективним і дієвим.
Автоматизовані тести існують для виявлення широкого спектра проблем і вразливостей у всіх можливих точках атаки веб- або хмарного додатка, включаючи витоки пам’яті, невизначену поведінку, вразливості в коді JavaScript або веб-API, проблеми з автентифікацією та іншими засобами доступу, неправильно налаштовані конфігурації хмарних або серверних середовищ тощо. Найкращі з цих інструментів пропонують комплексне покриття, можуть запускатися за розкладом та/або щоразу, коли додається новий код, надають зручну та практичну інформацію для розробників для виправлення проблем і використовують передові технології для запобігання помилковим спрацьовуванням.
Види автоматизованого тестування безпеки
Автоматизація тестування пройшла довгий шлях від найперших інструментів типу lint, які автоматично виявляли програмні та стилістичні помилки в початковому коді. Наразі існує кілька підходів до автоматизації тестування безпеки. Найбільш відомі з них включають:
- Аналіз складу програмного забезпечення (SCA): Інструменти SCA ідентифікують відомі вразливі компоненти в інтегрованому відкритому коді, а також допомагають відстежувати якість коду та керувати відповідністю ліцензій.
- Статичне тестування безпеки додатків (SAST): Інструменти SAST безпосередньо аналізують початковий код у неробочому стані (до його компіляції), відмічають потенційні вразливості та рекомендують рішення. Оскільки початковий код має бути видимим, його іноді називають інструментом «білої скриньки».
- Динамічне тестування безпеки додатків (DAST): Інструменти DAST перевіряють додаток із зовнішнього боку під час його роботи, виявляючи потенційні вразливості в контексті. Той самий інструмент DAST можна використовувати для будь-якого вебдодатку, оскільки для DAST не важлива мова програмування. Технологія передбачає пошук можливостей для ін’єкцій та інших атак, спочатку створюючи карту додатка, а потім перевіряючи всі виявлені вектори атак.
- Інтерактивне тестування безпеки додатків (IAST): Інструменти IAST аналізують внутрішні процеси додатка під час його роботи (до або після випуску), надаючи відгуки про власний код, а також про пов’язані бібліотеки та фреймворки. Існують різні типи IAST, деякі з яких вимагають інструментування коду.
Впровадження кількох нових інструментів може спричинити складнощі та проблеми з управлінням. Саме через це деякі рішення для автоматизації тестування безпеки об’єднують кілька методів тестування в один пакет. Наприклад, комбінація DAST, IAST і SCA в Invicti. Залежно від підходу та можливостей розширення, інструменти безпеки можуть бути вбудовані в інтегровані середовища розробки (IDE) та наявні робочі процеси розробки.
Роль інтегрованого тестування безпеки в DevSecOps
Автоматизоване тестування безпеки має плавно інтегруватися в чинні робочі процеси розробки та тестування, щоб забезпечити своєчасні й актуальні інсайти в межах інструментів, які вже використовують розробники. Як зазначає спеціаліст Invicti Ден Мерфі: «Коли тести безпеки автоматизовані та виконуються при кожному внесенні змін, розробники можуть знаходити та виправляти проблеми набагато ефективніше.
Мета полягає в тому, щоб розглядати впровадження критичної вразливості безпеки, так само як зміну коду, яка викликає збої модульного тестування (unit-tests) – як щось, що швидко виправляється, без необхідності нарад і внутрішніх перевірок».
Досягнення цієї мети може вимагати більших змін у багатьох організаціях DevSecOps. Розробники, тестувальники, команди з експлуатації та фахівці з безпеки повинні бути заохочені до тісної співпраці у сприянні безперервній інтеграції та впровадженню безпечних оновлень коду.
Найкращі практики автоматизації тестування безпеки
Нижче наведено три важливі практики автоматизації тестування безпеки на всіх етапах життєвого циклу розробки програмного забезпечення (SDLC):
- Усунення хибнопозитивних спрацьовувань: Перш ніж впроваджувати інструменти, потрібно переконатися, що вони точні не лише теоретично, але й на практиці. Якщо інструментам не можна довіряти, вони не будуть використовуватися розробниками, що призведе до зниження їхньої цінності для безпеки.
- Тестування всіх можливих векторів атак: Максимізація охоплення тестів може включати захист даних, скрипти, керування сесіями, обробку помилок, сторонній/відкритий код і контроль доступу, включаючи проблемні внутрішні інтерфейси, які можуть створювати вразливості для внутрішніх загроз.
- Інтеграція із захистом хмарних навантажень: Зі збільшенням кількості хмарних додатків інтегрування тестування безпеки AppSec з можливостями захисту хмарних навантажень, такими як сканування образів контейнерів та інфраструктури як коду (IaC).
Переваги автоматизації безпеки додатків
Автоматизація тестування безпеки та DevSecOps постійно потребує нових способів вдосконалення та збільшення ефективності. Переваги використання автоматизованого тестування безпеки та DevSecOps включають:
- швидше розгортання нового коду та функцій;
- більшу повторюваність і послідовність, що допомагає масштабувати середовища;
- підвищену загальну якість коду;
- менший час простою;
- більшу продуктивність у середовищах з обмеженими ресурсами;
- знижений ризик безпеки;
Ці переваги є незамінними.







