"Хочешь SDLC? Научись программировать!", Иван Ёлкин, Qiwi

"Хочешь SDLC? Научись программировать!", Иван Ёлкин, Qiwi

OWASP Russia MeetUp #7

47a3212bc9721c62f1135ead56569f17?s=128

OWASP Moscow

March 05, 2018
Tweet

Transcript

  1. Хочешь SDLC ? Научись программировать ! Иван Елкин Applicaton Security

    Lead QIWI
  2. ~$ whoami - QIWI Applicaton Security Lead - Full Stack

    Developer - Vulners.com co-founder - JBFC Member
  3. Простые шаги для создания SDL КУПИТЬ SAST СКАНЕР НАНЯТЬ «АДМИНИСТРАТОРА»

    СКАНЕРА СКАНИРОВАТЬ ПРОЕКТЫ КАЖДЫЙ РЕЛИЗ Сканеров в мире с каждым днем все больше. SAST сканеры «снова» становятся популярны среди вендоров. Информационная безопасность, хакеры и вот это все становится действительно популярным. Нанять человека, умеющего нажимать нужные кнопки – не проблема. Многие сканеры имеют интеграции с CI системами. Проблем не должно возникнуть.
  4. … но как это было на самом деле …

  5. Security инструменты никогда не работают из коробки

  6. Минимальные действия, чтобы просто запустить сам сканер - Project Dependency

    (maven, npm именно наших библиотек) - Dependency Injecton - Специфичные правила входных точек - Баги в самом сканере П О Ч И Н И Т Ь С В Е Ж Е К У П Л Е Н Н Ы Й С К А Н Е Р - Не всегда встроенные интеграции (если они есть) заработают именно для вашей системы Н А П И С АТ Ь C I А Д А П Т Е Р
  7. Сначала было норм (полу-ручной режим) - Всего 30 проектов с

    2х недельным релизным циклом - “Удобные” почтовые рассылки о сканах - Приходит тикет от QA на пентест, проверяем старые сканы, руками запускаем новые, чекаем бизнес-логику - Все крутится вокруг сканера (убираем false positve)
  8. В итоге через год Business QA Support ISEC TASK Refactoring

    Testng Regress testng Release Bug Development Functonal bug New TASK Scanner ISEC SDLC
  9. И тут... никогда не было, и вот случилось

  10. Появились они R A P I D A . R

    U C O N TA C T- S Y S . C O M К А Р ТА РА С С Р О Ч К И M I C R O S E R V I C E S
  11. Следствие - 300+ проектов - Пентест каждого релиза невозможен -

    QA забывали создавать тикеты - Забыли включить автосканы на какие-то проекты - Все наступили на запутались в микросервисах - На Bugbounty сдали домен, но чей это сервис?? - И Кто вообще придумал присылать весь этот спам, который никто не читает??
  12. None
  13. А вот было бы здорово сделать такую штуку Которая бы

    показывала все сервера привязанные к домену... Нажимаешь на имя домена - она начинает сканить SAST, DAST, IAST, все библиотеки в проектах показывает, там где стратс2 уязвимый, где заголовки забыли, где nginx неверно сконфигурирован... И вообще сама бы делала security тесты и иногда бы сообщала, что что-то не так
  14. “... И назовем его NESSUS!”

  15. But his name…

  16. M U LT I S C A N N E

    R O R C H E S T R AT I O N S E R V I C E I N V E N T O R Y Карта доменов, хостов, и проектов E A S Y- S C R I P TA B L E Легко расширяется за счет скриптов R E A LT I M E S TAT I S T I C S Постоянно обновляемая информация о статусе WAF, Nginx, DNS, Безопасности SCAN CENTER Multtool for SAST integraton Сотни сканеров в одном приложении
  17. None
  18. Объединение трех сущностей - Domain - Project - Host

  19. Почему именно так? - Есть проекты, но где они крутятся?

    - Есть домены, но какие проекты в них входят? (привет consul) - Есть домен, который ведет на абсолютно другой хост...
  20. Все строится на паттернах composite / decorator / adapter Они

    объединяют общую модель с однотипными интерфейсами сканеров/заданий, дополненные адаптерами источников данных Instance Project Domain Host CX scan Burp scan WP scan Nginx confg scan Nmap scan Celery Tasks Nmap Nginx confg Burp WPScan
  21. Обещал упомянуть BountyHunters... Теперь можно забыть про very critical vulnerability

    - Забытые заголовки - Не обновленный WP - X-frame-Optons … Конечно Who Cares, but ...
  22. Любой новый появившийся эксплойт можно прикрутить и прогнать по всем

    сервисам. По-факту быстрее чем сами Bounty Hunters
  23. Code Listng class WPScan(Scan): domain = ForeignKey('Domain', related_name='wpscan', default='', on_delete=CASCADE)

    class WPScanTask(Task): def __init__(self, name=''): self.name = sanitie_domain_name(name) self.result = '' def run(self): cmdExecute('docker run wpscanteam/wpscan --url {0}'.format(self.name), self.task_callback) def task_callback(self): domain = Domain.objects.get(name=self.name) wp,_ = WPScan.objects.get_or_create(domain=domain) wp.raw_result=self.result wp.save()
  24. export default class Nmap extends Scan { statc propTypes =

    { report: PropTypes.object }; statc defaultProps = { report: {} }; render() { /** * Your implementaton ere */ } } Для красоты и конкретных реализаций сканеров, можно описать ReactJS класс
  25. А еще у нас есть миньон!

  26. Scan Center Minion Бегает между сервисами и проверяет безопасность релизов

  27. На каждый релиз создается Fork тикета в пространство ISEC Scan

    Center Minion Миньон парсит текущую версию билда Вынимает проект, привязанный к билду Проверяет последние сканы и отписывается об этом в тикете При необходимости запускает новый скан F O R K P A R S E E X T R A C T S E A R C H R E S T A R T
  28. В планах Д О Б А В И Т Ь

    1 0 0 5 0 0 Н О В Ы Х С К А Н Е Р О В Создание скрипта для Task-а занимает меньше часа. Любой Junior сможет засекьюрить систему даже коробочными решениями. В Ы В Е С Т И В O P E N S O U R C E Интерфейсы и модели оркестратора отделены от реализации. Реализация может быть сильно завязана на структуру системы.
  29. Контакты v a n k y v e r @

    v u l n e r s . c o m @ v a n k y v 3 r i . e l k i n @ q i w i . c o m Спасибо!