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

"Обзор ограничений современных технологий в области ИБ", Андрей Петухов

OWASP Moscow
December 04, 2017

"Обзор ограничений современных технологий в области ИБ", Андрей Петухов

OWASP Russia Meetup #1

OWASP Moscow

December 04, 2017
Tweet

More Decks by OWASP Moscow

Other Decks in Technology

Transcript

  1. Disclaimer   •  Это  не  научный  доклад,  но  научно-­‐популярный  

    •  Всё  равно  большинство  актуальных  задач  сводится   к  проблеме  останова  МТ  или  P=NP,  расходимся   •  Тогда  зачем?     –  обсудить  актуальные  нерешенные  практические  задачи   в  вебе   •  Warning  для  практиков:  используется  сочетание   “методически  решенная  задача”     •  Не  будет  слайда  с  Боромиром  
  2. Scope   •  Технологии  поиска  недостатков  в  веб-­‐приложениях  этапа  

    разработки     –  черным  ящиком   –  в  исходном  коде   •  Технологии  защиты  веб-­‐приложений  от  атак  на  эти   недостатки     •  Out  of  scope:   –  технологии  поиска  или  недопущения  недостатков  внедрения  и   эксплуатации   –  технологии  защиты  от  атак  на  эти  недостатки  
  3. Фреймворк  для  рассуждений   •  Веб-­‐фреймворки  берут  рутину  на  себя,

     популярен   принцип  safe  by  default   –  ORM,  HTML  через  объектные  модели,  защита  от  CSRF  на  уровне   фреймворка,  даже  XXE  того   •  Повышается  уровень  абстракции  API   –  Vaadin  и  GWT  на  сервере  и  Angular.JS  на  клиенте   •  Тенденция  к  исчезновению  типичных  недостатков  в  новом   коде   •  Описанные  задачи  в  старом  коде  научились  решать   (методически)  сравнительно  неплохо   –  Trinity:  статические  анализаторы,  black-­‐box  сканеры  и  WAF   •  Но  только  не  для  applica…on  specific  недостатков  
  4. WTF  applica…on  specific  недостатки?   •  Типичные  -­‐  это  input

     valida…on   –  в  общем  случае  -­‐  некорректное  использование  API  внешних   подсистем   –  порождают  класс  injec…on-­‐атак   –  injec…on-­‐атаки  порождают  в  запросах  структурные   (синтаксические)  аномалии   •  Applica…on-­‐specific  -­‐  это  логика   –  в  общем  случае  API  -­‐  собственное;  правила  использования   есть  только  в  голове  авторов   –  порождают  класс  атак  на  логику  (abuse/misuse/hijacking  и  т.п.)   –  в  запросах  нет  структурных  аномалий  
  5. Примеры  applica…on  specific  недостатков   •  Уязвимости  авторизации    

    •  Нарушение  целостности  процесса   –  процедуры  checkout’ов   •  Некорректное  использование  криптографических   примитивов   –  купоны  и  прочие  тикеты   •  Ошибки  интеграции  aka  неверные  допущения  о   границах  доверия     –  интернет-­‐магазины,  платежные  системы,  OAuth  туда  же   •  Вменяемой  типизации  и  классификации  нет  
  6. Статические  анализаторы   •  Построить  Data-­‐Flow  представление  программы    

    –  боль  для  нестрого  типизированных  языков   –  боль  связывать  представления  через  хранилища   •  Получить  возможные  значения  переменных  в   каждой  точке   –  наследование,  интерфейсы,  reflec…on  
  7. Статические  анализаторы   •  Найти  уязвимости  в  соответствии  с  моделью

      –  используемая  модель  -­‐  модель  невмешательства  имени   Деннинг   –  данные  из  недоверенного  канала  попадают  в  канал  с   высоким  уровнем  доверия   •  Как  классифицировать  каналы?   –  по  имени  вызовов  API   –  по  маркерным  значениям  в  множестве  возможных     значений  переменной   •  Типичные  vs  applica…on  specific   –  API  заранее  неизвестно,  маркеры  тоже  непонятно  какие    
  8. Black-­‐box  сканеры   •  Задачи:  crawling  &  analysis   • 

    Сrawling  классических  приложений     –  разбор  HTML,  заполнение  форм,  вызов  обработчиков   •  Сrawling  SPA  (GWT,  Vaadin)   –  h“p://dashboard.demo.vaadin.com/,  Google  AdWords   –  динамический  анализ  JS  и  состояния  DOM   •  Проблема   –  экспоненциальное  кол-­‐во  последовательностей   взаимодействия  для  полного  обхода  интерфейса  
  9. SPA  -­‐  проблемы  и  задачи   •  Как  определить  множество

     элементов  UI  и  способы  их   активации?   •  Обработчики  событий  могут  добавляться/удаляться   динамически   •  Код  может  генерироваться  динамически  или  приходить   с  сервера   •  Обработка  событий     –  делегированная  обработка     –  фазы  перехвата  и  всплытия   –  возможность  остановки  распространения  
  10. SPA  -­‐  проблемы  и  задачи   •  Как  определить,  какие

     действия  в  UI  -­‐    полезные?   –  как  понять,  что  мы  изменили  интерфейс  и  перешли  в   новое  состояние?   •  Что  входит  в  состояние?     –  состояние  DOM?  содержимое  localStorage?  URI?   глобальные  переменные?  состояние  таймеров?   •  Как  сравнивать  состояния  между  собой?   •  По  какой  стратегии  переходить  в  новые  состояния?     –  на  странице  AdWords  132  обработчика,  и  только  15%  из   них  повторяющиеся   •  Как  возвращаться  в  предыдущие  состояния?  
  11. SPA  -­‐  проблемы  и  задачи   •  Проблемы  со  временем

      –  таймеры   –  ожидание  конца  начальной  загрузки   –  асинхронные  запросы   •  Сrawljax  работает  очень  плохо,  остальные  -­‐  еще  хуже   •  Итого,  основная  проблема:     –  для  полного  обхода  надо  вызывать  все  возможные   комбинации  UI-­‐элементов  на  всех  страницах   •  НО:     –  в  любой  момент  могут  появиться  новые  обработчики  (в  т.ч.   на  посещенных  страницах)   –  могут  быть  удалены  еще  не  посещенные  обработчики  
  12. WAF   •  Обнаружение  атак  без  структурных   аномалий  в

     параметрах  или  статистических   аномалий  в  трафике  
  13. Итого:  CHALLENGES   •  Как  искать  applica…on  specific  баги?  

    –  нет  API  для  реализации  бизнес-­‐логики  =>  нет  сигнатур  для  стат   анализатора  на  основе  последовательности  вызовов  API     •  Как  ловить  атаки,  не  вызывающие  структурные  аномалии   в  запросах/ответах?   –  нет  структурных  аномалий  в  запросах  =>  нет  сигнатур  на  основе   синтаксиса   •  Как  построить  модель  анализируемого  SPA  приложения?   –  черным  ящиком  со  стороны  клиента   –  на  уровне  промежуточного  фильтра  (WAF)   –  из  исходного  кода   •  Актуальные  задачи:  динамический  анализ  JS+DOM  и   майнинг  инвариантов  поведения  из  трафика