Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

OWASP Russia MeetUp #7

OWASP Moscow

March 05, 2018
Tweet

More Decks by OWASP Moscow

Other Decks in Technology

Transcript

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

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

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

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

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

    Testng Regress testng Release Bug Development Functonal bug New TASK Scanner ISEC SDLC
  6. Появились они 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
  7. Следствие - 300+ проектов - Пентест каждого релиза невозможен -

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

    показывала все сервера привязанные к домену... Нажимаешь на имя домена - она начинает сканить SAST, DAST, IAST, все библиотеки в проектах показывает, там где стратс2 уязвимый, где заголовки забыли, где nginx неверно сконфигурирован... И вообще сама бы делала security тесты и иногда бы сообщала, что что-то не так
  9. 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 Сотни сканеров в одном приложении
  10. Почему именно так? - Есть проекты, но где они крутятся?

    - Есть домены, но какие проекты в них входят? (привет consul) - Есть домен, который ведет на абсолютно другой хост...
  11. Все строится на паттернах 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
  12. Обещал упомянуть BountyHunters... Теперь можно забыть про very critical vulnerability

    - Забытые заголовки - Не обновленный WP - X-frame-Optons … Конечно Who Cares, but ...
  13. 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()
  14. export default class Nmap extends Scan { statc propTypes =

    { report: PropTypes.object }; statc defaultProps = { report: {} }; render() { /** * Your implementaton ere */ } } Для красоты и конкретных реализаций сканеров, можно описать ReactJS класс
  15. На каждый релиз создается 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
  16. В планах Д О Б А В И Т Ь

    1 0 0 5 0 0 Н О В Ы Х С К А Н Е Р О В Создание скрипта для Task-а занимает меньше часа. Любой Junior сможет засекьюрить систему даже коробочными решениями. В Ы В Е С Т И В O P E N S O U R C E Интерфейсы и модели оркестратора отделены от реализации. Реализация может быть сильно завязана на структуру системы.
  17. Контакты 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 Спасибо!