ChatGPT від OpenAI з'явився восени минулого року, і з того часу вже багато написано про те, як використовувати його для розробки й тестування, зокрема для автоматизації тестів. Проте є ще один великий сегмент, в якому штучний інтелект може допомогти — тестування застосунків на вразливості. Невирішені питання безпеки в майбутньому можуть коштувати компанії-розробнику коштів, часу і витрачених зусиль.
Про те, як використовувати найпопулярніше надбання індустрії ШІ для тестування безпеки, розповів Head of QA у компанії EVO Свят Логін на мітапі DOU QA Community. Свят вже понад десять років працює в тестуванні й понад п'ять років займається тестуванням вразливостей на Web та Mob. Окрім цього, веде блог із тестування безпеки. Публікуємо конспект найважливішого з його виступу на мітапі.
Використання штучного інтелекту для тестування вразливостей — найкращий варіант для компаній, які бачать необхідність в тому, аби убезпечити свої продукти, проте не мають достатньо бюджету для найму пентестерів. Компаніям, для яких безпека є одним з найважливіших пріоритетів, краще обрати послуги тестувальника, або навіть команди пентестерів, аніж залучати ChatGPT. У будь-якому випадку штучний інтелект стане в пригоді всім. Чому? Тому що нові вразливості з'являються щодня, і навіть найдосвідченіший тестувальник може не знати, як з ними обходитись.
Проблеми тестувальників, які може вирішити ChatGPT
Нестача досвіду у сфері тестування на проникнення. Звичайні QA перевіряють все на предмет функціональності. Нині, під час війни, ворог використовує інтернет для завдання ударів також. Саме тому тестувальникам варто розібратися в тому, як шукати вразливості та реалізовувати тестування безпеки.
Відсутність чіткого флоу. Штучний інтелект може швидко надати покроковий план того, як варто тестувату ту чи іншу вразливість.
Брак часу. Навіть досвідчені пентестери використовують ChatGPT, тому що він допомагає суттєво оптимізувати роботу, беручи на себе рутинні завдання. Він може реалізувати навіть написання тест-кейсів та чеклістів (але тут варто перевірити, чи все вірно він зробив).
Критичні вразливості за OWASP
OWASP (Open Web Application Security Project) — це міжнародна некомерційна компанія, яка займається промотуванням безпеки вебзастосунків. OWASP створює велику кількість ґайдлайнів із безпеки, як для вебу, так і для мобайлу. OWASP Top-10 — це світова методологія оцінки вразливостей вебдодатків, яка містить десять найбільш розповсюджених вразливостей та методи їх визначення.
На малюнку вище ми бачимо порівняння OWASP Top-10 за 2017 та 2021 рік. Насправді вразливості залишилися ті ж самі, при цьому деінде змінилася їх пріоритезація та повна назва. Якщо ви лише починаєте знайомитись із тестуванням вразливостей, вам допоможе базове флоу для пошуку вразливостей з OWASP Top-10 за допомогою ChatGPT.
Штучний інтелект і вразливості
Для пошуку вразливостей можна використовувати як платну, так і безоплатну версії ChatGPT. Різниця між ними невелика: платна дещо швидше генерує відповіді та необмежена в обсязі написаного. Безоплатна генерує не більше ніж 2048 символів за одну відповідь. Окрім цього, платну можна інтегрувати з різними додатками, зокрема з Postman.
Як правильно користуватися чатом?
Визначаємо для нього певну роль. Так він буде шукати й аналізувати інформацію вузьконаправлено, з точки зору тої ролі, яку ми йому запропонували. Якщо цього не зробити, він буде шукати інформацію у всій мережі, а це означає дуже абстрактну відповідь.
Пишемо завдання.
Вказуємо уточнення до завдання. Тут варто згадати всі додаткові уточнення, які можуть бути — це зробить відповідь максимально релевантною саме для вашого кейса.
Для питань з різних тематик створюємо різні кімнати. З кожним питанням ChatGPT навчається, і формує свою думку на основі попередніх питань, що ви ставили. Якщо ваші питання стосуються різних сфер, наприклад, тестування безпеки й менеджменту, то варто ставити їх в окремих кімнатах, аби не отримати заплутану відповідь.
Типи вразливостей
Вразливості мережі й бібліотек
Вони виникають у випадку неправильно налаштованих серверів та використання бібліотек від розробників, які можуть містити вразливі компоненти. Якщо така бібліотека використовується в додатку, і лише один компонент вразливий — вразливим стає весь додаток. Через таку вразливість був розповсюджений
вірус notPetya у 2017 році.
Як це працює? У нас є вебзастосунок, який містить бекенд, фронтенд, базу даних та мікросервіси. У мікросервісів можуть бути також свої фреймворки, за якими вони працюють. В якийсь момент ми вирішуємо, що ця версія нашого застосунку застаріла, ми хочемо переїхати на нову, а може на навіть і на нову базу даних. Тож ми переїжджаємо, але на те, щоб забрати з інтернету стару базу даних, не маємо часу або грошей. Якщо зловмисник просканує наш додаток, і знайде база даних, то він матиме змогу без перешкод залізти в неї exploit.
Така сама схема працює і з бекендом, і з мікросервісами. Тому обов'язково потрібно видаляти ваші застарілі сервіси, бібліотеки й бази даних.
Як має виглядати запит для ChatGPT для пошуку вразливостей цього типу.
У інструменту nmap є різноманітні плагіни, і ви навіть можете попросити у ChatGPT, аби він сказав, як користуватися певним плагіном за допомогою nmap. Він пам'ятає тему про яку ви говорили минулого разу, тому одразу напише, що вам робити з плагіном.
Веб-вразливості
Найрозповсюдженіші вразливості типу А3: Cross-Site Scripting. 90% сайтів мають таку проблему. Це вразливість, яка дозволяє стороннім користувачам додавати сторонній js код у ваш додаток. Якщо у вашому вебдодатку немає екранування символів, які вводяться звичайними користувачами, то саме це може бути джерелом вразливості. Зловмисник може написати шматок кода на js, закинути вам в input, зберегти в базі даних, і потім зламувати ваших користувачів. За допомогою XSS він може вкрасти cookies, змінювати ваш сайт, встановлювати keylogger (програма, яка допомагає бачити, що інші користувачі набирають на клавіатурі, до того, як це відправлено на сайт). Також він матиме змогу додавати фішингові поп-апи, і за їх допомогою діставати дані користувачів.
Як сформувати запит для цієї вразливості?
Вразливості логіки
Ці вразливості з’являються через прагнення UI/UX-дизайнерів та продактів зробити найзручніший та найпростіший для користувача продукт. Часто для цього нехтують безпекою. Це призводить до того, що з'являються вразливості системи, через які потім можна виводити кошти, обманювати користувачів тощо.
Як протестувати цю вразливість? Запит для чату має бути наступний:
Comments