Три способи знаходити вразливості руками людей - з різними цілями, вартістю й зрілістю, яку вони вимагають від команди.
Пентест (тестування на проникнення):
- замовлена перевірка конкретної системи командою спеціалістів у визначені терміни й межі (scope);
- результат - звіт з вразливостями, їх серйозністю й рекомендаціями;
- плюси: глибина, перевірка бізнес-логіки, передбачувана вартість, звіт для аудиторів і клієнтів (часто вимога стандартів і корпоративних замовників);
- мінуси: знімок на конкретний момент - наступний реліз може додати нові вразливості; результат залежить від кваліфікації конкретної команди.
VDP (Vulnerability Disclosure Policy, політика розкриття вразливостей):
- публічна політика: як повідомити про вразливість, що дозволено досліджувати, що ні, як ви реагуєте і що не будете переслідувати дослідників, які діяли добросовісно;
- без грошової винагороди (подяка, згадка в зали слави);
- мінімальна вимога для будь-якої організації - разом із security.txt. Без неї люди, що випадково знайшли проблему, не знають, куди писати, і бояться юридичних наслідків.
Bug bounty:
- VDP з грошовими винагородами залежно від серйозності, зазвичай через платформи (HackerOne, Bugcrowd, Intigriti);
- безперервна перевірка багатьма дослідниками з різними навичками;
- плюси: платите за результат, покриття нових релізів;
- мінуси: потік звітів, частина з яких - дублікати й низькоякісні знахідки; потрібна команда, що швидко розбирає звіти й виправляє проблеми. Запуск bug bounty без зрілих процесів обертається завалом звітів і поганою репутацією серед дослідників.
Рекомендована послідовність зрілості:
- базова гігієна й автоматизовані перевірки (SAST, SCA, DAST);
- VDP і security.txt - канал для повідомлень;
- пентест перед важливими релізами й регулярно (раз на рік чи після великих змін);
- приватний bug bounty (запрошені дослідники), потім публічний - коли процес обробки налагоджено.
Що важливо в будь-якому варіанті:
- чіткі межі: що можна тестувати (staging чи продакшен), що заборонено (DoS, соціальна інженерія, доступ до даних реальних користувачів);
- терміни реакції: підтвердження отримання, оцінка, виправлення, повідомлення досліднику;
- координоване розкриття: публікація подробиць - після виправлення, за домовленістю з дослідником.