Напрями, вразливості та командна робота: галузь Cybersecurity з погляду розробки
Привіт! Мене звати Олександр Максімов, і я вже багато років працюю Software Developer у компанії Apriorit.
Сьогодні хочу трохи поговорити про Cybersecurity, як воно виглядає у розробці. Формально тема Cybersecurity була актуальна завжди, але особливого розвитку вона досягла в останні роки з остаточною цифровізацією нашого життя та водночас зі зростанням рівня загроз і потенційно заподіяної шкоди.
Галузь Cybersecurity є дуже багатогранною. Сюди належить захист даних, контроль доступу, виявлення загроз та реакція на них, виявлення порушень безпеки, розслідування кіберзлочинності (і не тільки) та багато-багато іншого. Завдяки багатогранності галузі в ній залучено багато спеціалістів різного профілю. Та і сам термін Cybersecurity дуже широкий: охоплює процеси від написання коду до планування стратегій реакції на порушення безпеки, і може стосуватись як розробки, так і тестування; як підходів, так і цілих продуктів.
Cybersecurity — напрями
Формально Cybersecurity можна поділити на декілька основних напрямів. Цей список є далеко не повним, але дає базове уявлення про галузь. Отже, маємо такі види продуктів:
- SIEM (Security information and event management) — цілий клас продуктів, які призначені для управління безпекою та реакцією на події, що стосуються безпеки. Основна функція — збір та аналіз різноманітної інформації з метою виявлення безпекових ризиків та реакція на них. Або ж простими словами — системи моніторингу (переважно).
- DLP (Data Leak Prevention) — захист від витоку даних. Рідко буває окремим продуктом, частіше виступає як складова іншого, більш загального продукту. Функціонал забезпечує захист від витоку специфічного виду даних (персональних, фінансових, секретних тощо) і для цього застосовується досить широкий спектр інструментів, бо існує чимало потенційних шляхів витоку.
- Forensic — це категорія продуктів, що використовуються для розслідування злочинів, фактично — інструменти криміналістів. За допомогою них проводиться збір та аналіз будь-якої інформації, що може бути корисною в рамках розслідувань. До них належать системи зберігання особових справ, аналізу даних з телефонів та комп’ютерів підозрюваних, системи комплексного аналізу й моделювання подій та багато інших, часто дуже спеціалізованих продуктів.
- IDPS (Intrusion Detection and Prevention System) — це продукти, які допомагають виявити та запобігти сторонньому втручанню в роботу комп’ютерних систем. Причому в автоматичному режимі. Часто такі системи розраховані не тільки на виявлення відомих загроз, а і невідомих. Що робить такі системи доволі складними.
- AV — це категорія всім відомих антивірусів. До них належать як банальний сигнатурний аналіз, так і всі інші рівні захисту — аналіз коду, пам’яті, сендбокси та інше.
- Backup systems — через розповсюдження хмарних сервісів та запровадження опції власного бекапу практично всюди запит на такі продукти потроху скорочується. Наявні механізми захисту в хмарних сервісах досить надійно захищають дані від більшості загроз, поширених в минулому. Тому цей сегмент став специфічнішим, орієнтованим на окремі кейси.
Cybersecurity-розробка
Потроху рухаємось від загальної теорії до реальних речей. Як же, власне, виглядає розробка в сфері Cybersecurity? За великим рахунком робота поділяється за всім відомим принципом. 80% задач мало чим відрізняється від розробки в будь-якій іншій сфері — ті самі процеси, кодинг та багфікс. А от 20% — то специфічне, і ці 20% — то 80% складності. Причому специфіка стосується всіх етапів розробки — від бізнес-аналізу до пошуку причин якоїсь помилки.
Не варто думати, що Cybersecurity — це лише про розробників або про специфічні види продуктів. Саме від BA залежить, які правила валідації пароля будуть використані, а від менеджера — чи варто витрачати час на реалізацію 2fa.
Бекенд-розробник має розуміти, які хеш-алгоритми є застарілими та що означає вираз «солити хеші», фронт — пам’ятати про різного роду атаки. QA — знати можливі місця вразливостей та під час пермісій перевірити не лише UI, а й API. А DevOps, що розгортає оточення, також має потурбуватись про бекапи, різні права доступу та захист інфраструктури. Тобто Cybersecurity повсюди.
Складність розробки зазвичай обумовлена тим, що часто ключові елементи функціональності робляться вперше і ніхто до цього такого не робив. А якщо і робив, то нікому не розповідає, як :) Тому розробка дуже тісно пов’язана з ресьорчем та тим, що зветься низькорівневим або системним програмуванням. І питання зазвичай — не «що треба зробити?», а «як взагалі це зробити».
Це накладає ефект навіть на процеси: часто до того, як будуть сформовані конкретні вимоги до функціоналу, бізнес-аналітик робить масштабний ресьорч, у якому вигляді це можливо реалізувати. І сама робота аналітика доволі сильно прив’язана до методів реалізації. Аналогічно й процеси тестування, які потребують низькорівневих і досить специфічних знань для того, щоб коректно побудувати стратегію тестування.
Тому розробка в Cybersecurity означає, перш за все, бути першопроходцем. Що BA, що QA, що Dev постійно стикаються з нетиповими задачами.
На практиці
Тепер, коли у нас є базове уявлення про те, що воно таке — Cybersecurity-галузь, та ми приблизно розуміємо підходи до розробки, розглянемо приклади, з якими я стикався на власному досвіді.
Для наочності візьмемо просту для розуміння функціональність і розглянемо створення forensic продукту для аналізу видаленої інформації на жорсткому диску.
Задача реалізується за типовим для Cybersecurity процесом.
- Спочатку формуються базові вимоги, бо багато деталей функціоналу залежить від того, як вони можуть бути реалізовані в принципі. У нашому випадку — як саме будуть виглядати відновлені файли, їхня цілісність, процес та швидкість відновлення.
- Далі стартує процес ресьорчу, бо далеко не всі файлові системи відкриті та документовані. Процес пошуку охоплює роботу з наявною документацією файлових систем, бінарними дампами дисків та вивчення наявних компонентів.
- Наступний етап — написання POC (proof-of-concept), який дозволяє виявити нереалізовані моменти та перевірити функціональність на ранніх етапах. Паралельно триває уточнення вимог, бо горизонт ресьорчу не завжди зрозумілий. Наприклад, недостатньо знайти окремі видалені блоки на умовні 4 КБ, треба їх ще правильно проаналізувати. Причому зробити це за припустимий час. Цей етап дуже важливий, адже від нього залежить результат. Формально — задача одна, а ефективність і конкурентність рішення абсолютно різна.
- Визначення необхідних та достатніх критеріїв, яких реально можна досягти. У Cybersecurity цей етап часто наступає вже після створення базової версії POC, що значно відрізняється від типових процесів розробки. Оскільки продукт належить до категорії Forensic — будь-який уривок може бути важливим і тоді фокус скеровується на максимально повне відновлення виявлених видалених даних. Також для Forensic та інших Recovery-продуктів характерна робота з великою кількістю даних. А це завжди додаткові проблеми та ризики як на фронтенді (або UI), так і на бекенді.
- POC проходить тестування на рівні QA, тобто набагато раніше, ніж зазвичай. Це необхідно для якісного виявлення «білих плям» на максимально ранніх етапах. Бо недоресьорчені нюанси, виявлені на пізніх етапах, можуть дуже дорого коштувати й фактично докорінно змінити всю концепцію фічі.
З погляду менеджменту ці етапи є найризикованішими. Бо, по-перше, вони мають достатньо розмиті строки. По-друге, на ранніх етапах часто немає чітко бачення фінального рішення і впевненості, що це взагалі можливо. Це вимагає окремих підходів в плануванні та управлінні ризиками.
Ну і лише після реалізації ядра функціонала, умовно кажучи, SDK, починається вже більш-менш типова робота розробника.
Cybersecurity для не Cybersecurity-продукту
Наразі ми розглянули типовий Cybersecurity-продукт і особливості його розробки. Проте ретельно продумувати Cybersecurity-складову варто у будь-якому продукті. Тож розглянемо практичні рекомендації, що стосуються кожного розробника. Так би мовити, Cybersecurity для всіх.
Основні напрями тут — це захист даних користувачів, захист від несанкціонованого доступу та зміни/пошкодження даних і захист інфраструктури.
- Найголовніше — стежити за регулярними оновленнями third-party компонентів та оточення. Як це не дивно, але за проведення security-аудитів найперша вразливість — це використання компонентів, що мають відомі (!) вразливості, або ж елементів інфраструктури з відомими вразливостями.
- Наступний важливий елемент — це захист інфраструктури. Потрібно завжди враховувати best-practice під час планування та розгортання інфраструктури в хмарі. Цих рекомендацій дуже багато — починаючи від різних акаунтів з різним рівнем доступу і завершуючи методикою зберігання кредлів доступу до API сервісів.
- Варто пам’ятати, що потрібно завжди надавати даних не більше, ніж мінімально необхідно. Особливо актуально для API. Тобто ніякого прямого мапінгу таблиць з бази в респонси (що є досить поширеною практикою, наприклад, через OData без DTO). Це дозволяє отримати значно більше інформації про систему й ускладнює контроль доступу до неї, підвищуючи ризик витоку важливих даних або полегшуючи потенційний злам.
- Потрібно розуміти основні вразливості та види захисту від атак, актуальні для вашого стеку. Наведу типові розповсюджені приклади:
- SQL injections;
- контроль доступу;
- слабкі хеші;
- переповнення буферу;
- брутфорс;
- XSS та CSRF;
- відсутність криптування;
- використання «вічних» токенів доступу;
- та багато іншого.
Для формування власного релевантного списку рекомендую звіритися з OWASP Top 10 — це визнана світова методологія оцінки вразливостей, що регулярно оновлюється.
Що далі
Cybersecurity в сучасному світі стосується кожного, хто хоч якось взаємодіє з комп’ютерними системами. І що далі, то більше точок взаємодії для кожної окремо взятої людини. Нехтування питаннями безпеки може вилитись в досить болючі втрати та проблеми навіть в тих сферах, які, здавалось б, дуже далекі від Cybersecurity.
Продукти, спеціалізовані на Cybersecurity, допомагають забезпечити цю security мінімальними зусиллями та знаннями. Тому ця галузь стає все актуальнішою. Особливо у сучасному світі, де порушення безпеки деяких систем може загрожувати мільйонам людей.
Ще більше актуальності це набуває на тлі зростання кіберзагроз, які в парі зі все більшою залежністю від хмарних сервісів виводять Cybersecurity в топ трендів.
- Слова «кібервійна» та «кіберзлочинність» стали доволі часто зустрічатись у світових ЗМІ. Україна є яскравим прикладом як реалізованих атак, так і вдало знешкоджених. Актуальними стають спеціалізовані продукти та рішення, розроблені саме для таких випадків. Починаючи від умовно банального захисту від DDoS, закінчуючи комплексними IDPS- та DLP-системами.
- Ще один тренд, який стає світовим, — це цифровізація послуг та цифрове підтвердження особистості. Разом з величезними перевагами, це додає масштабної роботи з розробки та захисту таких рішень. Фактично будь-який цифровий сервіс — це про захист даних, шифрування, валідацію та стійкість до втручання. Тобто Сybersecurity. Причому на рівні, де будь-яка помилка дуже дорого коштуватиме. Що задає відповідний рівень вимог до процесу розробки таких продуктів і сервісів.
- Варто згадати ще повсюдне розповсюдження віддаленої роботи, яке радикально збільшило попит на Cybersecurity-рішення. Хоча цей тренд розпочався ще чотири роки тому, його ефект досі відчувається. Наразі уже сформовані більш-менш стандартні підходи та рекомендації, які суттєво розширили ринок відповідних рішень — як-то VPN, DLP, IAM (Identity & Access Management).
- Криптовалюти вже давно існують в інфопросторі, але вони все ще належать до трендових вразливостей. Злами криптобірж та втрата величезних сум коштів роблять тему захисту в криптовалютній сфері неймовірно актуальною. Фактично рівень безпеки будь-якої біржі — це перше, чим цікавляться клієнти. Відповідно, Cybersecurity-рішення у цій сфері стають складнішими і досконалішими.
- І куди ж без ШІ. Цей тренд не оминув і Cybersecurity-галузь. Використовується він в першу чергу для раннього виявлення різноманітних загроз, аналізу великих неструктурованих масивів даних та виявлення нетипових активностей в SIEM- та IDPS-системах.
Висновок
Роль Cybersecurity постійно зростає, як і ринок відповідних продуктів. До того ж розуміння вразливостей та методів захисту від них стає практично обов’язковою вимогою під час розробки майже будь-якого продукту. А робота в сфері Cybersecurity все затребуваніша і цікавіша.
2 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарів