Автор: Данило Діденко, Security Support Engineer
В застарілих методах розробки програмного забезпечення, ще до настання так званої ери web-додатків, процес розробки зазвичай мав чіткий початок і кінець. Так званий «Waterfall» означав розділення проєкту на ізольовані фази, які йшли по черзі одна за одною. Це означало монолітні релізи, які могли випускатися місяцями або навіть роками. Процес односторонній і зумовлює неможливість повернення до попередньої стадії розробки при необхідності, це своєю чергою надзвичайно ускладнювало впровадження будь-яких змін.
Щоб зробити цикл розробки програмного забезпечення більш гнучким, були створені різноманітні ітераційні методології SDLC, які дозволяли доставляти та адаптувати програмне забезпечення набагато частіше.
Кульмінацією ітераційного підходу стали сучасні гнучкі методології з безперервною інтеграцією та безперервним розгортанням відомі як CI/CD.
Що таке CI/CD
В сучасному світі IT, CI/CD являє собою рекомендовану техніку для команд DevOps і найкращою практикою використання гнучкої (Agile) та безперервної (Continuous) методології розробки програмного забезпечення.
CI/CD (Continuous Integration/Continuous Delivery або Continuous Deployment) – це метод послідовної доставки та розгортання додатків клієнтам шляхом автоматизації етапів їх розробки. Безперервна інтеграція, безперервна доставка та безперервне розгортання є ключовими поняття конвеєра розробки програмного забезпечення.
Безперервна інтеграція – це процес, у якому розробники та учасники надсилають код на спільну платформу, наприклад таку як GitHub. Зазвичай, цей процес відбувається відносно часто, по декілька разів на день. Успішний CI передбачає регулярне створення, тестування та об’єднання нових змін коду програми в спільне сховище. Він пропонує розв’язання проблеми одночасної розробки занадто великої кількості потенційно несумісних гілок програми.
Процес безперервної доставки (CD) виконує багато функцій, але в основному він гарантує, що програмне забезпечення буде ефективно та вчасно випускатися за запитами клієнтів. Безперервна доставка зазвичай передбачає, що команда DevOps може розгорнути в робочому середовищі код зі змінами що вніс розробник, після того, як його буде автоматично перевірено на наявність помилок і надіслано в репозиторій. Цей процес розв’язує питання обмеженої видимості та комунікації між розробниками та бізнес-командами.
Процес безперервного розгортання лише трохи відрізняється від безперервної доставки. Безперервне розгортання – це процес автоматичного переміщення змін розробника зі сховища коду в живе середовище, де клієнти одразу зможуть їх використовувати. Разом ці процеси й називають «конвеєром CI/CD». Його перевагами є безперервна автоматизація та моніторинг процесу розробки протягом усього життєвого циклу програми, від етапів інтеграції та тестування – до доставки та розгортання.
Щоб забезпечити швидкість і гнучкість, необхідні у конвеєрі розробки, сьогодні, все більше підприємств переходять на хмарні рішення, або користуються інфраструктурою як послугу (IaaS).
Безпека CI/CD та технології пошуку вразливостей в коді
Безпека CI/CD – це набір практик, спрямованих на виявлення та усунення вразливостей без значного уповільнення основного процесу.
Хоча конвеєри CI/CD і підвищують ефективність розробки та доставки програмного забезпечення за допомогою автоматизації, основні етапи конвеєра не включають перевірки безпеки за замовчуванням. Проте, ця проблема вирішується якщо використовувати інструменти безпеки з підтримкою інтеграції в CI/CD.
Одним з найважливіших інструментів є сканер вразливостей, що буде неперервно проводити тестування безпечності коду протягом всього життєвого циклу розробки. Безперервний аналіз та перевірка безпеки допомагає стежити за кодом, який використовується та передається у конвеєрі, і є чудовим способом запобігти виникненню лазівок, якими можуть скористатися кіберзлочинці. Такий підхід знижує ризик проведення руйнівних кібератак на організацію шляхом використання вразливостей коду, що, своєю чергою, значно зменшує вірогідні збитки компанії та економить левову долю часу команди.

Для забезпечення якісного тестування вебінтерфейсів сучасні передові сканери використовують об’єднання методів динамічного та інтерактивного тестування (DAST+ IAST). При тому, можливість проводити перевірку методом IAST є одним із найважливіших параметрів сканера вразливостей на сьогодні.
IAST працює принципово інакше, ніж інструменти статичного чи динамічного тестування. Як приклад, «чистий» DAST, не може визначити вразливі рядки коду на відміну від інтерактивного сканування. В той самий час, IAST забезпечує значні переваги, збираючи інформацію про вразливості та вказівки щодо виправлення. Також його легко можна інтегрувати в робочі процеси CI/CD і DevOps навіть на ранній стадії SDLC. Такий підхід до безпеки значно зменшить шанси успішної кібератаки та загалом підвищать безпеку конвеєра CI/CD.
Про підхід «Зсув ліворуч» (Shift left)
Зсув ліворуч – це підхід, який переміщує тестування на більш ранній етап життєвого циклу розробки програмного забезпечення.
Якщо тестування безпеки відбувається, коли код вже готовий до випуску, це сильно ускладнює можливість повернення на крок назад щоб виправити проблему. До того ж на цьому етапі може бути вже надто пізно для швидкого розв’язання проблеми. Це може призвести до розмежування між службами безпеки та командою розробки, що сповільнює процес випуску оновлень та написання нових програм.
Вже відомий нам метод сканування IAST також є одним зі способів підходу «Shift left», який можна інтегрувати в CI/CD.
IAST ефективно зміщує тестування вліво, дозволяючи виявити проблеми на ранніх стадіях циклу розробки, зменшуючи витрати часу на виправлення. Щойно змінений код повторно компілюється, запущена програма повторно перевіряється, допомагаючи розробникам отримати актуальну інформацію про вразливі місця.

Поєднання динамічного та інтерактивного підходів до сканування виконує основну мету безпеки CI/CD – впроваджує безпеку як невіддільну частину життєвого циклу розробки програмного забезпечення.
Висновок
Сьогодні, більшість ІТ компаній займається розробкою власного програмного забезпечення. Ось чому організації, які здатні швидко поставляти своїм кінцевим клієнтам регулярні оновлення, використовуючи інноваційні методи безперервної інтеграції та розробки, мають вагому конкурентну перевагу перед іншими.
Забезпечення належного рівня безпеки є необхідною умовою успішного застосування конвеєра CI/CD. Впровадження якісних інструментів безпеки не має спричиняти зупинку основних процесів в конвеєрі. Одним із найважливіших заходів для досягнення цієї мети є перенесення процесу тестування безпеки на ранні етапи життєвого циклу розробки програмного забезпечення та використання прогресивних методів безперервного сканування додатків.
Впровадження конвеєра CI/CD у SDLC не тільки забезпечить зручну та легку взаємодію між командами DevSecOps, але й дозволить швидко знаходити та виправляти проблеми. У загальному підсумку, це дозволить компанії швидко адаптуватися та ефективно реагувати на нові загрози кібербезпеки.